diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 083450ea6..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,109 +0,0 @@ -version: 2.1 - -# Copyright (C) 2019-2020 LEIDOS. -# -# 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. -# - -# Configuration file for Circle CI -# CI will report failure if any executed command returns and error status -# Operations performed are as follows -# Build source code -# Run unit tests for C++ -# Run static code analyzer for SourceCloud -# Upload test results -# Every run command should start with source ${INIT_ENV} to ensure all default dependencies are available -jobs: - arm_build_push : - machine: - # see https://circleci.com/docs/using-arm/ for versions - image: ubuntu-2004:current - resource_class: arm.medium - steps: - - checkout - - run: - name: Docker Build - # Run MYSQL image and build v2xhub docker image - command: | - docker build -t v2xhubarm:ci-build . - docker build -f docker/Dockerfile-php -t php_arm:ci-build . - cd ./tools/port-drayage-webservice/ - docker build -f Dockerfile-arm -t port-drayage-webservice_arm:ci-build . - if [ -n "$CIRCLE_PR_NUMBER" ]; then - circleci-agent step halt - fi - - run: - name: Docker Push - # Push v2xhub docker image to usdotfhwaops dockerhub - command: | - if [ "$CIRCLE_BRANCH" = "develop" ]; then - DOCKER_TAG="latest" - else - DOCKER_TAG=${CIRCLE_BRANCH/\//-} - fi - docker tag v2xhubarm:ci-build usdotfhwaops/v2xhubarm:${DOCKER_TAG} - docker tag php_arm:ci-build usdotfhwaops/php_arm:${DOCKER_TAG} - docker tag port-drayage-webservice_arm:ci-build usdotfhwaops/port-drayage-webservice_arm:${DOCKER_TAG} - echo "$DOCKERHUB_PASSWORD" | docker login --username $DOCKERHUB_USERNAME --password-stdin - docker push usdotfhwaops/v2xhubarm:${DOCKER_TAG} - docker push usdotfhwaops/php_arm:${DOCKER_TAG} - docker push usdotfhwaops/port-drayage-webservice_arm:${DOCKER_TAG} - automated_release : - machine: - image: ubuntu-2004:202201-02 - steps: - - run: - name: Docker Pull Release - # Pull all built images associated with github tag - command: | - docker pull usdotfhwaops/php:master - docker pull usdotfhwaops/port-drayage-webservice:master - docker pull usdotfhwaops/v2xhubamd:master - docker pull usdotfhwaops/php_arm:master - docker pull usdotfhwaops/port-drayage-webservice_arm:master - docker pull usdotfhwaops/v2xhubarm:master - - run: - name: Docker Tag Release - # Tag all pulled images with github tag name - command: | - docker tag usdotfhwaops/php:master usdotfhwaops/php:${CIRCLE_TAG} - docker tag usdotfhwaops/port-drayage-webservice:master usdotfhwaops/port-drayage-webservice:${CIRCLE_TAG} - docker tag usdotfhwaops/v2xhubamd:master usdotfhwaops/v2xhubamd:${CIRCLE_TAG} - docker tag usdotfhwaops/php_arm:master usdotfhwaops/php_arm:${CIRCLE_TAG} - docker tag usdotfhwaops/port-drayage-webservice_arm:master usdotfhwaops/port-drayage-webservice_arm:${CIRCLE_TAG} - docker tag usdotfhwaops/v2xhubarm:master usdotfhwaops/v2xhubarm:${CIRCLE_TAG} - - run: - name: Docker Push Release Tag - # Push all tagged images - command: | - echo "$DOCKERHUB_PASSWORD" | docker login --username $DOCKERHUB_USERNAME --password-stdin - docker push usdotfhwaops/php:${CIRCLE_TAG} - docker push usdotfhwaops/port-drayage-webservice:${CIRCLE_TAG} - docker push usdotfhwaops/v2xhubamd:${CIRCLE_TAG} - docker push usdotfhwaops/php_arm:${CIRCLE_TAG} - docker push usdotfhwaops/port-drayage-webservice_arm:${CIRCLE_TAG} - docker push usdotfhwaops/v2xhubarm:${CIRCLE_TAG} -workflows: - version: 2 - build: - jobs: - - arm_build_push: - filters: - tags: - only: /^[\.0-9]*$/ - - automated_release: - filters: - tags: - only: /^[\.0-9]*$/ - branches: - ignore: /.*/ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b306616f5..f109b58b5 100755 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ { // Docker Compose syntax from https://github.com/devcontainers/templates/blob/main/src/docker-existing-docker-compose/.devcontainer/devcontainer.json // and https://github.com/microsoft/vscode-dev-containers/blob/main/container-templates/docker-compose/.devcontainer/devcontainer.json - "name": "V2XHUB Docker Compose Dev", + "name": "V2X Hub Docker Compose Dev", // Update the 'dockerComposeFile' list if you have more compose files or use different names. "dockerComposeFile": "docker-compose-vscode.yml", diff --git a/.devcontainer/docker-compose-vscode.yml b/.devcontainer/docker-compose-vscode.yml index 9035d1f9d..ca174735d 100755 --- a/.devcontainer/docker-compose-vscode.yml +++ b/.devcontainer/docker-compose-vscode.yml @@ -1,5 +1,3 @@ -version: '3.3' - services: v2xhub: build: @@ -31,7 +29,7 @@ services: - mysql_password db: - image: mysql:5.7 + image: mysql:8.0 container_name: mysql restart: always environment: @@ -44,7 +42,7 @@ services: - mysql_password - mysql_root_password volumes: - - ../configuration/amd64/mysql/localhost.sql:/docker-entrypoint-initdb.d/localhost.sql + - ../configuration/mysql/localhost.sql:/docker-entrypoint-initdb.d/localhost.sql # include creation of a user (user/user) to be able to log in - ./mysql_add_dev_user.sql:/docker-entrypoint-initdb.d/mysql_add_dev_user.sql - mysql-datavolume:/var/lib/mysql diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index eed361c5b..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,106 +0,0 @@ -name: Build Workflows - -on: - pull_request: - push: - -# TODO push to dockerhub with correct tags -jobs: - v2xhub-docker: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: recursive - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: Log in to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v4 - with: - images: usdotfhwaops/v2xhubamd - tags: | - type=schedule - type=ref,event=branch - type=ref,event=tag - type=ref,event=pr - # set latest tag for default branch - type=raw,value=latest,enable={{is_default_branch}} - - name: Build and push - uses: docker/build-push-action@v4 - with: - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - - php-docker: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: recursive - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: Log in to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v4 - with: - images: usdotfhwaops/php - tags: | - type=schedule - type=ref,event=branch - type=ref,event=tag - type=ref,event=pr - # set latest tag for default branch - type=raw,value=latest,enable={{is_default_branch}} - - name: Build and push - uses: docker/build-push-action@v4 - with: - file: docker/Dockerfile-php - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - - port-drayage-docker: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: Log in to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v4 - with: - images: usdotfhwaops/port-drayage-webservice - tags: | - type=schedule - type=ref,event=branch - type=ref,event=tag - type=ref,event=pr - # set latest tag for default branch - type=raw,value=latest,enable={{is_default_branch}} - - name: Build and push - uses: docker/build-push-action@v4 - with: - push: true - context: tools/port-drayage-webservice - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/build_php_docker_image.yml b/.github/workflows/build_php_docker_image.yml new file mode 100644 index 000000000..bb9ee7cc1 --- /dev/null +++ b/.github/workflows/build_php_docker_image.yml @@ -0,0 +1,48 @@ +name: Build PHP V2X-Hub Web UI +on: + push: + branches: + - develop + - master + - 'release/**' + # Build all tags not containing a / (https://stackoverflow.com/questions/61891328/trigger-github-action-only-on-new-tags ) + tags: + - '*' +jobs: + v2xhub-docker: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: usdotfhwaops/php + tags: | + type=schedule + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + # set latest tag for default branch + type=raw,value=latest,enable={{is_default_branch}} + - name: Build and push + uses: docker/build-push-action@v5 + with: + push: true + platforms: linux/amd64,linux/arm64 + file: ./docker/Dockerfile-php + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + BUILD_ARCHITECTURE=${{ matrix.architecture }} + UBUNTU_CODENAME=${{ matrix.ubuntu-codename }} diff --git a/.github/workflows/build_port_drayage_docker_image.yml b/.github/workflows/build_port_drayage_docker_image.yml new file mode 100644 index 000000000..dd9115995 --- /dev/null +++ b/.github/workflows/build_port_drayage_docker_image.yml @@ -0,0 +1,48 @@ +name: Build Port Drayage Web Service +on: + push: + branches: + - develop + - master + - 'release/**' + # Build all tags not containing a / (https://stackoverflow.com/questions/61891328/trigger-github-action-only-on-new-tags ) + tags: + - '*' +jobs: + v2xhub-docker: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: usdotfhwaops/port-drayage-webservice + tags: | + type=schedule + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + # set latest tag for default branch + type=raw,value=latest,enable={{is_default_branch}} + - name: Build and push + uses: docker/build-push-action@v5 + with: + push: true + platforms: linux/amd64,linux/arm64 + context: ./tools/port-drayage-webservice/ + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + BUILD_ARCHITECTURE=${{ matrix.architecture }} + UBUNTU_CODENAME=${{ matrix.ubuntu-codename }} diff --git a/.github/workflows/build_v2xhub_docker_image.yml b/.github/workflows/build_v2xhub_docker_image.yml new file mode 100644 index 000000000..c8ec318d9 --- /dev/null +++ b/.github/workflows/build_v2xhub_docker_image.yml @@ -0,0 +1,47 @@ +name: Build V2X-Hub Docker Image +on: + push: + branches: + - develop + - master + - 'release/**' + # Build all tags not containing a / (https://stackoverflow.com/questions/61891328/trigger-github-action-only-on-new-tags ) + tags: + - '*' +jobs: + v2xhub-docker: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: usdotfhwaops/v2xhub + tags: | + type=schedule + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + # set latest tag for default branch + type=raw,value=latest,enable={{is_default_branch}} + - name: Build and push + uses: docker/build-push-action@v5 + with: + push: true + platforms: linux/amd64,linux/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + BUILD_ARCHITECTURE=${{ matrix.architecture }} + UBUNTU_CODENAME=${{ matrix.ubuntu-codename }} diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 000000000..17d8f1dc6 --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,51 @@ +name: Pull Request Workflow + +on: + pull_request: + types: [opened, synchronize, reopened] +jobs: + docker-image-builds: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: usdotfhwaops/php + tags: | + type=schedule + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + # set latest tag for default branch + type=raw,value=latest,enable={{is_default_branch}} + - name: V2X-Hub Docker build + uses: docker/build-push-action@v5 + with: + file: Dockerfile + platforms: linux/amd64,linux/arm64 + build-args: | + BUILD_ARCHITECTURE=${{ matrix.architecture }} + UBUNTU_CODENAME=${{ matrix.ubuntu-codename }} + - name: PHP Docker build + uses: docker/build-push-action@v5 + with: + file: docker/Dockerfile-php + platforms: linux/amd64,linux/arm64 + build-args: | + BUILD_ARCHITECTURE=${{ matrix.architecture }} + UBUNTU_CODENAME=${{ matrix.ubuntu-codename }} + - name: Port Drayage Docker build + uses: docker/build-push-action@v5 + with: + context: tools/port-drayage-webservice + platforms: linux/amd64,linux/arm64 + build-args: | + BUILD_ARCHITECTURE=${{ matrix.architecture }} + UBUNTU_CODENAME=${{ matrix.ubuntu-codename }} diff --git a/.github/workflows/sonar-scanner.yml b/.github/workflows/sonar-scanner.yml index 6df6b7812..a9f773aa5 100644 --- a/.github/workflows/sonar-scanner.yml +++ b/.github/workflows/sonar-scanner.yml @@ -1,7 +1,11 @@ on: push: - # run on branches and not PRs due to secrets used branches: + - develop + - master + - "release/*" + pull_request: + types: [opened, synchronize, reopened] name: Sonar Workflow jobs: sonarcloud: @@ -10,12 +14,15 @@ jobs: image: ubuntu:jammy-20230126 steps: - name: Install curl, zip, git, gcovr + # Installing gcovr for unit test code coverage + # Installing git for checkout action + # installing curl/zip for sonar-cpp action run: | apt update export DEBIAN_FRONTEND=noninteractive apt-get install -y curl zip git gcovr - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: # Disabling shallow clone is recommended for improving relevancy of reporting fetch-depth: 0 diff --git a/Dockerfile b/Dockerfile index 0ba4b10e4..652064cb9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,6 +40,7 @@ RUN ./library.sh RUN ldconfig COPY --from=dependencies /usr/local/plugins/ /usr/local/plugins/ +COPY --from=dependencies /usr/local/include/ /usr/local/include/ COPY --from=dependencies /usr/local/lib/ /usr/local/lib/ COPY --from=dependencies /usr/local/bin/ /usr/local/bin/ COPY --from=dependencies /usr/lib/ /usr/lib/ diff --git a/README.md b/README.md index eb5329ec6..c7a8b23b1 100644 --- a/README.md +++ b/README.md @@ -43,18 +43,9 @@ V2X Hub is a communication, computation, and processing platform for V2I applica * Aggregation of vehicle weather data for efficient communication to Transportation Management Entity for weather-responsive traffic management. * Multi-Modal Intelligent Traffic Signal Systems (MMITSS) “intersection level” functions including J2735 Intersection Geometry (MAP) and J2735 Signal Phase and Timing (SPaT) broadcast manager, equipped vehicle tracker, priority request server, and interface to traffic signal controller. -# Simulation Setup -To support execution in a simulated environment, V2X-Hub is in the process of integrating with CDASim, a Co-Simulation tool built as an extension of Eclipse Mosiac. This extension will incorporate integration with several other platforms including CARMA-Platform and CARLA. The setup for this simply requires setting environment variables inside the V2X-Hub docker container. - * **SIMULATION_MODE** – Environment variable for enabling simulation components for V2X-Hub. If set to "true" or "TRUE" simulation components will be enable. Otherwise, simulation components will not be enabled. - * **KAFKA_BROKER_ADDRESS** – Environment variable for storing Kafka broker connection string (including port). - * **TIME_SYNC_TOPIC** – Environment variable for storing Kafka time sync topic. - * **SIMULATION_IP** – Environment variable for storing IP address of CDASim application. - * **SIMULATION_REGISTRATION_PORT** – Environment variable for storing port on CDASim that handles registration attempts. - * **TIME_SYNC_PORT** – Environment varaible for storing port for receiving time sync messages from CDASim. - * **V2X_PORT** – Environment variable for storing port for receiving v2x messages from CDASim - * **SIM_V2X_PORT** – Environment variable for storing port for sending v2x messages to CDASim - * **LOCAL_IP** – Environment variable for storing local IP of V2X Hub. - * **INFRASTRUCTURE_ID** – Environment variable for storing infrastructure id of V2X Hub.. +## Deployment Configuration +The instructions for deployment and configuration are located here: [Instructions]() + ## Release Notes The current version and release history of the V2X Hub software platform can be found here: [Release Notes]() diff --git a/configuration/README.md b/configuration/README.md new file mode 100644 index 000000000..d1ff943de --- /dev/null +++ b/configuration/README.md @@ -0,0 +1,61 @@ +## Introduction +This directory contains deployment and configuration instructions for deploying V2X-Hub on both ARM64(arm64) and x86(amd64) architectures. + +> [!NOTE] +> Separate deployment files/configurations are no longer necessary for arm64 and x86 deployments. + +### Deployment Instructions +Once downloaded, navigate to the configuration directory: +``` +cd ~/V2X-Hub/configuration/ +``` +Run the initialization script: +``` +sudo ./initialization.sh +``` +Follow the prompts during installation. + +You will be prompted to create a mysql_password and mysql_root_password. You may make the passwords whatever you like, but you will need to remember them. +``` +Example: ivp +``` +You will also be prompted to create a V2X Hub username and password. You may make these whatever you’d like, but will need to use them to log into the web UI. Example: +``` +Username: v2xadmin + +Password: V2xHub#321 +``` +You will then need to enter the mysql_password you created in step 5a: +``` +Example: ivp +``` +After installation is complete, the script will automatically open a web browser with two tabs. + +Navigate to the tab labeled as “Privacy Error” and select the “Advanced” button. + +Click on “proceed to 127.0.0.1 (unsafe)” + +Note: This page will not do anything when clicking proceed + +Close the Privacy Error tab and wait for the initial V2X Hub tab to finish loading + +Enter the login credentials you created in step 5b and login. + +Installation complete! + +### Simulation Setup + +To support execution in a simulated environment, V2X-Hub is in the process of integrating with CDASim, a Co-Simulation tool built as an extension of Eclipse Mosiac. This extension will incorporate integration with several other platforms including CARMA-Platform and CARLA. The setup for this simply requires setting environment variables for the V2X-Hub docker compose deployment. These can be set via the `initialization.sh` script and can be manually edited after. + +* **V2XHUB_VERSION** – Version of V2X-Hub to deloy ( Docker Tag/ GitHub Tag ) +* **SIMULATION_MODE** – Environment variable for enabling simulation components for V2X-Hub. If set to "true" or "TRUE" simulation components will be enable. Otherwise, simulation components will not be enabled. +* **KAFKA_BROKER_ADDRESS** – Environment variable for storing Kafka broker connection string (including port). +* **TIME_SYNC_TOPIC** – Environment variable for storing Kafka time sync topic. +* **SIMULATION_IP** – Environment variable for storing IP address of CDASim application. +* **SIMULATION_REGISTRATION_PORT** – Environment variable for storing port on CDASim that handles registration attempts. +* **TIME_SYNC_PORT** – Environment varaible for storing port for receiving time sync messages from CDASim. +* **V2X_PORT** – Environment variable for storing port for receiving v2x messages from CDASim +* **SIM_V2X_PORT** – Environment variable for storing port for sending v2x messages to CDASim +* **V2XHUB_IP** – Environment variable for storing IP address of V2X Hub. +* **INFRASTRUCTURE_ID** – Environment variable for storing infrastructure id of V2X Hub. +* **SENSOR_JSON_FILE_PATH** – Environment variable for storing path to sensor configuration file. This is an optional simulation environment variable that allows for setting up simulated sensor for a V2X-Hub instance. Example file can be found in the **CDASimAdapterPlugin** tests [here](../src/v2i-hub/CDASimAdapter/test/sensors.json). diff --git a/configuration/amd64/docker-compose.yml b/configuration/amd64/docker-compose.yml deleted file mode 100755 index 89a1b00a9..000000000 --- a/configuration/amd64/docker-compose.yml +++ /dev/null @@ -1,59 +0,0 @@ -version: '3.7' - -services: - db: - image: mysql:5.7 - container_name: mysql - restart: always - environment: - - MYSQL_DATABASE=IVP - - MYSQL_USER=IVP - - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password - - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password - network_mode: host - secrets: - - mysql_password - - mysql_root_password - volumes: - - ./mysql/localhost.sql:/docker-entrypoint-initdb.d/localhost.sql - - ./mysql/port_drayage.sql:/docker-entrypoint-initdb.d/port_drayage.sql - - mysql-datavolume:/var/lib/mysql - - php: - image: usdotfhwaops/php:7.6.0 - container_name: php - network_mode: host - depends_on: - - db - - v2xhub - stdin_open: true - tty: true - - v2xhub: - image: usdotfhwaops/v2xhubamd:7.6.0 - container_name: v2xhub - network_mode: host - restart: always - depends_on: - - db - environment: - - MYSQL_PASSWORD=/run/secrets/mysql_password - - INFRASTRUCTURE_ID=rsu_ - - INFRASTRUCTURE_NAME= - secrets: - - mysql_password - volumes: - - ./logs:/var/log/tmx - - ./MAP:/var/www/plugins/MAP - port_drayage_webservice: - image: usdotfhwaops/port-drayage-webservice:7.6.0 - container_name: port_drayage_webservice - network_mode: host -secrets: - mysql_password: - file: ./secrets/mysql_password.txt - mysql_root_password: - file: ./secrets/mysql_root_password.txt - -volumes: - mysql-datavolume: diff --git a/configuration/amd64/initialization.sh b/configuration/amd64/initialization.sh deleted file mode 100755 index eea35fc48..000000000 --- a/configuration/amd64/initialization.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -directory=$(pwd) -mysqlDir="$directory/mysql" - -# update and upgrade commands to update linux OS -sudo apt update -y && sudo apt upgrade -y - -#installing necessary and useful apps -sudo apt-get install chromium-browser -y #Chrome required for CARMA platform/V2X Hub UI(?) -sudo apt install curl -y #Curl for downloading files over internet - -#install docker -curl -L https://raw.githubusercontent.com/usdot-fhwa-stol/carma-platform/develop/engineering_tools/install-docker.sh | bash - -#make passwords for mysql -mkdir -p secrets && cd secrets - -#creates password files where user inputs password -FILE1=mysql_root_password.txt -FILE2=mysql_password.txt -if test -f "$FILE1"; then - echo "$FILE1 exists." -else - read -p "enter password for the mysql_root_password: " sql_root_pass - echo "$sql_root_pass" > sql_root_pass.txt - #remove endline characters from password files - tr -d '\n' mysql_root_password.txt && rm sql_root_pass.txt -fi - -if test -f "$FILE2"; then - echo "$FILE2 exists." -else - read -p "enter password for mysql_password: " sql_pass - echo "$sql_pass" > sql_pass.txt - #remove endline characters from password files - tr -d '\n' mysql_password.txt && rm sql_pass.txt -fi - -#AMD64 initialzation -cd $directory -sudo apt-get -y remove docker docker-engine docker.io containerd runc -sudo apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" -sudo apt-get -y install docker-ce docker-ce-cli containerd.io -sudo apt -y install python3-pip -sudo pip3 install docker-compose -sudo docker-compose pull -sudo apt update -y && sudo apt upgrade -y -sudo docker-compose up -d - -#create v2xhub user -cd $mysqlDir -./add_v2xhub_user.bash - -chromium-browser "http://127.0.0.1" > /dev/null 2>&1 & -chromium-browser "https://127.0.0.1:19760" > /dev/null 2>&1 & diff --git a/configuration/amd64/mysql/add_v2xhub_user.bash b/configuration/amd64/mysql/add_v2xhub_user.bash deleted file mode 100755 index 0d9ab218b..000000000 --- a/configuration/amd64/mysql/add_v2xhub_user.bash +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# Fail when any command fails -#set -e - -# Ensure mysql-client is installed -REQUIRED_PKG="mysql-client" -PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $REQUIRED_PKG|grep "install ok installed") -echo Checking for $REQUIRED_PKG: $PKG_OK -if [ "" = "$PKG_OK" ]; then - echo "No $REQUIRED_PKG found. Installing $REQUIRED_PKG." - sudo apt-get update - sudo apt-get --yes install $REQUIRED_PKG -fi - -# Adds V2X-Hub user to mysql db -read -p "Please enter a username: " USER -echo "Password must be 8-12 charcters, and contain at least one of each of the following: uppercase letter, lowercase letter, number, and symbol." -read -s -p "Please enter a password: " PASS - -PASS_LENGTH=`echo $PASS | wc -c` - -if [ $PASS_LENGTH -ge 8 ] && echo $PASS | grep -q [a-z] && echo $PASS | grep -q [A-Z] && echo $PASS | grep -q [0-9] && ( echo $PASS | grep -q [\$\!\.\+_\*@\#\^%\?~] || echo $PASS | grep -q [-] ); then - echo - read -s -p "Confirm password: " CONF_PASS - while [ $CONF_PASS != $PASS ]; do - echo - read -s -p "Passwords do not match. Please re-enter password: " CONF_PASS - done - echo "VALID PASSWORD" - echo "Enter MYSQL ROOT PASSWORD: " - mysql -uroot -p --silent -h127.0.0.1 -e "INSERT INTO IVP.user (IVP.user.username, IVP.user.password, IVP.user.accessLevel) VALUES('$USER', SHA2('$PASS', 256), 3)" - echo "V2X Hub user successfully added" -else - echo "INVALID PASSWORD" - echo "Password must be 8-12 charcters, and contain at least one of each of the following: uppercase letter, lowercase letter, number, and symbol" - exit 1 -fi diff --git a/configuration/arm64/initialization.sh b/configuration/arm64/initialization.sh deleted file mode 100755 index 7769004df..000000000 --- a/configuration/arm64/initialization.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -directory=$(pwd) -mysqlDir="$directory/mysql" - -# update and upgrade commands to update linux OS -sudo apt update -y && sudo apt upgrade -y - -#installing necessary and useful apps -sudo apt-get install chromium-browser -y #Chrome required for CARMA platform/V2X Hub UI(?) -sudo apt install curl -y #Curl for downloading files over internet - -#install docker -curl -L https://raw.githubusercontent.com/usdot-fhwa-stol/carma-platform/develop/engineering_tools/install-docker.sh | bash - -#make passwords for mysql -mkdir -p secrets && cd secrets - -#creates password files where user inputs password -FILE1=mysql_root_password.txt -FILE2=mysql_password.txt -if test -f "$FILE1"; then - echo "$FILE1 exists." -else - read -p "enter password for the mysql_root_password: " sql_root_pass - echo "$sql_root_pass" > sql_root_pass.txt - #remove endline characters from password files - tr -d '\n' mysql_root_password.txt && rm sql_root_pass.txt -fi - -if test -f "$FILE2"; then - echo "$FILE2 exists." -else - read -p "enter password for mysql_password: " sql_pass - echo "$sql_pass" > sql_pass.txt - #remove endline characters from password files - tr -d '\n' mysql_password.txt && rm sql_pass.txt -fi - -#ARM initialization -cd $directory -sudo apt-get -y remove docker docker-engine docker.io containerd runc -sudo apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -OS=$(lsb_release -i | awk 'FS=":" {print $3;}' | awk '{print tolower($0)}') -arch=$(dpkg --print-architecture) -curl -fsSL https://download.docker.com/linux/$OS/gpg | sudo apt-key add - -sudo add-apt-repository "deb [arch=$arch] https://download.docker.com/linux/$OS $(lsb_release -cs) stable" -sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin -sudo apt -y install python3-pip -sudo pip3 install docker-compose -sudo apt update -y && sudo apt upgrade -y -sudo docker-compose up -d - -#create v2xhub user -cd $mysqlDir -./add_v2xhub_user.bash - -chromium-browser "http://127.0.0.1" > /dev/null 2>&1 & -chromium-browser "https://127.0.0.1:19760" > /dev/null 2>&1 & diff --git a/configuration/arm64/mysql/localhost.sql b/configuration/arm64/mysql/localhost.sql deleted file mode 100644 index 3ef568522..000000000 --- a/configuration/arm64/mysql/localhost.sql +++ /dev/null @@ -1,255 +0,0 @@ --- MySQL dump 10.13 Distrib 5.7.35, for Linux (x86_64) --- --- Host: 127.0.0.1 Database: IVP --- ------------------------------------------------------ --- Server version 5.7.35 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Current Database: `IVP` --- - -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `IVP` /*!40100 DEFAULT CHARACTER SET latin1 */; - -USE `IVP`; - --- --- Table structure for table `eventLog` --- - -DROP TABLE IF EXISTS `eventLog`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `eventLog` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key', - `description` text NOT NULL COMMENT 'The log message content', - `source` text NOT NULL COMMENT 'The name of the plugin or other agent that logged the event', - `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'The date and time of the event in UTC', - `logLevel` enum('Debug','Info','Warning','Error','Fatal') NOT NULL COMMENT 'The type of event being logged, one of - Debug - Info - Warn - Error', - `uploaded` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 COMMENT='This table records events generated by every IVP core component and plugin in the IVP platform. '; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `installedPlugin` --- - -DROP TABLE IF EXISTS `installedPlugin`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `installedPlugin` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `pluginId` int(10) unsigned NOT NULL, - `path` text NOT NULL, - `exeName` text NOT NULL, - `manifestName` text NOT NULL, - `commandLineParameters` text NOT NULL, - `enabled` tinyint(1) NOT NULL, - `maxMessageInterval` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `pluginId` (`pluginId`), - CONSTRAINT `installedPlugin_ibfk_2` FOREIGN KEY (`pluginId`) REFERENCES `plugin` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - - --- --- Table structure for table `messageActivity` --- - -DROP TABLE IF EXISTS `messageActivity`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `messageActivity` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key', - `messageTypeId` int(10) unsigned NOT NULL COMMENT 'Foreign key into the messageType table', - `pluginId` int(10) unsigned NOT NULL, - `count` int(10) unsigned NOT NULL, - `lastReceivedTimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'The date and time of the most recent message of a type in UTC.', - `averageInterval` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `messageTypeId_pluginId` (`messageTypeId`,`pluginId`), - KEY `messageTypeId` (`messageTypeId`), - KEY `pluginId` (`pluginId`), - CONSTRAINT `messageActivity_ibfk_1` FOREIGN KEY (`messageTypeId`) REFERENCES `messageType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `messageActivity_ibfk_2` FOREIGN KEY (`pluginId`) REFERENCES `plugin` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=latin1 COMMENT='This table records the most recent message activity of each active plugin in the IVP system. The data in this table is updated by the IVP plugin monitor core component for every message the plugin monitor receives.'; -/*!40101 SET character_set_client = @saved_cs_client */; - - --- --- Table structure for table `messageType` --- - -DROP TABLE IF EXISTS `messageType`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `messageType` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key', - `type` varchar(50) NOT NULL COMMENT 'A unique message type name', - `subtype` varchar(50) NOT NULL, - `description` text COMMENT 'A description of the message type', - PRIMARY KEY (`id`), - UNIQUE KEY `type` (`type`,`subtype`) -) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin1 COMMENT='This table lists the valid message types of every plugin loaded on the IVP platform.'; -/*!40101 SET character_set_client = @saved_cs_client */; - - --- --- Table structure for table `plugin` --- - -DROP TABLE IF EXISTS `plugin`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `plugin` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key', - `name` varchar(100) NOT NULL COMMENT 'A unique plugin name', - `description` text, - `version` text, - PRIMARY KEY (`id`), - UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1 COMMENT='This table lists the plugins loaded and available to run on the IVP platform.'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `pluginActivity` --- - -DROP TABLE IF EXISTS `pluginActivity`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `pluginActivity` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key', - `msgReceivedTimestamp` bigint(20) unsigned NOT NULL COMMENT 'Timestamp in microseconds since Epoch of when message was received by destination Plugin', - `rPluginName` varchar(100) NOT NULL COMMENT 'Name of receiving plugin', - `sPluginName` varchar(100) NOT NULL COMMENT 'Name of source plugin', - `msgType` varchar(100) NOT NULL COMMENT 'Type of message', - `msgSubtype` varchar(100) NOT NULL COMMENT 'Subtype of message', - `msgCreatedTimestamp` bigint(20) NOT NULL COMMENT 'Timestamp in milliseconds since Epoch of when message was created.', - `msgHandledTimestamp` bigint(20) NOT NULL COMMENT 'Timestamp in milliseconds since Epoch of when receiving plugin finished handling message.', - `origMsgTimestamp` bigint(20) NOT NULL COMMENT 'Timestamp in milliseconds since Epoch of the original message that triggered this message sequence.', - PRIMARY KEY (`id`), - UNIQUE KEY `msgReceivedTimestamp_rPluginName` (`msgReceivedTimestamp`,`rPluginName`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='This table records all message activity of each active plugin in the IVP system. The data in this table is updated by each Plugin as part of PluginClient base class implementation.'; -/*!40101 SET character_set_client = @saved_cs_client */; - - --- --- Table structure for table `pluginConfigurationParameter` --- - -DROP TABLE IF EXISTS `pluginConfigurationParameter`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `pluginConfigurationParameter` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key', - `pluginId` int(10) unsigned NOT NULL, - `key` varchar(255) NOT NULL COMMENT 'The name of a configuration parameter.', - `value` text NOT NULL COMMENT 'The value of a configuration parameter', - `defaultValue` text NOT NULL, - `description` text NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `pluginId_key` (`pluginId`,`key`), - KEY `pluginId` (`pluginId`), - CONSTRAINT `pluginConfigurationParameter_ibfk_1` FOREIGN KEY (`pluginId`) REFERENCES `plugin` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=113 DEFAULT CHARSET=latin1 COMMENT='This table lists the IVP system configuration parameters used by both core components and plugins to control the behavior of the system.'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `pluginMessageMap` --- - -DROP TABLE IF EXISTS `pluginMessageMap`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `pluginMessageMap` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key', - `pluginId` int(10) unsigned NOT NULL COMMENT 'Foreign key into the plugin table', - `messageTypeId` int(10) unsigned NOT NULL COMMENT 'Foreign key into the messageType table.', - PRIMARY KEY (`id`), - UNIQUE KEY `pluginId` (`pluginId`,`messageTypeId`), - KEY `pluginId_2` (`pluginId`), - KEY `messageTypeId` (`messageTypeId`), - CONSTRAINT `pluginMessageMap_ibfk_1` FOREIGN KEY (`pluginId`) REFERENCES `plugin` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `pluginMessageMap_ibfk_2` FOREIGN KEY (`messageTypeId`) REFERENCES `messageType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=1592 DEFAULT CHARSET=latin1 COMMENT='This table identifies the types of messages generated by each plugin.'; -/*!40101 SET character_set_client = @saved_cs_client */; - - --- --- Table structure for table `pluginStatus` --- - -DROP TABLE IF EXISTS `pluginStatus`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `pluginStatus` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `pluginId` int(10) unsigned NOT NULL, - `key` varchar(100) NOT NULL, - `value` text NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UQ_pluginId_key` (`pluginId`,`key`), - KEY `pluginId` (`pluginId`), - CONSTRAINT `pluginStatus_ibfk_2` FOREIGN KEY (`pluginId`) REFERENCES `plugin` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - - --- --- Table structure for table `systemConfigurationParameter` --- - -DROP TABLE IF EXISTS `systemConfigurationParameter`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `systemConfigurationParameter` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key', - `key` varchar(255) NOT NULL COMMENT 'The name of a configuration parameter.', - `value` text NOT NULL COMMENT 'The value of a configuration parameter', - `defaultValue` text NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key` (`key`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COMMENT='This table lists the IVP system configuration parameters used by both core components and plugins to control the behavior of the system.'; -/*!40101 SET character_set_client = @saved_cs_client */; - - --- --- Table structure for table `user` --- - -DROP TABLE IF EXISTS `user`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `user` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key', - `username` varchar(50) NOT NULL COMMENT 'The account name for the user, typically an email address', - `password` varchar(64) NOT NULL COMMENT 'An encrypted password', - `accessLevel` int(11) NOT NULL DEFAULT '1' COMMENT 'The access level permitted for this user, one of: \n 1. read-only access to portal 2. application administrator access 3. system administrator, all access', - PRIMARY KEY (`id`), - UNIQUE KEY `UQ_user_id` (`id`), - UNIQUE KEY `UQ_user_username` (`username`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 COMMENT='The list of accounts that can access the IVP platform via the administrative portal is held in the users table.'; -/*!40101 SET character_set_client = @saved_cs_client */; - -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; diff --git a/configuration/arm64/mysql/port_drayage.sql b/configuration/arm64/mysql/port_drayage.sql deleted file mode 100644 index 71c93e51f..000000000 --- a/configuration/arm64/mysql/port_drayage.sql +++ /dev/null @@ -1,91 +0,0 @@ --- MySQL dump 10.13 Distrib 5.7.34, for Linux (x86_64) --- --- Host: 127.0.0.1 Database: PORT_DRAYAGE --- ------------------------------------------------------ --- Server version 5.7.35 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Current Database: `PORT_DRAYAGE` --- - -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `PORT_DRAYAGE` /*!40100 DEFAULT CHARACTER SET latin1 */; - -USE `PORT_DRAYAGE`; - --- --- Table structure for table `first_action` --- - -DROP TABLE IF EXISTS `first_action`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `first_action` ( - `cmv_id` int(4) NOT NULL, - `cargo_id` varchar(20) DEFAULT NULL, - `destination_lat` decimal(9,7) NOT NULL, - `destination_long` decimal(9,7) NOT NULL, - `operation` varchar(20) NOT NULL, - `action_id` varchar(36) NOT NULL, - `next_action` varchar(36) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `first_action` --- - -LOCK TABLES `first_action` WRITE; -/*!40000 ALTER TABLE `first_action` DISABLE KEYS */; -INSERT INTO `first_action` VALUES (123,'SOME_CARGO',38.9548890,-77.1481430,'PICKUP','4bea1c45-e421-11eb-a8cc-000c29ae389d','32320c8a-e422-11eb-a8cc-000c29ae389d'); -/*!40000 ALTER TABLE `first_action` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `freight` --- - -DROP TABLE IF EXISTS `freight`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `freight` ( - `cmv_id` int(4) NOT NULL, - `cargo_id` varchar(20) DEFAULT NULL, - `destination_lat` decimal(9,7) NOT NULL, - `destination_long` decimal(9,7) NOT NULL, - `operation` varchar(20) NOT NULL, - `action_id` varchar(36) NOT NULL, - `next_action` varchar(36) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `freight` --- - -LOCK TABLES `freight` WRITE; -/*!40000 ALTER TABLE `freight` DISABLE KEYS */; -INSERT INTO `freight` VALUES (123,NULL,38.9549780,-77.1475790,'EXIT_STAGING_AREA','32320c8a-e422-11eb-a8cc-000c29ae389d','4ace39e6-ee36-11eb-9a03-0242ac130003'),(123,'SOME_CARGO',38.9548890,-77.1481430,'PICKUP','4bea1c45-e421-11eb-a8cc-000c29ae389d','32320c8a-e422-11eb-a8cc-000c29ae389d'); -/*!40000 ALTER TABLE `freight` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2021-07-21 11:42:55 diff --git a/configuration/arm64/mysql/suntrax/README.txt b/configuration/arm64/mysql/suntrax/README.txt deleted file mode 100644 index 750c98eac..000000000 --- a/configuration/arm64/mysql/suntrax/README.txt +++ /dev/null @@ -1 +0,0 @@ -These SQL files are Port Drayage actions created for SunTrax Verification Testing. \ No newline at end of file diff --git a/configuration/arm64/mysql/suntrax/port_area_operations.sql b/configuration/arm64/mysql/suntrax/port_area_operations.sql deleted file mode 100644 index abeb6e478..000000000 --- a/configuration/arm64/mysql/suntrax/port_area_operations.sql +++ /dev/null @@ -1,90 +0,0 @@ --- MySQL dump 10.13 Distrib 5.7.36, for Linux (x86_64) --- --- Host: 127.0.0.1 Database: PORT_DRAYAGE --- ------------------------------------------------------ --- Server version 5.7.36 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Current Database: `PORT_DRAYAGE` --- - -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `PORT_DRAYAGE` /*!40100 DEFAULT CHARACTER SET latin1 */; - -USE `PORT_DRAYAGE`; - --- --- Table structure for table `first_action` --- - -DROP TABLE IF EXISTS `first_action`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `first_action` ( - `cmv_id` varchar(20) NOT NULL, - `cargo_id` varchar(20) DEFAULT NULL, - `destination_lat` decimal(9,7) NOT NULL, - `destination_long` decimal(9,7) NOT NULL, - `operation` varchar(20) NOT NULL, - `action_id` varchar(36) NOT NULL, - `next_action` varchar(36) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `first_action` --- - -LOCK TABLES `first_action` WRITE; -/*!40000 ALTER TABLE `first_action` DISABLE KEYS */; -/*!40000 ALTER TABLE `first_action` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `freight` --- - -DROP TABLE IF EXISTS `freight`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `freight` ( - `cmv_id` varchar(20) NOT NULL, - `cargo_id` varchar(20) DEFAULT NULL, - `destination_lat` decimal(9,7) NOT NULL, - `destination_long` decimal(9,7) NOT NULL, - `operation` varchar(20) NOT NULL, - `action_id` varchar(36) NOT NULL, - `next_action` varchar(36) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `freight` --- - -LOCK TABLES `freight` WRITE; -/*!40000 ALTER TABLE `freight` DISABLE KEYS */; -INSERT INTO `freight` VALUES ('DOT-80550',NULL,28.1128156,-81.8314745,'ENTER_PORT','4ace39e6-ee36-11eb-9a03-0242ac130003','67eadd3a-38b4-11ec-930a-000145098e4f'),('DOT-80550','CARGO_A',28.1119763,-81.8312035,'DROPOFF','67eadd3a-38b4-11ec-930a-000145098e4f','0bf7ebda-38b5-11ec-930a-000145098e4f'),('DOT-80550','CARGO_B',28.1117373,-81.8309654,'PICKUP','0bf7ebda-38b5-11ec-930a-000145098e4f','9230504d-38b5-11ec-930a-000145098e4f'),('DOT-80550','CARGO_B',28.1120500,-81.8306483,'PORT_CHECKPOINT','9230504d-38b5-11ec-930a-000145098e4f','511ad052-38b6-11ec-930a-000145098e4f'),('DOT-80550','CARGO_B',28.1138052,-81.8317502,'EXIT_PORT','511ad052-38b6-11ec-930a-000145098e4f','fc15d52a-3c0c-11ec-b00d-000145098e4f'),('DOT-80550','CARGO_B',28.1232336,-81.8347566,'ENTER_STAGING_AREA','fc15d52a-3c0c-11ec-b00d-000145098e4f','5ceaab82-515c-11ec-9e2c-000145098e47'),('DOT-10004',NULL,28.1128156,-81.8314745,'ENTER_PORT','84f6b797-52c2-11ec-9105-000145098e4f','c9bba171-52c2-11ec-9105-000145098e4f'),('DOT-10004','CARGO_A',28.1119763,-81.8312035,'DROPOFF','c9bba171-52c2-11ec-9105-000145098e4f','8e1d456a-52c3-11ec-9105-000145098e4f'),('DOT-10004','CARGO_B',28.1117373,-81.8309654,'PICKUP','8e1d456a-52c3-11ec-9105-000145098e4f','744be658-52c4-11ec-9105-000145098e4f'),('DOT-10004','CARGO_B',28.1120500,-81.8306483,'PORT_CHECKPOINT','744be658-52c4-11ec-9105-000145098e4f','a4b419b9-52c5-11ec-9105-000145098e4f'),('DOT-10004','CARGO_B',28.1138052,-81.8317502,'EXIT_PORT','a4b419b9-52c5-11ec-9105-000145098e4f','20b546e3-52c6-11ec-9105-000145098e4f'),('DOT-10004','CARGO_B',28.1232336,-81.8347566,'ENTER_STAGING_AREA','20b546e3-52c6-11ec-9105-000145098e4f','53875eba-52c7-11ec-9105-000145098e4f'); -/*!40000 ALTER TABLE `freight` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2021-12-03 11:03:12 diff --git a/configuration/arm64/mysql/suntrax/staging_area_operations.sql b/configuration/arm64/mysql/suntrax/staging_area_operations.sql deleted file mode 100644 index 7332feb90..000000000 --- a/configuration/arm64/mysql/suntrax/staging_area_operations.sql +++ /dev/null @@ -1,91 +0,0 @@ --- MySQL dump 10.13 Distrib 5.7.36, for Linux (x86_64) --- --- Host: 127.0.0.1 Database: PORT_DRAYAGE --- ------------------------------------------------------ --- Server version 5.7.36 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Current Database: `PORT_DRAYAGE` --- - -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `PORT_DRAYAGE` /*!40100 DEFAULT CHARACTER SET latin1 */; - -USE `PORT_DRAYAGE`; - --- --- Table structure for table `first_action` --- - -DROP TABLE IF EXISTS `first_action`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `first_action` ( - `cmv_id` varchar(20) NOT NULL, - `cargo_id` varchar(20) DEFAULT NULL, - `destination_lat` decimal(9,7) NOT NULL, - `destination_long` decimal(9,7) NOT NULL, - `operation` varchar(20) NOT NULL, - `action_id` varchar(36) NOT NULL, - `next_action` varchar(36) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `first_action` --- - -LOCK TABLES `first_action` WRITE; -/*!40000 ALTER TABLE `first_action` DISABLE KEYS */; -INSERT INTO `first_action` VALUES ('DOT-80550','CARGO_A',28.1249788,-81.8348897,'PICKUP','4bea1c45-e421-11eb-a8cc-000c29ae389d','32320c8a-e422-11eb-a8cc-000c29ae389d'),('DOT-10004','CARGO_A',28.1249788,-81.8348897,'PICKUP','66bba4a0-52c1-11ec-9105-000145098e4f','66bba4cb-52c1-11ec-9105-000145098e4f'); -/*!40000 ALTER TABLE `first_action` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `freight` --- - -DROP TABLE IF EXISTS `freight`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `freight` ( - `cmv_id` varchar(20) NOT NULL, - `cargo_id` varchar(20) DEFAULT NULL, - `destination_lat` decimal(9,7) NOT NULL, - `destination_long` decimal(9,7) NOT NULL, - `operation` varchar(20) NOT NULL, - `action_id` varchar(36) NOT NULL, - `next_action` varchar(36) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `freight` --- - -LOCK TABLES `freight` WRITE; -/*!40000 ALTER TABLE `freight` DISABLE KEYS */; -INSERT INTO `freight` VALUES ('DOT-80550',NULL,28.1232195,-81.8348278,'EXIT_STAGING_AREA','32320c8a-e422-11eb-a8cc-000c29ae389d','4ace39e6-ee36-11eb-9a03-0242ac130003'),('DOT-80550','CARGO_A',28.1249788,-81.8348897,'PICKUP','4bea1c45-e421-11eb-a8cc-000c29ae389d','32320c8a-e422-11eb-a8cc-000c29ae389d'),('DOT-80550',NULL,28.1128156,-81.8314745,'ENTER_PORT','4ace39e6-ee36-11eb-9a03-0242ac130003','67eadd3a-38b4-11ec-930a-000145098e4f'),('DOT-80550','CARGO_B',28.1232336,-81.8347566,'ENTER_STAGING_AREA','fc15d52a-3c0c-11ec-b00d-000145098e4f','5ceaab82-515c-11ec-9e2c-000145098e47'),('DOT-10004','CARGO_A',28.1249788,-81.8348897,'PICKUP','66bba4a0-52c1-11ec-9105-000145098e4f','66bba4cb-52c1-11ec-9105-000145098e4f'),('DOT-10004',NULL,28.1232195,-81.8348278,'EXIT_STAGING_AREA','66bba4cb-52c1-11ec-9105-000145098e4f','84f6b797-52c2-11ec-9105-000145098e4f'),('DOT-10004',NULL,28.1128156,-81.8314745,'ENTER_PORT','84f6b797-52c2-11ec-9105-000145098e4f','c9bba171-52c2-11ec-9105-000145098e4f'),('DOT-10004','CARGO_B',28.1232336,-81.8347566,'ENTER_STAGING_AREA','20b546e3-52c6-11ec-9105-000145098e4f','53875eba-52c7-11ec-9105-000145098e4f'); -/*!40000 ALTER TABLE `freight` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2021-12-03 11:25:03 diff --git a/configuration/arm64/docker-compose.yml b/configuration/docker-compose.yml old mode 100644 new mode 100755 similarity index 60% rename from configuration/arm64/docker-compose.yml rename to configuration/docker-compose.yml index 4e378c4c5..3938dc5cc --- a/configuration/arm64/docker-compose.yml +++ b/configuration/docker-compose.yml @@ -1,8 +1,6 @@ -version: '3.7' - services: db: - image: mariadb:10.4 + image: mysql:8.0 container_name: mysql restart: always environment: @@ -20,17 +18,18 @@ services: - mysql-datavolume:/var/lib/mysql php: - image: usdotfhwaops/php_arm:7.6.0 + image: usdotfhwaops/php:${V2XHUB_VERSION:-develop} container_name: php network_mode: host - depends_on: + restart: always + depends_on: - db - v2xhub stdin_open: true tty: true v2xhub: - image: usdotfhwaops/v2xhubarm:7.6.0 + image: usdotfhwaops/v2xhub:${V2XHUB_VERSION:-develop} container_name: v2xhub network_mode: host restart: always @@ -38,13 +37,25 @@ services: - db environment: - MYSQL_PASSWORD=/run/secrets/mysql_password + - SIMULATION_MODE=${SIMULATION_MODE:-false} + - SIMULATION_IP=${SIMULATION_IP:-127.0.0.1} + - SIMULATION_REGISTRATION_PORT=6767 + - LOCAL_IP=${LOCAL_IP:-127.0.0.1} + - TIME_SYNC_TOPIC=time_sync + - TIME_SYNC_PORT=7575 + - SIM_V2X_PORT=5757 + - SIM_INTERACTION_PORT=7576 + - V2X_PORT=8686 + - INFRASTRUCTURE_ID=${INFRASTRUCTURE_ID:-rsu_1234} + - INFRASTRUCTURE_NAME=${INFRASTRUCTURE_NAME:-East Intersection} + - SENSOR_JSON_FILE_PATH=${SENSOR_JSON_FILE_PATH:-/var/www/plugins/MAP/sensors.json} secrets: - mysql_password volumes: - ./logs:/var/log/tmx - ./MAP:/var/www/plugins/MAP port_drayage_webservice: - image: usdotfhwaops/port-drayage-webservice_arm:7.6.0 + image: usdotfhwaops/port-drayage-webservice:${V2XHUB_VERSION:-develop} container_name: port_drayage_webservice network_mode: host secrets: diff --git a/configuration/initialization.sh b/configuration/initialization.sh new file mode 100755 index 000000000..e6dc5acf0 --- /dev/null +++ b/configuration/initialization.sh @@ -0,0 +1,152 @@ +#!/bin/bash + +# Default values for the variables +PORT_DRAYAGE_ENABLED_DEFAULT="FALSE" +INFRASTRUCTURE_ID_DEFAULT="rsu_1234" +INFRASTRUCTURE_NAME_DEFAULT="East Intersection" +V2XHUB_IP_DEFAULT="127.0.0.1" +SIMULATION_MODE_DEFAULT="FALSE" +SIMULATION_IP_DEFAULT="127.0.0.1" +SENSOR_JSON_FILE_PATH_DEFAULT="/var/www/plugins/MAP/sensors.json" + +echo "Setting up the environment..." + +# Repository URL +repo_url_latest="https://api.github.com/repos/usdot-fhwa-OPS/V2X-Hub/releases/latest" + +# Getting the latest release information using curl +release_info=$(curl -sSL $repo_url_latest) + +# Parsing the JSON response to get the tag_name (version) of the latest release +latest_version=$(echo "$release_info" | grep -o '"tag_name": *"[^"]*"' | cut -d '"' -f 4) + +# Fetching all tags from Git repository +tags=$(git ls-remote --tags https://github.com/usdot-fhwa-OPS/V2X-Hub.git | awk -F/ '{print $3}' | sort -V) + +# Displaying all available versions +echo "Available versions:" +echo "$tags" + +# select a version or accept the latest version as default +read -r -p "Enter V2X-Hub Version (choose from the above, or press Enter to use latest version $latest_version): " chosen_version +V2XHUB_VERSION=${chosen_version:-$latest_version} + +# Enable Port Drayage functionality +read -r -p "Enable Port Drayage functionality (TRUE/FALSE, or press Enter to use default as $PORT_DRAYAGE_ENABLED_DEFAULT): " PORT_DRAYAGE_ENABLED +PORT_DRAYAGE_ENABLED=${PORT_DRAYAGE_ENABLED:-$PORT_DRAYAGE_ENABLED_DEFAULT} + +# Infrastructure id +read -r -p "Enter Infrastructure id (or press Enter to use default as $INFRASTRUCTURE_ID_DEFAULT): " INFRASTRUCTURE_ID +INFRASTRUCTURE_ID=${INFRASTRUCTURE_ID:-$INFRASTRUCTURE_ID_DEFAULT} + +# Infrastructure name +read -r -p "Enter Infrastructure name (or press Enter to use default as $INFRASTRUCTURE_NAME_DEFAULT): " INFRASTRUCTURE_NAME +INFRASTRUCTURE_NAME=${INFRASTRUCTURE_NAME:-$INFRASTRUCTURE_NAME_DEFAULT} + +# V2XHub IP +read -r -p "Enter V2XHub IP (or press Enter to use default as $V2XHUB_IP_DEFAULT): " V2XHUB_IP +V2XHUB_IP=${V2XHUB_IP:-$V2XHUB_IP_DEFAULT} + +# Simulation Mode +read -r -p "Simulation Mode (TRUE/FALSE, or press Enter to use default as $SIMULATION_MODE_DEFAULT): " SIMULATION_MODE +SIMULATION_MODE=${SIMULATION_MODE:-$SIMULATION_MODE_DEFAULT} + +# In Simulation Mode +if [[ $SIMULATION_MODE == "TRUE" ]]; then + # Simulation IP + read -r -p "Enter Simulation IP (or press Enter to use default is $SIMULATION_IP_DEFAULT): " SIMULATION_IP + SIMULATION_IP=${SIMULATION_IP:-$SIMULATION_IP_DEFAULT} + + # Sensor Configuration File Path + read -r -p "Enter Sensor Configuration File Path (or press Enter to use default as $SENSOR_JSON_FILE_PATH_DEFAULT): " SENSOR_JSON_FILE_PATH + SENSOR_JSON_FILE_PATH=${SENSOR_JSON_FILE_PATH:-$SENSOR_JSON_FILE_PATH_DEFAULT} +fi + +echo "WARNING: This will overwrite the existing .env file if it exists." +read -r -p "Are you sure you want to continue? (Y/N): " overwrite_confirm +if [[ "$overwrite_confirm" =~ [yY](es)* ]]; then + # Write to .env file + cat < .env +V2XHUB_VERSION=$V2XHUB_VERSION +INFRASTRUCTURE_ID=$INFRASTRUCTURE_ID +INFRASTRUCTURE_NAME=$INFRASTRUCTURE_NAME +V2XHUB_IP=$V2XHUB_IP +SIMULATION_MODE=$SIMULATION_MODE +EOF + + # Adding Simulation IP and Sensor Path if Simulation Mode is TRUE + if [[ $SIMULATION_MODE == "TRUE" ]]; then + echo "SIMULATION_IP=$SIMULATION_IP" >> .env + echo "SENSOR_JSON_FILE_PATH=$SENSOR_JSON_FILE_PATH" >> .env + fi +else + echo "Aborting. No changes were made to the .env file." +fi + +directory=$(pwd) +mysqlDir="$directory/mysql" + +# Update and upgrade commands to update linux OS +sudo apt update -y && sudo apt upgrade -y + +# Install necessary and useful apps +sudo apt-get install chromium-browser -y + +# Make passwords for mysql +mkdir -p secrets && cd secrets || return # SC2164 - Use return in case cd fails + +# Creates password files where user inputs password +FILE1=mysql_root_password.txt +FILE2=mysql_password.txt +if test -f "$FILE1"; then + echo "$FILE1 exists." +else + read -r -p "enter password for the mysql_root_password: " sql_root_pass # SC2162 - read without -r will mangle backslashes + echo "$sql_root_pass" > sql_root_pass.txt + # Remove endline characters from password files + tr -d '\n' mysql_root_password.txt && rm sql_root_pass.txt +fi + +if test -f "$FILE2"; then + echo "$FILE2 exists." +else + read -r -p "enter password for mysql_password: " sql_pass + echo "$sql_pass" > sql_pass.txt + # Remove endline characters from password files + tr -d '\n' mysql_password.txt && rm sql_pass.txt +fi + +# AMD64 initialization +cd "$directory" || return # return in case cd fails +for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done +# Add Docker's official GPG key: +sudo apt-get update +sudo apt-get install ca-certificates curl +sudo install -m 0755 -d /etc/apt/keyrings +sudo curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg -o /etc/apt/keyrings/docker.asc +sudo chmod a+r /etc/apt/keyrings/docker.asc + +# Add the repository to Apt sources: +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/$(. /etc/os-release && echo "$ID") \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt-get update +sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + +# Check if Port Drayage functionality is enabled +if [[ $PORT_DRAYAGE_ENABLED == "TRUE" ]]; then + sudo docker compose up -d +elif [[ $PORT_DRAYAGE_ENABLED == "FALSE" ]]; then + sudo docker compose up php -d +else + echo "Invalid value for PORT_DRAYAGE_ENABLED. Please provide either TRUE or FALSE." + exit 1 +fi + +# Create V2X Hub user +cd "$mysqlDir" || return # return in case cd fails +./add_v2xhub_user.bash + +chromium-browser "http://127.0.0.1" > /dev/null 2>&1 & +chromium-browser "https://127.0.0.1:19760" > /dev/null 2>&1 & diff --git a/configuration/amd64/logs/filewatchscript.sh b/configuration/logs/filewatchscript.sh similarity index 100% rename from configuration/amd64/logs/filewatchscript.sh rename to configuration/logs/filewatchscript.sh diff --git a/configuration/arm64/mysql/add_v2xhub_user.bash b/configuration/mysql/add_v2xhub_user.bash similarity index 94% rename from configuration/arm64/mysql/add_v2xhub_user.bash rename to configuration/mysql/add_v2xhub_user.bash index 1d8bb57c2..6ee0250e4 100755 --- a/configuration/arm64/mysql/add_v2xhub_user.bash +++ b/configuration/mysql/add_v2xhub_user.bash @@ -4,10 +4,11 @@ # Ensure mysql-client is installed arch=$(dpkg --print-architecture) +# TODO: Add a common mysql-client that works for ARM and AMD devices if [ $arch = "amd64" ]; then REQUIRED_PKG="mysql-client" else - REQUIRED_PKG="mariadb-client-10.5" + REQUIRED_PKG="mariadb-client" fi PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $REQUIRED_PKG|grep "install ok installed") echo Checking for $REQUIRED_PKG: $PKG_OK diff --git a/configuration/amd64/mysql/localhost.sql b/configuration/mysql/localhost.sql similarity index 100% rename from configuration/amd64/mysql/localhost.sql rename to configuration/mysql/localhost.sql diff --git a/configuration/amd64/mysql/port_drayage.sql b/configuration/mysql/port_drayage.sql similarity index 67% rename from configuration/amd64/mysql/port_drayage.sql rename to configuration/mysql/port_drayage.sql index eccdb199b..17d04e5ce 100644 --- a/configuration/amd64/mysql/port_drayage.sql +++ b/configuration/mysql/port_drayage.sql @@ -47,7 +47,7 @@ CREATE TABLE `first_action` ( LOCK TABLES `first_action` WRITE; /*!40000 ALTER TABLE `first_action` DISABLE KEYS */; -INSERT INTO `first_action` VALUES ("123",'SOME_CARGO',38.9548890,-77.1481430,'PICKUP','4bea1c45-e421-11eb-a8cc-000c29ae389d','32320c8a-e422-11eb-a8cc-000c29ae389d'); +INSERT INTO `first_action` VALUES ("123",'SOME_CARGO',38.9548890,-77.1481430,'PICKUP','4bea1c45-e421-11eb-a8cc-000c29ae389d','32320c8a-e422-11eb-a8cc-000c29ae389d'),('DOT-80550','CARGO_A',28.1249788,-81.8348897,'PICKUP','4bea1c45-e421-11eb-a8cc-000c29ae389d','32320c8a-e422-11eb-a8cc-000c29ae389d'); /*!40000 ALTER TABLE `first_action` ENABLE KEYS */; UNLOCK TABLES; @@ -75,7 +75,7 @@ CREATE TABLE `freight` ( LOCK TABLES `freight` WRITE; /*!40000 ALTER TABLE `freight` DISABLE KEYS */; -INSERT INTO `freight` VALUES ("123",NULL,38.9549780,-77.1475790,'EXIT_STAGING_AREA','32320c8a-e422-11eb-a8cc-000c29ae389d','4ace39e6-ee36-11eb-9a03-0242ac130003'),("123",'SOME_CARGO',38.9548890,-77.1481430,'PICKUP','4bea1c45-e421-11eb-a8cc-000c29ae389d','32320c8a-e422-11eb-a8cc-000c29ae389d'); +INSERT INTO `freight` VALUES ("123",NULL,38.9549780,-77.1475790,'EXIT_STAGING_AREA','32320c8a-e422-11eb-a8cc-000c29ae389d','4ace39e6-ee36-11eb-9a03-0242ac130003'),("123",'SOME_CARGO',38.9548890,-77.1481430,'PICKUP','4bea1c45-e421-11eb-a8cc-000c29ae389d','32320c8a-e422-11eb-a8cc-000c29ae389d'),('DOT-80550',NULL,28.1232195,-81.8348278,'EXIT_STAGING_AREA','32320c8a-e422-11eb-a8cc-000c29ae389d','4ace39e6-ee36-11eb-9a03-0242ac130003'),('DOT-80550','CARGO_A',28.1249788,-81.8348897,'PICKUP','4bea1c45-e421-11eb-a8cc-000c29ae389d','32320c8a-e422-11eb-a8cc-000c29ae389d'),('DOT-80550',NULL,28.1128156,-81.8314745,'ENTER_PORT','4ace39e6-ee36-11eb-9a03-0242ac130003','67eadd3a-38b4-11ec-930a-000145098e4f'),('DOT-80550','CARGO_B',28.1232336,-81.8347566,'ENTER_STAGING_AREA','fc15d52a-3c0c-11ec-b00d-000145098e4f','5ceaab82-515c-11ec-9e2c-000145098e47'),('DOT-80550',NULL,28.1128156,-81.8314745,'ENTER_PORT','4ace39e6-ee36-11eb-9a03-0242ac130003','67eadd3a-38b4-11ec-930a-000145098e4f'),('DOT-80550','CARGO_A',28.1119763,-81.8312035,'DROPOFF','67eadd3a-38b4-11ec-930a-000145098e4f','0bf7ebda-38b5-11ec-930a-000145098e4f'),('DOT-80550','CARGO_B',28.1117373,-81.8309654,'PICKUP','0bf7ebda-38b5-11ec-930a-000145098e4f','9230504d-38b5-11ec-930a-000145098e4f'),('DOT-80550','CARGO_B',28.1120500,-81.8306483,'PORT_CHECKPOINT','9230504d-38b5-11ec-930a-000145098e4f','511ad052-38b6-11ec-930a-000145098e4f'),('DOT-80550','CARGO_B',28.1138052,-81.8317502,'EXIT_PORT','511ad052-38b6-11ec-930a-000145098e4f','fc15d52a-3c0c-11ec-b00d-000145098e4f'),('DOT-80550','CARGO_B',28.1232336,-81.8347566,'ENTER_STAGING_AREA','fc15d52a-3c0c-11ec-b00d-000145098e4f','5ceaab82-515c-11ec-9e2c-000145098e47'); /*!40000 ALTER TABLE `freight` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; diff --git a/configuration/amd64/mysql/suntrax/README.txt b/configuration/mysql/suntrax/README.txt similarity index 100% rename from configuration/amd64/mysql/suntrax/README.txt rename to configuration/mysql/suntrax/README.txt diff --git a/configuration/mysql/suntrax/momscript_port_drayage.py b/configuration/mysql/suntrax/momscript_port_drayage.py new file mode 100755 index 000000000..411c79ec8 --- /dev/null +++ b/configuration/mysql/suntrax/momscript_port_drayage.py @@ -0,0 +1,78 @@ +#!/usr/bin/python3 +######## use this block to send message to V2X hub################## +####### The messages hit MessageReceiver Plugin first at port: 26789 ######## + +import socket +import binascii as ba +import time + +udpip = "127.0.0.1" +udpport = 26789 + + +sk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + +# Send sample MobilityOperation messages +staging_area_messages = [ + { + "DOT-80550: Arrival at ENTER_STAGING_AREA location": "00f381093f3cbbb265e57f4e47e797764cbcafe9c98b9edbfa7258b0c183060c183060b583060c16b060c182d60c18305ac183060c183060c183060c5bb170c993866cdab068e5b3766cdcb9431e1e5b70afe1bf974bf93961f3873e531bda0458f6f6bfa722274811449f516b860d5ab044b1022d9bf1e1e9a77ee4481020408102040e907b408b661e9a7a75c99513a40899b85ce5ab568cdbb744b1022d9bf767d3d3ae4ca89d2044b5bb75cc5ab066d19314483eac408b265e7d34eec3d34efdc89d20f68116cc3d34f4eb932a240810204081020748113370b9cb56ac1833708962045b37eecfa7a75c99513a40896b76eb98b470c5cb8668907d588116fe197961e9a77ee44e902245f4" + }, + { + "DOT-80550: Arrive at PICKUP location": "00f381583f3cbbb265e57f4e47e797764cbcafe9c98b9edbfa7258b0c183060c183060b583060c16b060c182d60c18305ac183060c183060c183060c5bb170c993968d19b76ce183570dd9b1431e1e5b70afe1bf974bf93961f3873e5483da0458f6f6bfa722274811449f516b860d5ab044b1022c787967df7f4e444e902287069479f7e0a2588116cdf8f0f4d3bf722408102040810207483da045b30f4d3d3ae4ca89d2044cdc2e72d5ab466ddba2588116cdfbb3e9e9d726544e90225addbae62d583368c98a241f562045932f3e9a7761e9a77ee44e907b408b661e9a7a75c9951204081020408103a40899b85ce5ab560c19b844b1022d9bf767d3d3ae4ca89d2044b5bb75cc5a3862e5c334483eac408b7f0cbcb0f4d3bf7227481150930e5d5a08962045871f4d3bf75fd3911204081020408103a4089a62cb858e368d56e568c98ad62c72e25b85c63c6b5830618d939c3959b8739117d0" + }, + { + "DOT-80550: Arrive at EXIT_STAGING_AREA location": "00f381623f3cbbb265e57f4e47e797764cbcafe9c98b9edbfa7258b0c183060c183060b583060c16b060c182d60c18305ac183060c183060c183060c5bb170c99396ec1ab970e1a3364e58b1431e1e5b70afe1bf974bf93961f3873e54afda0458f6f6bfa722274811449f516b860d5ab044b1022c787967df7f4e444e902287069479f7e0a2588116cdf8f0f4d3bf722408102040810207483da045b30f4d3d3ae4ca89d2044cdc2e72d5ab466ddba2588116cdfbb3e9e9d726544e90225addbae62d583368c98a241f562045932f3e9a7761e9a77ee44e907b408b661e9a7a75c9951204081020408103a40899b85ce5ab560c19b844b1022d9bf767d3d3ae4ca89d2044b5bb75cc5a3862e5c334483eac408b7f0cbcb0f4d3bf7227481145b126a5fa7520c7933a3df834a2c144b1022c38fa69dfbafe9c88902040810204081d2044cd93364c31b8c2b72b464c96b1639712dc2e31e35ac1830c6c9ce1cacdc39c88be80" + }, +] + +port_area_messages = [ + { + "DOT-80550: Arrive at ENTER_PORT location": "00f3815b3f3cbbb265e57f4e47e797764cbcafe9c98b9edbfa7258b0c183060c183060b583060c16b060c182d60c18305ac183060c183060c183060c5bb170c99396ee59b070e18b860c1ab3431e1e5b70afe1bf974bf93961f3873e5493da0458f6f6bfa722274811449f516b860d5ab044b1022c787967df7f4e444e902287069479f7e0a2588116cdf8f0f4d3bf722408102040810207483da045b30f4d3d3ae4ca89d2044cdc2e72d5ab466ddba2588116cdfbb3e9e9d726544e90225addbae62d583368c98a241f562045932f3e9a7761e9a77ee44e907b408b661e9a7a75c9951204081020408103a40899b85ce5ab560c19b844b1022d9bf767d3d3ae4ca89d2044b5bb75cc5a3862e5c334483eac408b7f0cbcb0f4d3bf72274811459d522d2bf427d2a88962045871f4d3bf75fd3911204081020408103a4089a61c7959b9cad96e5cacdb2d62c72e25ae70b066b583268cb0e362cd83060cd17d" + }, + { + "DOT-80550: Arrive at DROPOFF location": "00f381593f3cbbb265e57f4e47e797764cbcafe9c98b9edbfa7258b0c183060c183060b583060c16b060c182d60c18305ac183060c183060c183060c5bb170c993972dd8386cc5bb968d98b9431e1e5b70afe1bf974bf93961f3873e5487da0458f6f6bfa722274811449f516b860d5ab044b1022c787967df7f4e444e902287069479f7e0a2588116cdf8f0f4d3bf722408102040810207483da045b30f4d3d3ae4ca89d2044cdc2e72d5ab466ddba2588116cdfbb3e9e9d726544e90225addbae62d583368c98a241f562045932f3e9a7761e9a77ee44e907b408b661e9a7a75c9951204081020408103a40899b85ce5ab560c19b844b1022d9bf767d3d3ae4ca89d2044b5bb75cc5a3862e5c334483eac408b7f0cbcb0f4d3bf7227481144a53e84f8d1912c408b0e3e9a77eebfa72224081020408102074811366f970e4c8cf0ad66e31345ac58e5c6b5cb361856b060c18b46ac1cb8cad3322fa0" + }, + { + "DOT-80550: DOT-80550: Arrive at PICKUP location": "00f381583f3cbbb265e57f4e47e797764cbcafe9c98b9edbfa7258b0c183060c183060b583060c16b060c182d60c18305ac183060c183060c183060c5bb170c99b060e583964d583870c9832431e1e5b70afe1bf974bf93961f3873e5483da0458f6f6bfa722274811449f516b860d5ab044b1022c787967df7f4e444e902287069479f7e122588116cdf8f0f4d3bf722408102040810207483da045b30f4d3d3ae4ca89d2044cdc2e72d5ab466ddba2588116cdfbb3e9e9d726544e90225addbae62d583368c98a241f562045932f3e9a7761e9a77ee44e907b408b661e9a7a75c9951204081020408103a40899b85ce5ab560c19b844b1022d9bf767d3d3ae4ca89d2044b5bb75cc5a3862e5c334483eac408b7f0cbcb0f4d3bf7227481150930e5d5a08962045871f4d3bf75fd3911204081020408103a4089862ccdf2e2c9856b37189aad62c72e35ae59b0c2b583060c5a3560e5c65699917d0" + }, + { + "DOT-80550: Arrive at PORT_CHECKPOINT location": "00f381603f3cbbb265e57f4e47e797764cbcafe9c98b9edbfa7258b0c183060c183060b583060c16b060c182d60c18305ac183060c183060c183060c5bb170c99b064d18306ec5a3368e19b3431e1e5b70afe1bf974bf93961f3873e54a7da0458f6f6bfa722274811449f516b860d5ab044b1022c787967df7f4e444e902287069479f7e122588116cdf8f0f4d3bf722408102040810207483da045b30f4d3d3ae4ca89d2044cdc2e72d5ab466ddba2588116cdfbb3e9e9d726544e90225addbae62d583368c98a241f562045932f3e9a7761e9a77ee44e907b408b661e9a7a75c9951204081020408103a40899b85ce5ab560c19b844b1022d9bf767d3d3ae4ca89d2044b5bb75cc5a3862e5c334483eac408b7f0cbcb0f4d3bf72274811509f4aa5f87222c397427c99d5112c408b0e3e9a77eebfa722240810204081020748113964cd83560d322d66e31355ac58e5c6b5cb361856b060c18b46ac1cb8cad3322fa0" + }, + { + "DOT-80550: Arrive at HOLDING_AREA location": "00f3815d3f3cbbb265e57f4e47e797764cbcafe9c98b9edbfa7258b0c183060c183060b583060c16b060c182d60c18305ac183060c183060c183060c5bb170c99b068d98b068e1b3472d9cb1431e1e5b70afe1bf974bf93961f3873e549bda0458f6f6bfa722274811449f516b860d5ab044b1022c787967df7f4e444e902287069479f7e122588116cdf8f0f4d3bf722408102040810207483da045b30f4d3d3ae4ca89d2044cdc2e72d5ab466ddba2588116cdfbb3e9e9d726544e90225addbae62d583368c98a241f562045932f3e9a7761e9a77ee44e907b408b661e9a7a75c9951204081020408103a40899b85ce5ab560c19b844b1022d9bf767d3d3ae4ca89d2044b5bb75cc5a3862e5c334483eac408b7f0cbcb0f4d3bf72274811489f322499d1efc1a5160a25881161c7d34efdd7f4e44481020408102040e9022cccdcb370d1c395ac9cb070b58b1cb996b968cb32d60c186364e583170d5b3045f4" + }, + { + "DOT-80550: Arrive at EXIT_PORT location": "00f3815b3f3cbbb265e57f4e47e797764cbcafe9c98b9edbfa7258b0c183060c183060b583060c16b060c182d60c18305ac183060c183060c183060c5bb170c99b06ae1bb768e193170e1c33431e1e5b70afe1bf974bf93961f3873e548fda0458f6f6bfa722274811449f516b860d5ab044b1022c787967df7f4e444e902287069479f7e122588116cdf8f0f4d3bf722408102040810207483da045b30f4d3d3ae4ca89d2044cdc2e72d5ab466ddba2588116cdfbb3e9e9d726544e90225addbae62d583368c98a241f562045932f3e9a7761e9a77ee44e907b408b661e9a7a75c9951204081020408103a40899b85ce5ab560c19b844b1022d9bf767d3d3ae4ca89d2044b5bb75cc5a3862e5c334483eac408b7f0cbcb0f4d3bf7227481145b126a5fa13e95444b1022c38fa69dfbafe9c88902040810204081d2044d58b1c39183564b59b8c4d96b163971ad72cd8615ac183062d1ab072e32b4cc8be80" + }, + { + "DOT-80550: Arrive at ENTER_STAGING_AREA location": "00f381623f3cbbb265e57f4e47e797764cbcafe9c98b9edbfa7258b0c183060c183060b583060c16b060c182d60c18305ac183060c183060c183060c5bb170c99b06ec1c376ac5bb66cc5cb3431e1e5b70afe1bf974bf93961f3873e54b3da0458f6f6bfa722274811449f516b860d5ab044b1022c787967df7f4e444e902287069479f7e122588116cdf8f0f4d3bf722408102040810207483da045b30f4d3d3ae4ca89d2044cdc2e72d5ab466ddba2588116cdfbb3e9e9d726544e90225addbae62d583368c98a241f562045932f3e9a7761e9a77ee44e907b408b661e9a7a75c9951204081020408103a40899b85ce5ab560c19b844b1022d9bf767d3d3ae4ca89d2044b5bb75cc5a3862e5c334483eac408b7f0cbcb0f4d3bf72274811459d522d2bf4ea418f26747bf06945828962045871f4d3bf75fd3911204081020408103a408b36362d723565856b3c6c31ad62c72e35b89830c8b583060c5a3560e5c65699917d" + }, +] + + +def send_messages(messages): + for message in messages: + title = list(message.keys())[0] + message = list(message.values())[0] + if "HOLDING" in title: + hold = input("Move to holding location? (y/n): ") + if hold != "y": + continue + unhexed = ba.unhexlify(message) + sk.sendto(unhexed, (udpip, udpport)) + print(f"\n{title}. Sent: {message}") + input("Press enter to send next arrival message.") + + +if __name__ == "__main__": + while True: + print("\nAvailable area options:\n\t1: staging\n\t2: port\n\t0: exit\n") + area = input("Choose area: ") + if area == "1": + send_messages(staging_area_messages) + elif area == "2": + send_messages(port_area_messages) + elif area == "0": + break + else: + print("Invalid area. Choose 0 to exit") diff --git a/configuration/amd64/mysql/suntrax/port_area_operations.sql b/configuration/mysql/suntrax/port_area_operations.sql similarity index 100% rename from configuration/amd64/mysql/suntrax/port_area_operations.sql rename to configuration/mysql/suntrax/port_area_operations.sql diff --git a/configuration/amd64/mysql/suntrax/staging_area_operations.sql b/configuration/mysql/suntrax/staging_area_operations.sql similarity index 100% rename from configuration/amd64/mysql/suntrax/staging_area_operations.sql rename to configuration/mysql/suntrax/staging_area_operations.sql diff --git a/docs/Release_notes.md b/docs/Release_notes.md index d7b326b3b..48e081dee 100644 --- a/docs/Release_notes.md +++ b/docs/Release_notes.md @@ -1,6 +1,55 @@ V2X-Hub Release Notes --------------------------------- +Version 7.7.0, released Aug 15th, 2024 +-------------------------------------------------------- + +**Summary:** +V2X Hub release 7.7.0 introduces key enhancements and fixes to improve data streaming, upgrade MySQL to version 8.0, and support multi-architecture Docker deployments. This release includes updates to initialization scripts and addresses clock reference issues in simulation mode. Additionally, this release removes obsolete Docker tags and makes the SENSOR_JSON_FILE_PATH an optional environment variable to enhance flexibility in simulation setups. + +Enhancement in this release: + +- V2X-Hub PR 612: Updated MySQL to 8.0 to support multi-architecture Docker deployment, removed architecture-based configuration folders, and updated initialization scripts. +- V2X-Hub PR 611: Updated TCR message oldest field to use data sent by carma-platform in simulation mode to address clock reference issues. +- V2X-Hub PR 615: Updated the initialization script to generate a .env file based on user input. + +Fixes in this release: + +- V2X-Hub PR 614: Removed the "version:" tag at the top of the docker-compose files. These are no longer needed and are obsolete in current and future versions of Docker. +- V2X-Hub PR 616: Updated SENSOR_JSON_FILE_PATH as optional environment variable in simulation since spawning sensors is not required for the base line functionality of V2X-Hub. Before this update CDASimAdapter would accept empty SENSOR_JSON_FILE_PATH files but not missing ones. + + +Version 7.6.0, released April 10th, 2024 +-------------------------------------------------------- + +**Summary:** +V2X Hub release 7.6.0 includes functionality for integrating V2X-Hub with simulated sensors in CDASim. CDASim can now publish detection data to V2X-Hub for ingestion. Furthermore, this release added a functionality to encode/decode J3224 Sensor Data Sharing Message (SDSM) and forward these messages between CARMA-Streets and CDASim for Vulnerable Road User (VRU) Cooperative Perception testing in simulation. Unrelated improvements include initial integration with telematics tool and general system improvements. + +**V2X Hub CDASim Functionalities ** + +Enhancements in this release: + +- Issue 549/PR 550: Moved Kafka time producer from CDASimAdapter to CARMA-Streets plugin, and updated CARMA-Streets Plugin to be simulation time aware. CDASim Adapter was previously forwarding time sync messages directly to CARMA-Streets. Improved CARMA Streets Plugin to extend our PluginClientTimeAware class to make it aware of simulation. +- Issue 590: Add CDA Sim simulated sensor integration. Allow V2X-Hub to consume detection data from simulated sensor in CDASim. +- Issue 589: Implement support for CARMA-Street SDSM functionality. This includes adding SDSM encoding/decoding and message forwarding between CARMA-Streets and CDASim + +Fixes in this release: + +- Issue 538 & Issue543 & PR 547: Fixed CARMA Streets Plugin Kafka Consumers. 1) Removed the Kafka consumer/producer initialization during config parameter update. 2) Replaced consumer creation with v2xhub kafka_client library. 3) Added producer creation in kafka_client library. +- PR 12 (not V2X Hub Repo): Fixed wait_for_initialization for multiple threads + +Other Enhancements: + +- PR 545: Added PSID metadata to BSMs and SRMs that are sent to the Message Receiver plugin. If RouteMessage is enabled, the messages will be available for the Immediate Forward plugin to use +- PR 592 / Issue 593: Update initialization script to install necessary dependencies, create secret files, prompt user to enter MySQL passwords, and create v2xhub user and open web browser to correct URL. +- Issue 591: V2X-Hub Telematics tool integration. Allows V2X-Hub to stream data to telematics tool for data visualization. Includes development of new RSU Health Monitoring Plugin. +- PR 580: Added a copy command from the dependency container to the final container for /usr/local/include/ which ensures the header files get copied to the final container. + +Known issues related to this release: + +- Issue 540: CDASim Time Synchronization is non-time-regulating. If simulation runs too fast (faster than real-time) for V2X Hub to keep up, V2X Hub can fall behind in time. +- Issue 507: SPaT plugin throws segfault when in SIM MODE. + Version 7.5.1, released June 21st, 2023 -------------------------------------------------------- diff --git a/src/tmx/Asn_J2735/CMakeLists.txt b/src/tmx/Asn_J2735/CMakeLists.txt index 4bda1b3b9..601044461 100644 --- a/src/tmx/Asn_J2735/CMakeLists.txt +++ b/src/tmx/Asn_J2735/CMakeLists.txt @@ -16,7 +16,7 @@ FOREACH (SOURCE_DIR ${SOURCE_DIRS}) STRING (SUBSTRING ${SAEJ2735_SPEC} 1 -1 SAEJ2735_SPEC_DEF) ADD_LIBRARY (${LIBRARY_NAME} SHARED ${${LIBRARY_NAME}_SOURCES}) - TARGET_INCLUDE_DIRECTORIES (${LIBRARY_NAME} PUBLIC + TARGET_INCLUDE_DIRECTORIES (${LIBRARY_NAME} PUBLIC $ $) TARGET_COMPILE_DEFINITIONS (${LIBRARY_NAME} PUBLIC "-DSAEJ2735_SPEC=${SAEJ2735_SPEC_DEF}") @@ -41,3 +41,4 @@ ENDFOREACH () UNSET (LIBRARY_NAME) UNSET (SAEJ2735_SPEC) +SET (ASN_J2735_LIBRARIES "asn_j2735_r2020" PARENT_SCOPE) diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ANY.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ANY.h new file mode 100644 index 000000000..871ed5ed3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ANY.h @@ -0,0 +1,84 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_ANY_H +#define ASN_TYPE_ANY_H + +#include /* Implemented via OCTET STRING type */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ANY { + uint8_t *buf; /* BER-encoded ANY contents */ + int size; /* Size of the above buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} ANY_t; + +extern asn_TYPE_descriptor_t asn_DEF_ANY; +extern asn_TYPE_operation_t asn_OP_ANY; +extern asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs; + +#define ANY_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define ANY_print OCTET_STRING_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define ANY_compare OCTET_STRING_compare + +#define ANY_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define ANY_decode_ber OCTET_STRING_decode_ber +#define ANY_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define ANY_decode_xer OCTET_STRING_decode_xer_hex +xer_type_encoder_f ANY_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f ANY_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f ANY_decode_uper; +per_type_encoder_f ANY_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f ANY_decode_aper; +per_type_encoder_f ANY_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* Convert another ASN.1 type into the ANY. This implies DER encoding. */ +int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr); +ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr); +#if !defined(ASN_DISABLE_APER_SUPPORT) +int ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr); +ANY_t *ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr); +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +/* Convert the contents of the ANY type into the specified type. */ +int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); +#if !defined(ASN_DISABLE_APER_SUPPORT) +int ANY_to_type_aper(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#define ANY_fromBuf(s, buf, size) OCTET_STRING_fromBuf((s), (buf), (size)) +#define ANY_new_fromBuf(buf, size) OCTET_STRING_new_fromBuf( \ + &asn_DEF_ANY, (buf), (size)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_TYPE_ANY_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AccelSteerYawRateConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AccelSteerYawRateConfidence.h new file mode 100644 index 000000000..a4956d0a5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AccelSteerYawRateConfidence.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AccelSteerYawRateConfidence_H_ +#define _AccelSteerYawRateConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "YawRateConfidence.h" +#include "AccelerationConfidence.h" +#include "SteeringWheelAngleConfidence.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AccelSteerYawRateConfidence */ +typedef struct AccelSteerYawRateConfidence { + YawRateConfidence_t yawRate; + AccelerationConfidence_t acceleration; + SteeringWheelAngleConfidence_t steeringWheelAngle; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AccelSteerYawRateConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AccelSteerYawRateConfidence; +extern asn_SEQUENCE_specifics_t asn_SPC_AccelSteerYawRateConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_AccelSteerYawRateConfidence_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccelSteerYawRateConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Acceleration.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Acceleration.h new file mode 100644 index 000000000..2b072d108 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Acceleration.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Acceleration_H_ +#define _Acceleration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Acceleration */ +typedef long Acceleration_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Acceleration_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Acceleration; +asn_struct_free_f Acceleration_free; +asn_struct_print_f Acceleration_print; +asn_constr_check_f Acceleration_constraint; +ber_type_decoder_f Acceleration_decode_ber; +der_type_encoder_f Acceleration_encode_der; +xer_type_decoder_f Acceleration_decode_xer; +xer_type_encoder_f Acceleration_encode_xer; +oer_type_decoder_f Acceleration_decode_oer; +oer_type_encoder_f Acceleration_encode_oer; +per_type_decoder_f Acceleration_decode_uper; +per_type_encoder_f Acceleration_encode_uper; +per_type_decoder_f Acceleration_decode_aper; +per_type_encoder_f Acceleration_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Acceleration_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AccelerationConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AccelerationConfidence.h new file mode 100644 index 000000000..0d5673edb --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AccelerationConfidence.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AccelerationConfidence_H_ +#define _AccelerationConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AccelerationConfidence { + AccelerationConfidence_unavailable = 0, + AccelerationConfidence_accl_100_00 = 1, + AccelerationConfidence_accl_010_00 = 2, + AccelerationConfidence_accl_005_00 = 3, + AccelerationConfidence_accl_001_00 = 4, + AccelerationConfidence_accl_000_10 = 5, + AccelerationConfidence_accl_000_05 = 6, + AccelerationConfidence_accl_000_01 = 7 +} e_AccelerationConfidence; + +/* AccelerationConfidence */ +typedef long AccelerationConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AccelerationConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AccelerationConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_AccelerationConfidence_specs_1; +asn_struct_free_f AccelerationConfidence_free; +asn_struct_print_f AccelerationConfidence_print; +asn_constr_check_f AccelerationConfidence_constraint; +ber_type_decoder_f AccelerationConfidence_decode_ber; +der_type_encoder_f AccelerationConfidence_encode_der; +xer_type_decoder_f AccelerationConfidence_decode_xer; +xer_type_encoder_f AccelerationConfidence_encode_xer; +oer_type_decoder_f AccelerationConfidence_decode_oer; +oer_type_encoder_f AccelerationConfidence_encode_oer; +per_type_decoder_f AccelerationConfidence_decode_uper; +per_type_encoder_f AccelerationConfidence_encode_uper; +per_type_decoder_f AccelerationConfidence_decode_aper; +per_type_encoder_f AccelerationConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccelerationConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AccelerationSet4Way.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AccelerationSet4Way.h new file mode 100644 index 000000000..416d32e02 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AccelerationSet4Way.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AccelerationSet4Way_H_ +#define _AccelerationSet4Way_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Acceleration.h" +#include "VerticalAcceleration.h" +#include "YawRate.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AccelerationSet4Way */ +typedef struct AccelerationSet4Way { + Acceleration_t Long; + Acceleration_t lat; + VerticalAcceleration_t vert; + YawRate_t yaw; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AccelerationSet4Way_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AccelerationSet4Way; +extern asn_SEQUENCE_specifics_t asn_SPC_AccelerationSet4Way_specs_1; +extern asn_TYPE_member_t asn_MBR_AccelerationSet4Way_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccelerationSet4Way_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_Angle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_Angle.h new file mode 100644 index 000000000..f4e463591 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_Angle.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _AddGrpB_Angle_H_ +#define _AddGrpB_Angle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AddGrpB_Angle */ +typedef long AddGrpB_Angle_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AddGrpB_Angle; +asn_struct_free_f AddGrpB_Angle_free; +asn_struct_print_f AddGrpB_Angle_print; +asn_constr_check_f AddGrpB_Angle_constraint; +ber_type_decoder_f AddGrpB_Angle_decode_ber; +der_type_encoder_f AddGrpB_Angle_encode_der; +xer_type_decoder_f AddGrpB_Angle_decode_xer; +xer_type_encoder_f AddGrpB_Angle_encode_xer; +oer_type_decoder_f AddGrpB_Angle_decode_oer; +oer_type_encoder_f AddGrpB_Angle_encode_oer; +per_type_decoder_f AddGrpB_Angle_decode_uper; +per_type_encoder_f AddGrpB_Angle_encode_uper; +per_type_decoder_f AddGrpB_Angle_decode_aper; +per_type_encoder_f AddGrpB_Angle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AddGrpB_Angle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_DayOfWeek.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_DayOfWeek.h new file mode 100644 index 000000000..e60b82fee --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_DayOfWeek.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _AddGrpB_DayOfWeek_H_ +#define _AddGrpB_DayOfWeek_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AddGrpB_DayOfWeek { + AddGrpB_DayOfWeek_unknown = 0, + AddGrpB_DayOfWeek_monday = 1, + AddGrpB_DayOfWeek_tuesday = 2, + AddGrpB_DayOfWeek_wednesday = 3, + AddGrpB_DayOfWeek_thursday = 4, + AddGrpB_DayOfWeek_friday = 5, + AddGrpB_DayOfWeek_saturday = 6, + AddGrpB_DayOfWeek_sunday = 7 +} e_AddGrpB_DayOfWeek; + +/* AddGrpB_DayOfWeek */ +typedef long AddGrpB_DayOfWeek_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AddGrpB_DayOfWeek_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AddGrpB_DayOfWeek; +extern const asn_INTEGER_specifics_t asn_SPC_AddGrpB_DayOfWeek_specs_1; +asn_struct_free_f AddGrpB_DayOfWeek_free; +asn_struct_print_f AddGrpB_DayOfWeek_print; +asn_constr_check_f AddGrpB_DayOfWeek_constraint; +ber_type_decoder_f AddGrpB_DayOfWeek_decode_ber; +der_type_encoder_f AddGrpB_DayOfWeek_encode_der; +xer_type_decoder_f AddGrpB_DayOfWeek_decode_xer; +xer_type_encoder_f AddGrpB_DayOfWeek_encode_xer; +oer_type_decoder_f AddGrpB_DayOfWeek_decode_oer; +oer_type_encoder_f AddGrpB_DayOfWeek_encode_oer; +per_type_decoder_f AddGrpB_DayOfWeek_decode_uper; +per_type_encoder_f AddGrpB_DayOfWeek_encode_uper; +per_type_decoder_f AddGrpB_DayOfWeek_decode_aper; +per_type_encoder_f AddGrpB_DayOfWeek_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AddGrpB_DayOfWeek_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_Elevation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_Elevation.h new file mode 100644 index 000000000..4ade1c06a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_Elevation.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _AddGrpB_Elevation_H_ +#define _AddGrpB_Elevation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AddGrpB_Elevation */ +typedef long AddGrpB_Elevation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AddGrpB_Elevation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AddGrpB_Elevation; +asn_struct_free_f AddGrpB_Elevation_free; +asn_struct_print_f AddGrpB_Elevation_print; +asn_constr_check_f AddGrpB_Elevation_constraint; +ber_type_decoder_f AddGrpB_Elevation_decode_ber; +der_type_encoder_f AddGrpB_Elevation_encode_der; +xer_type_decoder_f AddGrpB_Elevation_decode_xer; +xer_type_encoder_f AddGrpB_Elevation_encode_xer; +oer_type_decoder_f AddGrpB_Elevation_decode_oer; +oer_type_encoder_f AddGrpB_Elevation_encode_oer; +per_type_decoder_f AddGrpB_Elevation_decode_uper; +per_type_encoder_f AddGrpB_Elevation_encode_uper; +per_type_decoder_f AddGrpB_Elevation_decode_aper; +per_type_encoder_f AddGrpB_Elevation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AddGrpB_Elevation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_MsgCount.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_MsgCount.h new file mode 100644 index 000000000..64f57e889 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_MsgCount.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _AddGrpB_MsgCount_H_ +#define _AddGrpB_MsgCount_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AddGrpB_MsgCount */ +typedef long AddGrpB_MsgCount_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AddGrpB_MsgCount; +asn_struct_free_f AddGrpB_MsgCount_free; +asn_struct_print_f AddGrpB_MsgCount_print; +asn_constr_check_f AddGrpB_MsgCount_constraint; +ber_type_decoder_f AddGrpB_MsgCount_decode_ber; +der_type_encoder_f AddGrpB_MsgCount_encode_der; +xer_type_decoder_f AddGrpB_MsgCount_decode_xer; +xer_type_encoder_f AddGrpB_MsgCount_encode_xer; +oer_type_decoder_f AddGrpB_MsgCount_decode_oer; +oer_type_encoder_f AddGrpB_MsgCount_encode_oer; +per_type_decoder_f AddGrpB_MsgCount_decode_uper; +per_type_encoder_f AddGrpB_MsgCount_encode_uper; +per_type_decoder_f AddGrpB_MsgCount_decode_aper; +per_type_encoder_f AddGrpB_MsgCount_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AddGrpB_MsgCount_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_TimeMark.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_TimeMark.h new file mode 100644 index 000000000..e58042735 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AddGrpB_TimeMark.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _AddGrpB_TimeMark_H_ +#define _AddGrpB_TimeMark_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Year.h" +#include "Month.h" +#include "Day.h" +#include "SummerTime.h" +#include "Holiday.h" +#include "AddGrpB_DayOfWeek.h" +#include "Hour.h" +#include "Minute.h" +#include "Second.h" +#include "TenthSecond.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AddGrpB_TimeMark */ +typedef struct AddGrpB_TimeMark { + Year_t year; + Month_t month; + Day_t day; + SummerTime_t summerTime; + Holiday_t holiday; + AddGrpB_DayOfWeek_t dayofWeek; + Hour_t hour; + Minute_t minute; + Second_t second; + TenthSecond_t tenthSecond; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AddGrpB_TimeMark_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AddGrpB_TimeMark; + +#ifdef __cplusplus +} +#endif + +#endif /* _AddGrpB_TimeMark_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AdvisorySpeed.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AdvisorySpeed.h new file mode 100644 index 000000000..7a9feeccc --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AdvisorySpeed.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AdvisorySpeed_H_ +#define _AdvisorySpeed_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "AdvisorySpeedType.h" +#include "SpeedAdvice.h" +#include "SpeedConfidence.h" +#include "ZoneLength.h" +#include "RestrictionClassID.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_AdvisorySpeed; + +/* AdvisorySpeed */ +typedef struct AdvisorySpeed { + AdvisorySpeedType_t type; + SpeedAdvice_t *speed; /* OPTIONAL */ + SpeedConfidence_t *confidence; /* OPTIONAL */ + ZoneLength_t *distance; /* OPTIONAL */ + RestrictionClassID_t *Class; /* OPTIONAL */ + struct AdvisorySpeed__regional { + A_SEQUENCE_OF(struct Reg_AdvisorySpeed) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AdvisorySpeed_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AdvisorySpeed; +extern asn_SEQUENCE_specifics_t asn_SPC_AdvisorySpeed_specs_1; +extern asn_TYPE_member_t asn_MBR_AdvisorySpeed_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _AdvisorySpeed_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AdvisorySpeedList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AdvisorySpeedList.h new file mode 100644 index 000000000..9960f97f7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AdvisorySpeedList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AdvisorySpeedList_H_ +#define _AdvisorySpeedList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct AdvisorySpeed; + +/* AdvisorySpeedList */ +typedef struct AdvisorySpeedList { + A_SEQUENCE_OF(struct AdvisorySpeed) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AdvisorySpeedList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AdvisorySpeedList; +extern asn_SET_OF_specifics_t asn_SPC_AdvisorySpeedList_specs_1; +extern asn_TYPE_member_t asn_MBR_AdvisorySpeedList_1[1]; +extern asn_per_constraints_t asn_PER_type_AdvisorySpeedList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "AdvisorySpeed.h" + +#endif /* _AdvisorySpeedList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AdvisorySpeedType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AdvisorySpeedType.h new file mode 100644 index 000000000..499ec3b36 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AdvisorySpeedType.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AdvisorySpeedType_H_ +#define _AdvisorySpeedType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AdvisorySpeedType { + AdvisorySpeedType_none = 0, + AdvisorySpeedType_greenwave = 1, + AdvisorySpeedType_ecoDrive = 2, + AdvisorySpeedType_transit = 3 + /* + * Enumeration is extensible + */ +} e_AdvisorySpeedType; + +/* AdvisorySpeedType */ +typedef long AdvisorySpeedType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AdvisorySpeedType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AdvisorySpeedType; +extern const asn_INTEGER_specifics_t asn_SPC_AdvisorySpeedType_specs_1; +asn_struct_free_f AdvisorySpeedType_free; +asn_struct_print_f AdvisorySpeedType_print; +asn_constr_check_f AdvisorySpeedType_constraint; +ber_type_decoder_f AdvisorySpeedType_decode_ber; +der_type_encoder_f AdvisorySpeedType_encode_der; +xer_type_decoder_f AdvisorySpeedType_decode_xer; +xer_type_encoder_f AdvisorySpeedType_encode_xer; +oer_type_decoder_f AdvisorySpeedType_decode_oer; +oer_type_encoder_f AdvisorySpeedType_encode_oer; +per_type_decoder_f AdvisorySpeedType_decode_uper; +per_type_encoder_f AdvisorySpeedType_encode_uper; +per_type_decoder_f AdvisorySpeedType_decode_aper; +per_type_encoder_f AdvisorySpeedType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdvisorySpeedType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AllowedManeuvers.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AllowedManeuvers.h new file mode 100644 index 000000000..a506d67b3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AllowedManeuvers.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AllowedManeuvers_H_ +#define _AllowedManeuvers_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AllowedManeuvers { + AllowedManeuvers_maneuverStraightAllowed = 0, + AllowedManeuvers_maneuverLeftAllowed = 1, + AllowedManeuvers_maneuverRightAllowed = 2, + AllowedManeuvers_maneuverUTurnAllowed = 3, + AllowedManeuvers_maneuverLeftTurnOnRedAllowed = 4, + AllowedManeuvers_maneuverRightTurnOnRedAllowed = 5, + AllowedManeuvers_maneuverLaneChangeAllowed = 6, + AllowedManeuvers_maneuverNoStoppingAllowed = 7, + AllowedManeuvers_yieldAllwaysRequired = 8, + AllowedManeuvers_goWithHalt = 9, + AllowedManeuvers_caution = 10, + AllowedManeuvers_reserved1 = 11 +} e_AllowedManeuvers; + +/* AllowedManeuvers */ +typedef BIT_STRING_t AllowedManeuvers_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AllowedManeuvers_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AllowedManeuvers; +asn_struct_free_f AllowedManeuvers_free; +asn_struct_print_f AllowedManeuvers_print; +asn_constr_check_f AllowedManeuvers_constraint; +ber_type_decoder_f AllowedManeuvers_decode_ber; +der_type_encoder_f AllowedManeuvers_encode_der; +xer_type_decoder_f AllowedManeuvers_decode_xer; +xer_type_encoder_f AllowedManeuvers_encode_xer; +oer_type_decoder_f AllowedManeuvers_decode_oer; +oer_type_encoder_f AllowedManeuvers_encode_oer; +per_type_decoder_f AllowedManeuvers_decode_uper; +per_type_encoder_f AllowedManeuvers_encode_uper; +per_type_decoder_f AllowedManeuvers_decode_aper; +per_type_encoder_f AllowedManeuvers_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AllowedManeuvers_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Altitude.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Altitude.h new file mode 100644 index 000000000..693751b62 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Altitude.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Altitude_H_ +#define _Altitude_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "AltitudeValue.h" +#include "AltitudeConfidence.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Altitude */ +typedef struct Altitude { + AltitudeValue_t value; + AltitudeConfidence_t confidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Altitude_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Altitude; +extern asn_SEQUENCE_specifics_t asn_SPC_Altitude_specs_1; +extern asn_TYPE_member_t asn_MBR_Altitude_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Altitude_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AltitudeConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AltitudeConfidence.h new file mode 100644 index 000000000..3dfd126c3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AltitudeConfidence.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AltitudeConfidence_H_ +#define _AltitudeConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AltitudeConfidence { + AltitudeConfidence_alt_000_01 = 0, + AltitudeConfidence_alt_000_02 = 1, + AltitudeConfidence_alt_000_05 = 2, + AltitudeConfidence_alt_000_10 = 3, + AltitudeConfidence_alt_000_20 = 4, + AltitudeConfidence_alt_000_50 = 5, + AltitudeConfidence_alt_001_00 = 6, + AltitudeConfidence_alt_002_00 = 7, + AltitudeConfidence_alt_005_00 = 8, + AltitudeConfidence_alt_010_00 = 9, + AltitudeConfidence_alt_020_00 = 10, + AltitudeConfidence_alt_050_00 = 11, + AltitudeConfidence_alt_100_00 = 12, + AltitudeConfidence_alt_200_00 = 13, + AltitudeConfidence_outOfRange = 14, + AltitudeConfidence_unavailable = 15 +} e_AltitudeConfidence; + +/* AltitudeConfidence */ +typedef long AltitudeConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AltitudeConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AltitudeConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_AltitudeConfidence_specs_1; +asn_struct_free_f AltitudeConfidence_free; +asn_struct_print_f AltitudeConfidence_print; +asn_constr_check_f AltitudeConfidence_constraint; +ber_type_decoder_f AltitudeConfidence_decode_ber; +der_type_encoder_f AltitudeConfidence_encode_der; +xer_type_decoder_f AltitudeConfidence_decode_xer; +xer_type_encoder_f AltitudeConfidence_encode_xer; +oer_type_decoder_f AltitudeConfidence_decode_oer; +oer_type_encoder_f AltitudeConfidence_encode_oer; +per_type_decoder_f AltitudeConfidence_decode_uper; +per_type_encoder_f AltitudeConfidence_encode_uper; +per_type_decoder_f AltitudeConfidence_decode_aper; +per_type_encoder_f AltitudeConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AltitudeConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AltitudeValue.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AltitudeValue.h new file mode 100644 index 000000000..ac79c2393 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AltitudeValue.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AltitudeValue_H_ +#define _AltitudeValue_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AltitudeValue */ +typedef long AltitudeValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AltitudeValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AltitudeValue; +asn_struct_free_f AltitudeValue_free; +asn_struct_print_f AltitudeValue_print; +asn_constr_check_f AltitudeValue_constraint; +ber_type_decoder_f AltitudeValue_decode_ber; +der_type_encoder_f AltitudeValue_encode_der; +xer_type_decoder_f AltitudeValue_decode_xer; +xer_type_encoder_f AltitudeValue_encode_xer; +oer_type_decoder_f AltitudeValue_decode_oer; +oer_type_encoder_f AltitudeValue_encode_oer; +per_type_decoder_f AltitudeValue_decode_uper; +per_type_encoder_f AltitudeValue_encode_uper; +per_type_decoder_f AltitudeValue_decode_aper; +per_type_encoder_f AltitudeValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AltitudeValue_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AmbientAirPressure.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AmbientAirPressure.h new file mode 100644 index 000000000..6ba006510 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AmbientAirPressure.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AmbientAirPressure_H_ +#define _AmbientAirPressure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AmbientAirPressure */ +typedef long AmbientAirPressure_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AmbientAirPressure_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AmbientAirPressure; +asn_struct_free_f AmbientAirPressure_free; +asn_struct_print_f AmbientAirPressure_print; +asn_constr_check_f AmbientAirPressure_constraint; +ber_type_decoder_f AmbientAirPressure_decode_ber; +der_type_encoder_f AmbientAirPressure_encode_der; +xer_type_decoder_f AmbientAirPressure_decode_xer; +xer_type_encoder_f AmbientAirPressure_encode_xer; +oer_type_decoder_f AmbientAirPressure_decode_oer; +oer_type_encoder_f AmbientAirPressure_encode_oer; +per_type_decoder_f AmbientAirPressure_decode_uper; +per_type_encoder_f AmbientAirPressure_encode_uper; +per_type_decoder_f AmbientAirPressure_decode_aper; +per_type_encoder_f AmbientAirPressure_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AmbientAirPressure_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AmbientAirTemperature.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AmbientAirTemperature.h new file mode 100644 index 000000000..a06696d39 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AmbientAirTemperature.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AmbientAirTemperature_H_ +#define _AmbientAirTemperature_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AmbientAirTemperature */ +typedef long AmbientAirTemperature_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AmbientAirTemperature_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AmbientAirTemperature; +asn_struct_free_f AmbientAirTemperature_free; +asn_struct_print_f AmbientAirTemperature_print; +asn_constr_check_f AmbientAirTemperature_constraint; +ber_type_decoder_f AmbientAirTemperature_decode_ber; +der_type_encoder_f AmbientAirTemperature_encode_der; +xer_type_decoder_f AmbientAirTemperature_decode_xer; +xer_type_encoder_f AmbientAirTemperature_encode_xer; +oer_type_decoder_f AmbientAirTemperature_decode_oer; +oer_type_encoder_f AmbientAirTemperature_encode_oer; +per_type_decoder_f AmbientAirTemperature_decode_uper; +per_type_encoder_f AmbientAirTemperature_encode_uper; +per_type_decoder_f AmbientAirTemperature_decode_aper; +per_type_encoder_f AmbientAirTemperature_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AmbientAirTemperature_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AngularVelocity.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AngularVelocity.h new file mode 100644 index 000000000..2cb35471e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AngularVelocity.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _AngularVelocity_H_ +#define _AngularVelocity_H_ + + +#include + +/* Including external dependencies */ +#include "PitchRate.h" +#include "RollRate.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* AngularVelocity */ +typedef struct AngularVelocity { + PitchRate_t pitchRate; + RollRate_t rollRate; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AngularVelocity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AngularVelocity; +extern asn_SEQUENCE_specifics_t asn_SPC_AngularVelocity_specs_1; +extern asn_TYPE_member_t asn_MBR_AngularVelocity_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AngularVelocity_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AngularVelocityConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AngularVelocityConfidence.h new file mode 100644 index 000000000..e1d1e73f1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AngularVelocityConfidence.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _AngularVelocityConfidence_H_ +#define _AngularVelocityConfidence_H_ + + +#include + +/* Including external dependencies */ +#include "PitchRateConfidence.h" +#include "RollRateConfidence.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* AngularVelocityConfidence */ +typedef struct AngularVelocityConfidence { + PitchRateConfidence_t *pitchRateConfidence /* OPTIONAL */; + RollRateConfidence_t *rollRateConfidence /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AngularVelocityConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AngularVelocityConfidence; +extern asn_SEQUENCE_specifics_t asn_SPC_AngularVelocityConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_AngularVelocityConfidence_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AngularVelocityConfidence_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AnimalPropelledType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AnimalPropelledType.h new file mode 100644 index 000000000..635d2c369 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AnimalPropelledType.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AnimalPropelledType_H_ +#define _AnimalPropelledType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AnimalPropelledType { + AnimalPropelledType_unavailable = 0, + AnimalPropelledType_otherTypes = 1, + AnimalPropelledType_animalMounted = 2, + AnimalPropelledType_animalDrawnCarriage = 3 + /* + * Enumeration is extensible + */ +} e_AnimalPropelledType; + +/* AnimalPropelledType */ +typedef long AnimalPropelledType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AnimalPropelledType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AnimalPropelledType; +extern const asn_INTEGER_specifics_t asn_SPC_AnimalPropelledType_specs_1; +asn_struct_free_f AnimalPropelledType_free; +asn_struct_print_f AnimalPropelledType_print; +asn_constr_check_f AnimalPropelledType_constraint; +ber_type_decoder_f AnimalPropelledType_decode_ber; +der_type_encoder_f AnimalPropelledType_encode_der; +xer_type_decoder_f AnimalPropelledType_decode_xer; +xer_type_encoder_f AnimalPropelledType_encode_xer; +oer_type_decoder_f AnimalPropelledType_decode_oer; +oer_type_encoder_f AnimalPropelledType_encode_oer; +per_type_decoder_f AnimalPropelledType_decode_uper; +per_type_encoder_f AnimalPropelledType_encode_uper; +per_type_decoder_f AnimalPropelledType_decode_aper; +per_type_encoder_f AnimalPropelledType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AnimalPropelledType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AnimalType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AnimalType.h new file mode 100644 index 000000000..d30f739e4 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AnimalType.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AnimalType_H_ +#define _AnimalType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AnimalType { + AnimalType_unavailable = 0, + AnimalType_serviceUse = 1, + AnimalType_pet = 2, + AnimalType_farm = 3 + /* + * Enumeration is extensible + */ +} e_AnimalType; + +/* AnimalType */ +typedef long AnimalType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AnimalType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AnimalType; +extern const asn_INTEGER_specifics_t asn_SPC_AnimalType_specs_1; +asn_struct_free_f AnimalType_free; +asn_struct_print_f AnimalType_print; +asn_constr_check_f AnimalType_constraint; +ber_type_decoder_f AnimalType_decode_ber; +der_type_encoder_f AnimalType_encode_der; +xer_type_decoder_f AnimalType_decode_xer; +xer_type_encoder_f AnimalType_encode_xer; +oer_type_decoder_f AnimalType_decode_oer; +oer_type_encoder_f AnimalType_encode_oer; +per_type_decoder_f AnimalType_decode_uper; +per_type_encoder_f AnimalType_encode_uper; +per_type_decoder_f AnimalType_decode_aper; +per_type_encoder_f AnimalType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AnimalType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AntennaOffsetSet.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AntennaOffsetSet.h new file mode 100644 index 000000000..7bfeace78 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AntennaOffsetSet.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AntennaOffsetSet_H_ +#define _AntennaOffsetSet_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Offset-B12.h" +#include "Offset-B09.h" +#include "Offset-B10.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AntennaOffsetSet */ +typedef struct AntennaOffsetSet { + Offset_B12_t antOffsetX; + Offset_B09_t antOffsetY; + Offset_B10_t antOffsetZ; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AntennaOffsetSet_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AntennaOffsetSet; +extern asn_SEQUENCE_specifics_t asn_SPC_AntennaOffsetSet_specs_1; +extern asn_TYPE_member_t asn_MBR_AntennaOffsetSet_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AntennaOffsetSet_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AntiLockBrakeStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AntiLockBrakeStatus.h new file mode 100644 index 000000000..f327d29f8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AntiLockBrakeStatus.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AntiLockBrakeStatus_H_ +#define _AntiLockBrakeStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AntiLockBrakeStatus { + AntiLockBrakeStatus_unavailable = 0, + AntiLockBrakeStatus_off = 1, + AntiLockBrakeStatus_on = 2, + AntiLockBrakeStatus_engaged = 3 +} e_AntiLockBrakeStatus; + +/* AntiLockBrakeStatus */ +typedef long AntiLockBrakeStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AntiLockBrakeStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AntiLockBrakeStatus; +extern const asn_INTEGER_specifics_t asn_SPC_AntiLockBrakeStatus_specs_1; +asn_struct_free_f AntiLockBrakeStatus_free; +asn_struct_print_f AntiLockBrakeStatus_print; +asn_constr_check_f AntiLockBrakeStatus_constraint; +ber_type_decoder_f AntiLockBrakeStatus_decode_ber; +der_type_encoder_f AntiLockBrakeStatus_encode_der; +xer_type_decoder_f AntiLockBrakeStatus_decode_xer; +xer_type_encoder_f AntiLockBrakeStatus_encode_xer; +oer_type_decoder_f AntiLockBrakeStatus_decode_oer; +oer_type_encoder_f AntiLockBrakeStatus_encode_oer; +per_type_decoder_f AntiLockBrakeStatus_decode_uper; +per_type_encoder_f AntiLockBrakeStatus_encode_uper; +per_type_decoder_f AntiLockBrakeStatus_decode_aper; +per_type_encoder_f AntiLockBrakeStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AntiLockBrakeStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ApproachID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ApproachID.h new file mode 100644 index 000000000..16154a41b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ApproachID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ApproachID_H_ +#define _ApproachID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ApproachID */ +typedef long ApproachID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ApproachID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ApproachID; +asn_struct_free_f ApproachID_free; +asn_struct_print_f ApproachID_print; +asn_constr_check_f ApproachID_constraint; +ber_type_decoder_f ApproachID_decode_ber; +der_type_encoder_f ApproachID_encode_der; +xer_type_decoder_f ApproachID_decode_xer; +xer_type_encoder_f ApproachID_encode_xer; +oer_type_decoder_f ApproachID_decode_oer; +oer_type_encoder_f ApproachID_encode_oer; +per_type_decoder_f ApproachID_decode_uper; +per_type_encoder_f ApproachID_encode_uper; +per_type_decoder_f ApproachID_decode_aper; +per_type_encoder_f ApproachID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ApproachID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ApproachOrLane.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ApproachOrLane.h new file mode 100644 index 000000000..affbc06ea --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ApproachOrLane.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "IntersectionCollision" + * found in "J2735-IntersectionCollision.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ApproachOrLane_H_ +#define _ApproachOrLane_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ApproachID.h" +#include "LaneID.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ApproachOrLane_PR { + ApproachOrLane_PR_NOTHING, /* No components present */ + ApproachOrLane_PR_approach, + ApproachOrLane_PR_lane +} ApproachOrLane_PR; + +/* ApproachOrLane */ +typedef struct ApproachOrLane { + ApproachOrLane_PR present; + union ApproachOrLane_u { + ApproachID_t approach; + LaneID_t lane; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ApproachOrLane_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ApproachOrLane; +extern asn_CHOICE_specifics_t asn_SPC_ApproachOrLane_specs_1; +extern asn_TYPE_member_t asn_MBR_ApproachOrLane_1[2]; +extern asn_per_constraints_t asn_PER_type_ApproachOrLane_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ApproachOrLane_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Attachment.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Attachment.h new file mode 100644 index 000000000..3018e64c6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Attachment.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Attachment_H_ +#define _Attachment_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Attachment { + Attachment_unavailable = 0, + Attachment_stroller = 1, + Attachment_bicycleTrailer = 2, + Attachment_cart = 3, + Attachment_wheelchair = 4, + Attachment_otherWalkAssistAttachments = 5, + Attachment_pet = 6 + /* + * Enumeration is extensible + */ +} e_Attachment; + +/* Attachment */ +typedef long Attachment_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Attachment_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Attachment; +extern const asn_INTEGER_specifics_t asn_SPC_Attachment_specs_1; +asn_struct_free_f Attachment_free; +asn_struct_print_f Attachment_print; +asn_constr_check_f Attachment_constraint; +ber_type_decoder_f Attachment_decode_ber; +der_type_encoder_f Attachment_encode_der; +xer_type_decoder_f Attachment_decode_xer; +xer_type_encoder_f Attachment_encode_xer; +oer_type_decoder_f Attachment_decode_oer; +oer_type_encoder_f Attachment_encode_oer; +per_type_decoder_f Attachment_decode_uper; +per_type_encoder_f Attachment_encode_uper; +per_type_decoder_f Attachment_decode_aper; +per_type_encoder_f Attachment_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Attachment_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AttachmentRadius.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AttachmentRadius.h new file mode 100644 index 000000000..72994d11b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AttachmentRadius.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AttachmentRadius_H_ +#define _AttachmentRadius_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AttachmentRadius */ +typedef long AttachmentRadius_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AttachmentRadius_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AttachmentRadius; +asn_struct_free_f AttachmentRadius_free; +asn_struct_print_f AttachmentRadius_print; +asn_constr_check_f AttachmentRadius_constraint; +ber_type_decoder_f AttachmentRadius_decode_ber; +der_type_encoder_f AttachmentRadius_encode_der; +xer_type_decoder_f AttachmentRadius_decode_xer; +xer_type_encoder_f AttachmentRadius_encode_xer; +oer_type_decoder_f AttachmentRadius_decode_oer; +oer_type_encoder_f AttachmentRadius_encode_oer; +per_type_decoder_f AttachmentRadius_decode_uper; +per_type_encoder_f AttachmentRadius_encode_uper; +per_type_decoder_f AttachmentRadius_decode_aper; +per_type_encoder_f AttachmentRadius_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AttachmentRadius_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Attitude.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Attitude.h new file mode 100644 index 000000000..b2316ff61 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Attitude.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _Attitude_H_ +#define _Attitude_H_ + + +#include + +/* Including external dependencies */ +#include "PitchDetected.h" +#include "RollDetected.h" +#include "YawDetected.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Attitude */ +typedef struct Attitude { + PitchDetected_t pitch; + RollDetected_t roll; + YawDetected_t yaw; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Attitude_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Attitude; +extern asn_SEQUENCE_specifics_t asn_SPC_Attitude_specs_1; +extern asn_TYPE_member_t asn_MBR_Attitude_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Attitude_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AttitudeConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AttitudeConfidence.h new file mode 100644 index 000000000..b6377270b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AttitudeConfidence.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _AttitudeConfidence_H_ +#define _AttitudeConfidence_H_ + + +#include + +/* Including external dependencies */ +#include "HeadingConfidence.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* AttitudeConfidence */ +typedef struct AttitudeConfidence { + HeadingConfidence_t pitchConfidence; + HeadingConfidence_t rollConfidence; + HeadingConfidence_t yawConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AttitudeConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AttitudeConfidence; +extern asn_SEQUENCE_specifics_t asn_SPC_AttitudeConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_AttitudeConfidence_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AttitudeConfidence_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AuxiliaryBrakeStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AuxiliaryBrakeStatus.h new file mode 100644 index 000000000..02a73a46d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AuxiliaryBrakeStatus.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AuxiliaryBrakeStatus_H_ +#define _AuxiliaryBrakeStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AuxiliaryBrakeStatus { + AuxiliaryBrakeStatus_unavailable = 0, + AuxiliaryBrakeStatus_off = 1, + AuxiliaryBrakeStatus_on = 2, + AuxiliaryBrakeStatus_reserved = 3 +} e_AuxiliaryBrakeStatus; + +/* AuxiliaryBrakeStatus */ +typedef long AuxiliaryBrakeStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AuxiliaryBrakeStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AuxiliaryBrakeStatus; +extern const asn_INTEGER_specifics_t asn_SPC_AuxiliaryBrakeStatus_specs_1; +asn_struct_free_f AuxiliaryBrakeStatus_free; +asn_struct_print_f AuxiliaryBrakeStatus_print; +asn_constr_check_f AuxiliaryBrakeStatus_constraint; +ber_type_decoder_f AuxiliaryBrakeStatus_decode_ber; +der_type_encoder_f AuxiliaryBrakeStatus_encode_der; +xer_type_decoder_f AuxiliaryBrakeStatus_decode_xer; +xer_type_encoder_f AuxiliaryBrakeStatus_encode_xer; +oer_type_decoder_f AuxiliaryBrakeStatus_decode_oer; +oer_type_encoder_f AuxiliaryBrakeStatus_encode_oer; +per_type_decoder_f AuxiliaryBrakeStatus_decode_uper; +per_type_encoder_f AuxiliaryBrakeStatus_encode_uper; +per_type_decoder_f AuxiliaryBrakeStatus_decode_aper; +per_type_encoder_f AuxiliaryBrakeStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AuxiliaryBrakeStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleLocation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleLocation.h new file mode 100644 index 000000000..eda63cb68 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleLocation.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AxleLocation_H_ +#define _AxleLocation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AxleLocation */ +typedef long AxleLocation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AxleLocation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AxleLocation; +asn_struct_free_f AxleLocation_free; +asn_struct_print_f AxleLocation_print; +asn_constr_check_f AxleLocation_constraint; +ber_type_decoder_f AxleLocation_decode_ber; +der_type_encoder_f AxleLocation_encode_der; +xer_type_decoder_f AxleLocation_decode_xer; +xer_type_encoder_f AxleLocation_encode_xer; +oer_type_decoder_f AxleLocation_decode_oer; +oer_type_encoder_f AxleLocation_encode_oer; +per_type_decoder_f AxleLocation_decode_uper; +per_type_encoder_f AxleLocation_encode_uper; +per_type_decoder_f AxleLocation_decode_aper; +per_type_encoder_f AxleLocation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AxleLocation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleWeight.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleWeight.h new file mode 100644 index 000000000..b943195aa --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleWeight.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AxleWeight_H_ +#define _AxleWeight_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AxleWeight */ +typedef long AxleWeight_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AxleWeight_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AxleWeight; +asn_struct_free_f AxleWeight_free; +asn_struct_print_f AxleWeight_print; +asn_constr_check_f AxleWeight_constraint; +ber_type_decoder_f AxleWeight_decode_ber; +der_type_encoder_f AxleWeight_encode_der; +xer_type_decoder_f AxleWeight_decode_xer; +xer_type_encoder_f AxleWeight_encode_xer; +oer_type_decoder_f AxleWeight_decode_oer; +oer_type_encoder_f AxleWeight_encode_oer; +per_type_decoder_f AxleWeight_decode_uper; +per_type_encoder_f AxleWeight_encode_uper; +per_type_decoder_f AxleWeight_decode_aper; +per_type_encoder_f AxleWeight_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AxleWeight_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleWeightList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleWeightList.h new file mode 100644 index 000000000..f38b832c3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleWeightList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AxleWeightList_H_ +#define _AxleWeightList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct AxleWeightSet; + +/* AxleWeightList */ +typedef struct AxleWeightList { + A_SEQUENCE_OF(struct AxleWeightSet) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AxleWeightList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AxleWeightList; +extern asn_SET_OF_specifics_t asn_SPC_AxleWeightList_specs_1; +extern asn_TYPE_member_t asn_MBR_AxleWeightList_1[1]; +extern asn_per_constraints_t asn_PER_type_AxleWeightList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "AxleWeightSet.h" + +#endif /* _AxleWeightList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleWeightSet.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleWeightSet.h new file mode 100644 index 000000000..34d204c34 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/AxleWeightSet.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _AxleWeightSet_H_ +#define _AxleWeightSet_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "AxleLocation.h" +#include "AxleWeight.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AxleWeightSet */ +typedef struct AxleWeightSet { + AxleLocation_t *location; /* OPTIONAL */ + AxleWeight_t *weight; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AxleWeightSet_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AxleWeightSet; +extern asn_SEQUENCE_specifics_t asn_SPC_AxleWeightSet_specs_1; +extern asn_TYPE_member_t asn_MBR_AxleWeightSet_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AxleWeightSet_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BIT_STRING.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BIT_STRING.h new file mode 100644 index 000000000..e755fe9f5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BIT_STRING.h @@ -0,0 +1,75 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BIT_STRING_H_ +#define _BIT_STRING_H_ + +#include /* Some help from OCTET STRING */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct BIT_STRING_s { + uint8_t *buf; /* BIT STRING body */ + size_t size; /* Size of the above buffer */ + + int bits_unused;/* Unused trailing bits in the last octet (0..7) */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} BIT_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING; +extern asn_TYPE_operation_t asn_OP_BIT_STRING; +extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs; + +#define BIT_STRING_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f BIT_STRING_print; /* Human-readable output */ +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f BIT_STRING_compare; + +asn_constr_check_f BIT_STRING_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define BIT_STRING_decode_ber OCTET_STRING_decode_ber +#define BIT_STRING_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary +xer_type_encoder_f BIT_STRING_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f BIT_STRING_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f BIT_STRING_decode_oer; +oer_type_encoder_f BIT_STRING_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f BIT_STRING_decode_uper; +per_type_encoder_f BIT_STRING_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define BIT_STRING_decode_aper OCTET_STRING_decode_aper +#define BIT_STRING_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f BIT_STRING_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +const BIT_STRING_t *BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp); + +#ifdef __cplusplus +} +#endif + +#endif /* _BIT_STRING_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BMPString.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BMPString.h new file mode 100644 index 000000000..198b9e5e6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BMPString.h @@ -0,0 +1,37 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BMPString_H_ +#define _BMPString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t BMPString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_BMPString; +extern asn_TYPE_operation_t asn_OP_BMPString; +extern asn_OCTET_STRING_specifics_t asn_SPC_BMPString_specs; + +asn_struct_print_f BMPString_print; /* Human-readable output */ +xer_type_decoder_f BMPString_decode_xer; +xer_type_encoder_f BMPString_encode_xer; + +#define BMPString_free OCTET_STRING_free +#define BMPString_print BMPString_print +#define BMPString_compare OCTET_STRING_compare +#define BMPString_constraint asn_generic_no_constraint +#define BMPString_decode_ber OCTET_STRING_decode_ber +#define BMPString_encode_der OCTET_STRING_encode_der +#define BMPString_decode_uper OCTET_STRING_decode_uper +#define BMPString_encode_uper OCTET_STRING_encode_uper + +#ifdef __cplusplus +} +#endif + +#endif /* _BMPString_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BOOLEAN.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BOOLEAN.h new file mode 100644 index 000000000..2cbbe7101 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BOOLEAN.h @@ -0,0 +1,70 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BOOLEAN_H_ +#define _BOOLEAN_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The underlying integer may contain various values, but everything + * non-zero is capped to 0xff by the DER encoder. The BER decoder may + * yield non-zero values different from 1, beware. + */ +typedef unsigned BOOLEAN_t; + +extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN; +extern asn_TYPE_operation_t asn_OP_BOOLEAN; + +asn_struct_free_f BOOLEAN_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f BOOLEAN_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f BOOLEAN_compare; + +#define BOOLEAN_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f BOOLEAN_decode_ber; +der_type_encoder_f BOOLEAN_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f BOOLEAN_decode_xer; +xer_type_encoder_f BOOLEAN_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f BOOLEAN_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f BOOLEAN_decode_oer; +oer_type_encoder_f BOOLEAN_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f BOOLEAN_decode_uper; +per_type_encoder_f BOOLEAN_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f BOOLEAN_decode_aper; +per_type_encoder_f BOOLEAN_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f BOOLEAN_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _BOOLEAN_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BSMcoreData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BSMcoreData.h new file mode 100644 index 000000000..61e8e3a1f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BSMcoreData.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _BSMcoreData_H_ +#define _BSMcoreData_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Common_MsgCount.h" +#include "TemporaryID.h" +#include "DSecond.h" +#include "Latitude.h" +#include "Longitude.h" +#include "Common_Elevation.h" +#include "PositionalAccuracy.h" +#include "TransmissionState.h" +#include "Speed.h" +#include "Heading.h" +#include "SteeringWheelAngle.h" +#include "AccelerationSet4Way.h" +#include "BrakeSystemStatus.h" +#include "VehicleSize.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BSMcoreData */ +typedef struct BSMcoreData { + Common_MsgCount_t msgCnt; + TemporaryID_t id; + DSecond_t secMark; + Latitude_t lat; + Longitude_t Long; + Common_Elevation_t elev; + PositionalAccuracy_t accuracy; + TransmissionState_t transmission; + Speed_t speed; + Heading_t heading; + SteeringWheelAngle_t angle; + AccelerationSet4Way_t accelSet; + BrakeSystemStatus_t brakes; + VehicleSize_t size; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BSMcoreData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BSMcoreData; +extern asn_SEQUENCE_specifics_t asn_SPC_BSMcoreData_specs_1; +extern asn_TYPE_member_t asn_MBR_BSMcoreData_1[14]; + +#ifdef __cplusplus +} +#endif + +#endif /* _BSMcoreData_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicSafetyMessage-addGrpCarma.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicSafetyMessage-addGrpCarma.h new file mode 100644 index 000000000..2eb779f66 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicSafetyMessage-addGrpCarma.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpCarma" + * found in "J2735_201603_2022-11-21.asn" + * `asn1c -fcompound-names -D ../include/generated/` + */ + +#ifndef _BasicSafetyMessage_addGrpCarma_H_ +#define _BasicSafetyMessage_addGrpCarma_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Position3D_addGrpCarma; + +/* BasicSafetyMessage-addGrpCarma */ +typedef struct BasicSafetyMessage_addGrpCarma { + struct BasicSafetyMessage_addGrpCarma__routeDestinationPoints { + A_SEQUENCE_OF(struct Position3D_addGrpCarma) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *routeDestinationPoints; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BasicSafetyMessage_addGrpCarma_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BasicSafetyMessage_addGrpCarma; +extern asn_SEQUENCE_specifics_t asn_SPC_BasicSafetyMessage_addGrpCarma_specs_1; +extern asn_TYPE_member_t asn_MBR_BasicSafetyMessage_addGrpCarma_1[1]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Position3D-addGrpCarma.h" + +#endif /* _BasicSafetyMessage_addGrpCarma_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicSafetyMessage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicSafetyMessage.h new file mode 100644 index 000000000..94a582858 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicSafetyMessage.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _BasicSafetyMessage_H_ +#define _BasicSafetyMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BSMcoreData.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct BSMpartIIExtension; +struct Reg_BasicSafetyMessage; + +/* BasicSafetyMessage */ +typedef struct BasicSafetyMessage { + BSMcoreData_t coreData; + struct BasicSafetyMessage__partII { + A_SEQUENCE_OF(struct BSMpartIIExtension) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *partII; + struct BasicSafetyMessage__regional { + A_SEQUENCE_OF(struct Reg_BasicSafetyMessage) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BasicSafetyMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BasicSafetyMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_BasicSafetyMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_BasicSafetyMessage_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "PartIIcontent.h" +#include "RegionalExtension.h" + +#endif /* _BasicSafetyMessage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicVehicleClass.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicVehicleClass.h new file mode 100644 index 000000000..db177d620 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicVehicleClass.h @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _BasicVehicleClass_H_ +#define _BasicVehicleClass_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BasicVehicleClass */ +typedef long BasicVehicleClass_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BasicVehicleClass_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BasicVehicleClass; +asn_struct_free_f BasicVehicleClass_free; +asn_struct_print_f BasicVehicleClass_print; +asn_constr_check_f BasicVehicleClass_constraint; +ber_type_decoder_f BasicVehicleClass_decode_ber; +der_type_encoder_f BasicVehicleClass_encode_der; +xer_type_decoder_f BasicVehicleClass_decode_xer; +xer_type_encoder_f BasicVehicleClass_encode_xer; +oer_type_decoder_f BasicVehicleClass_decode_oer; +oer_type_encoder_f BasicVehicleClass_encode_oer; +per_type_decoder_f BasicVehicleClass_decode_uper; +per_type_encoder_f BasicVehicleClass_encode_uper; +per_type_decoder_f BasicVehicleClass_decode_aper; +per_type_encoder_f BasicVehicleClass_encode_aper; +#define BasicVehicleClass_unknownVehicleClass ((BasicVehicleClass_t)0) +#define BasicVehicleClass_specialVehicleClass ((BasicVehicleClass_t)1) +#define BasicVehicleClass_passenger_Vehicle_TypeUnknown ((BasicVehicleClass_t)10) +#define BasicVehicleClass_passenger_Vehicle_TypeOther ((BasicVehicleClass_t)11) +#define BasicVehicleClass_lightTruck_Vehicle_TypeUnknown ((BasicVehicleClass_t)20) +#define BasicVehicleClass_lightTruck_Vehicle_TypeOther ((BasicVehicleClass_t)21) +#define BasicVehicleClass_truck_Vehicle_TypeUnknown ((BasicVehicleClass_t)25) +#define BasicVehicleClass_truck_Vehicle_TypeOther ((BasicVehicleClass_t)26) +#define BasicVehicleClass_truck_axleCnt2 ((BasicVehicleClass_t)27) +#define BasicVehicleClass_truck_axleCnt3 ((BasicVehicleClass_t)28) +#define BasicVehicleClass_truck_axleCnt4 ((BasicVehicleClass_t)29) +#define BasicVehicleClass_truck_axleCnt4Trailer ((BasicVehicleClass_t)30) +#define BasicVehicleClass_truck_axleCnt5Trailer ((BasicVehicleClass_t)31) +#define BasicVehicleClass_truck_axleCnt6Trailer ((BasicVehicleClass_t)32) +#define BasicVehicleClass_truck_axleCnt5MultiTrailer ((BasicVehicleClass_t)33) +#define BasicVehicleClass_truck_axleCnt6MultiTrailer ((BasicVehicleClass_t)34) +#define BasicVehicleClass_truck_axleCnt7MultiTrailer ((BasicVehicleClass_t)35) +#define BasicVehicleClass_motorcycle_TypeUnknown ((BasicVehicleClass_t)40) +#define BasicVehicleClass_motorcycle_TypeOther ((BasicVehicleClass_t)41) +#define BasicVehicleClass_motorcycle_Cruiser_Standard ((BasicVehicleClass_t)42) +#define BasicVehicleClass_motorcycle_SportUnclad ((BasicVehicleClass_t)43) +#define BasicVehicleClass_motorcycle_SportTouring ((BasicVehicleClass_t)44) +#define BasicVehicleClass_motorcycle_SuperSport ((BasicVehicleClass_t)45) +#define BasicVehicleClass_motorcycle_Touring ((BasicVehicleClass_t)46) +#define BasicVehicleClass_motorcycle_Trike ((BasicVehicleClass_t)47) +#define BasicVehicleClass_motorcycle_wPassengers ((BasicVehicleClass_t)48) +#define BasicVehicleClass_transit_TypeUnknown ((BasicVehicleClass_t)50) +#define BasicVehicleClass_transit_TypeOther ((BasicVehicleClass_t)51) +#define BasicVehicleClass_transit_BRT ((BasicVehicleClass_t)52) +#define BasicVehicleClass_transit_ExpressBus ((BasicVehicleClass_t)53) +#define BasicVehicleClass_transit_LocalBus ((BasicVehicleClass_t)54) +#define BasicVehicleClass_transit_SchoolBus ((BasicVehicleClass_t)55) +#define BasicVehicleClass_transit_FixedGuideway ((BasicVehicleClass_t)56) +#define BasicVehicleClass_transit_Paratransit ((BasicVehicleClass_t)57) +#define BasicVehicleClass_transit_Paratransit_Ambulance ((BasicVehicleClass_t)58) +#define BasicVehicleClass_emergency_TypeUnknown ((BasicVehicleClass_t)60) +#define BasicVehicleClass_emergency_TypeOther ((BasicVehicleClass_t)61) +#define BasicVehicleClass_emergency_Fire_Light_Vehicle ((BasicVehicleClass_t)62) +#define BasicVehicleClass_emergency_Fire_Heavy_Vehicle ((BasicVehicleClass_t)63) +#define BasicVehicleClass_emergency_Fire_Paramedic_Vehicle ((BasicVehicleClass_t)64) +#define BasicVehicleClass_emergency_Fire_Ambulance_Vehicle ((BasicVehicleClass_t)65) +#define BasicVehicleClass_emergency_Police_Light_Vehicle ((BasicVehicleClass_t)66) +#define BasicVehicleClass_emergency_Police_Heavy_Vehicle ((BasicVehicleClass_t)67) +#define BasicVehicleClass_emergency_Other_Responder ((BasicVehicleClass_t)68) +#define BasicVehicleClass_emergency_Other_Ambulance ((BasicVehicleClass_t)69) +#define BasicVehicleClass_otherTraveler_TypeUnknown ((BasicVehicleClass_t)80) +#define BasicVehicleClass_otherTraveler_TypeOther ((BasicVehicleClass_t)81) +#define BasicVehicleClass_otherTraveler_Pedestrian ((BasicVehicleClass_t)82) +#define BasicVehicleClass_otherTraveler_Visually_Disabled ((BasicVehicleClass_t)83) +#define BasicVehicleClass_otherTraveler_Physically_Disabled ((BasicVehicleClass_t)84) +#define BasicVehicleClass_otherTraveler_Bicycle ((BasicVehicleClass_t)85) +#define BasicVehicleClass_otherTraveler_Vulnerable_Roadworker ((BasicVehicleClass_t)86) +#define BasicVehicleClass_infrastructure_TypeUnknown ((BasicVehicleClass_t)90) +#define BasicVehicleClass_infrastructure_Fixed ((BasicVehicleClass_t)91) +#define BasicVehicleClass_infrastructure_Movable ((BasicVehicleClass_t)92) +#define BasicVehicleClass_equipped_CargoTrailer ((BasicVehicleClass_t)93) + +#ifdef __cplusplus +} +#endif + +#endif /* _BasicVehicleClass_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicVehicleRole.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicVehicleRole.h new file mode 100644 index 000000000..892f8a33c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BasicVehicleRole.h @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _BasicVehicleRole_H_ +#define _BasicVehicleRole_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BasicVehicleRole { + BasicVehicleRole_basicVehicle = 0, + BasicVehicleRole_publicTransport = 1, + BasicVehicleRole_specialTransport = 2, + BasicVehicleRole_dangerousGoods = 3, + BasicVehicleRole_roadWork = 4, + BasicVehicleRole_roadRescue = 5, + BasicVehicleRole_emergency = 6, + BasicVehicleRole_safetyCar = 7, + BasicVehicleRole_none_unknown = 8, + BasicVehicleRole_truck = 9, + BasicVehicleRole_motorcycle = 10, + BasicVehicleRole_roadSideSource = 11, + BasicVehicleRole_police = 12, + BasicVehicleRole_fire = 13, + BasicVehicleRole_ambulance = 14, + BasicVehicleRole_dot = 15, + BasicVehicleRole_transit = 16, + BasicVehicleRole_slowMoving = 17, + BasicVehicleRole_stopNgo = 18, + BasicVehicleRole_cyclist = 19, + BasicVehicleRole_pedestrian = 20, + BasicVehicleRole_nonMotorized = 21, + BasicVehicleRole_military = 22 + /* + * Enumeration is extensible + */ +} e_BasicVehicleRole; + +/* BasicVehicleRole */ +typedef long BasicVehicleRole_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BasicVehicleRole_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BasicVehicleRole; +extern const asn_INTEGER_specifics_t asn_SPC_BasicVehicleRole_specs_1; +asn_struct_free_f BasicVehicleRole_free; +asn_struct_print_f BasicVehicleRole_print; +asn_constr_check_f BasicVehicleRole_constraint; +ber_type_decoder_f BasicVehicleRole_decode_ber; +der_type_encoder_f BasicVehicleRole_encode_der; +xer_type_decoder_f BasicVehicleRole_decode_xer; +xer_type_encoder_f BasicVehicleRole_encode_xer; +oer_type_decoder_f BasicVehicleRole_decode_oer; +oer_type_encoder_f BasicVehicleRole_encode_oer; +per_type_decoder_f BasicVehicleRole_decode_uper; +per_type_encoder_f BasicVehicleRole_encode_uper; +per_type_decoder_f BasicVehicleRole_decode_aper; +per_type_encoder_f BasicVehicleRole_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BasicVehicleRole_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeAppliedPressure.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeAppliedPressure.h new file mode 100644 index 000000000..3cc4a6118 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeAppliedPressure.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _BrakeAppliedPressure_H_ +#define _BrakeAppliedPressure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BrakeAppliedPressure { + BrakeAppliedPressure_unavailable = 0, + BrakeAppliedPressure_minPressure = 1, + BrakeAppliedPressure_bkLvl_2 = 2, + BrakeAppliedPressure_bkLvl_3 = 3, + BrakeAppliedPressure_bkLvl_4 = 4, + BrakeAppliedPressure_bkLvl_5 = 5, + BrakeAppliedPressure_bkLvl_6 = 6, + BrakeAppliedPressure_bkLvl_7 = 7, + BrakeAppliedPressure_bkLvl_8 = 8, + BrakeAppliedPressure_bkLvl_9 = 9, + BrakeAppliedPressure_bkLvl_10 = 10, + BrakeAppliedPressure_bkLvl_11 = 11, + BrakeAppliedPressure_bkLvl_12 = 12, + BrakeAppliedPressure_bkLvl_13 = 13, + BrakeAppliedPressure_bkLvl_14 = 14, + BrakeAppliedPressure_maxPressure = 15 +} e_BrakeAppliedPressure; + +/* BrakeAppliedPressure */ +typedef long BrakeAppliedPressure_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BrakeAppliedPressure_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BrakeAppliedPressure; +extern const asn_INTEGER_specifics_t asn_SPC_BrakeAppliedPressure_specs_1; +asn_struct_free_f BrakeAppliedPressure_free; +asn_struct_print_f BrakeAppliedPressure_print; +asn_constr_check_f BrakeAppliedPressure_constraint; +ber_type_decoder_f BrakeAppliedPressure_decode_ber; +der_type_encoder_f BrakeAppliedPressure_encode_der; +xer_type_decoder_f BrakeAppliedPressure_decode_xer; +xer_type_encoder_f BrakeAppliedPressure_encode_xer; +oer_type_decoder_f BrakeAppliedPressure_decode_oer; +oer_type_encoder_f BrakeAppliedPressure_encode_oer; +per_type_decoder_f BrakeAppliedPressure_decode_uper; +per_type_encoder_f BrakeAppliedPressure_encode_uper; +per_type_decoder_f BrakeAppliedPressure_decode_aper; +per_type_encoder_f BrakeAppliedPressure_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BrakeAppliedPressure_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeAppliedStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeAppliedStatus.h new file mode 100644 index 000000000..c7fe5faec --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeAppliedStatus.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _BrakeAppliedStatus_H_ +#define _BrakeAppliedStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BrakeAppliedStatus { + BrakeAppliedStatus_unavailable = 0, + BrakeAppliedStatus_leftFront = 1, + BrakeAppliedStatus_leftRear = 2, + BrakeAppliedStatus_rightFront = 3, + BrakeAppliedStatus_rightRear = 4 +} e_BrakeAppliedStatus; + +/* BrakeAppliedStatus */ +typedef BIT_STRING_t BrakeAppliedStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BrakeAppliedStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BrakeAppliedStatus; +asn_struct_free_f BrakeAppliedStatus_free; +asn_struct_print_f BrakeAppliedStatus_print; +asn_constr_check_f BrakeAppliedStatus_constraint; +ber_type_decoder_f BrakeAppliedStatus_decode_ber; +der_type_encoder_f BrakeAppliedStatus_encode_der; +xer_type_decoder_f BrakeAppliedStatus_decode_xer; +xer_type_encoder_f BrakeAppliedStatus_encode_xer; +oer_type_decoder_f BrakeAppliedStatus_decode_oer; +oer_type_encoder_f BrakeAppliedStatus_encode_oer; +per_type_decoder_f BrakeAppliedStatus_decode_uper; +per_type_encoder_f BrakeAppliedStatus_encode_uper; +per_type_decoder_f BrakeAppliedStatus_decode_aper; +per_type_encoder_f BrakeAppliedStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BrakeAppliedStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeBoostApplied.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeBoostApplied.h new file mode 100644 index 000000000..e89e1c7f7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeBoostApplied.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _BrakeBoostApplied_H_ +#define _BrakeBoostApplied_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BrakeBoostApplied { + BrakeBoostApplied_unavailable = 0, + BrakeBoostApplied_off = 1, + BrakeBoostApplied_on = 2 +} e_BrakeBoostApplied; + +/* BrakeBoostApplied */ +typedef long BrakeBoostApplied_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BrakeBoostApplied_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BrakeBoostApplied; +extern const asn_INTEGER_specifics_t asn_SPC_BrakeBoostApplied_specs_1; +asn_struct_free_f BrakeBoostApplied_free; +asn_struct_print_f BrakeBoostApplied_print; +asn_constr_check_f BrakeBoostApplied_constraint; +ber_type_decoder_f BrakeBoostApplied_decode_ber; +der_type_encoder_f BrakeBoostApplied_encode_der; +xer_type_decoder_f BrakeBoostApplied_decode_xer; +xer_type_encoder_f BrakeBoostApplied_encode_xer; +oer_type_decoder_f BrakeBoostApplied_decode_oer; +oer_type_encoder_f BrakeBoostApplied_encode_oer; +per_type_decoder_f BrakeBoostApplied_decode_uper; +per_type_encoder_f BrakeBoostApplied_encode_uper; +per_type_decoder_f BrakeBoostApplied_decode_aper; +per_type_encoder_f BrakeBoostApplied_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BrakeBoostApplied_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeSystemStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeSystemStatus.h new file mode 100644 index 000000000..c064f4414 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BrakeSystemStatus.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _BrakeSystemStatus_H_ +#define _BrakeSystemStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BrakeAppliedStatus.h" +#include "TractionControlStatus.h" +#include "AntiLockBrakeStatus.h" +#include "StabilityControlStatus.h" +#include "BrakeBoostApplied.h" +#include "AuxiliaryBrakeStatus.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BrakeSystemStatus */ +typedef struct BrakeSystemStatus { + BrakeAppliedStatus_t wheelBrakes; + TractionControlStatus_t traction; + AntiLockBrakeStatus_t abs; + StabilityControlStatus_t scs; + BrakeBoostApplied_t brakeBoost; + AuxiliaryBrakeStatus_t auxBrakes; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BrakeSystemStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BrakeSystemStatus; +extern asn_SEQUENCE_specifics_t asn_SPC_BrakeSystemStatus_specs_1; +extern asn_TYPE_member_t asn_MBR_BrakeSystemStatus_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _BrakeSystemStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BumperHeight.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BumperHeight.h new file mode 100644 index 000000000..517212067 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BumperHeight.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _BumperHeight_H_ +#define _BumperHeight_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BumperHeight */ +typedef long BumperHeight_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BumperHeight_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BumperHeight; +asn_struct_free_f BumperHeight_free; +asn_struct_print_f BumperHeight_print; +asn_constr_check_f BumperHeight_constraint; +ber_type_decoder_f BumperHeight_decode_ber; +der_type_encoder_f BumperHeight_encode_der; +xer_type_decoder_f BumperHeight_decode_xer; +xer_type_encoder_f BumperHeight_encode_xer; +oer_type_decoder_f BumperHeight_decode_oer; +oer_type_encoder_f BumperHeight_encode_oer; +per_type_decoder_f BumperHeight_decode_uper; +per_type_encoder_f BumperHeight_encode_uper; +per_type_decoder_f BumperHeight_decode_aper; +per_type_encoder_f BumperHeight_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BumperHeight_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/BumperHeights.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BumperHeights.h new file mode 100644 index 000000000..d320d983f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/BumperHeights.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _BumperHeights_H_ +#define _BumperHeights_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BumperHeight.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BumperHeights */ +typedef struct BumperHeights { + BumperHeight_t front; + BumperHeight_t rear; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BumperHeights_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BumperHeights; +extern asn_SEQUENCE_specifics_t asn_SPC_BumperHeights_specs_1; +extern asn_TYPE_member_t asn_MBR_BumperHeights_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _BumperHeights_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/CargoWeight.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/CargoWeight.h new file mode 100644 index 000000000..2d2354c80 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/CargoWeight.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _CargoWeight_H_ +#define _CargoWeight_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CargoWeight */ +typedef long CargoWeight_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CargoWeight_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CargoWeight; +asn_struct_free_f CargoWeight_free; +asn_struct_print_f CargoWeight_print; +asn_constr_check_f CargoWeight_constraint; +ber_type_decoder_f CargoWeight_decode_ber; +der_type_encoder_f CargoWeight_encode_der; +xer_type_decoder_f CargoWeight_decode_xer; +xer_type_encoder_f CargoWeight_encode_xer; +oer_type_decoder_f CargoWeight_decode_oer; +oer_type_encoder_f CargoWeight_encode_oer; +per_type_decoder_f CargoWeight_decode_uper; +per_type_encoder_f CargoWeight_encode_uper; +per_type_decoder_f CargoWeight_decode_aper; +per_type_encoder_f CargoWeight_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CargoWeight_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Circle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Circle.h new file mode 100644 index 000000000..3688617d1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Circle.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Circle_H_ +#define _Circle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Position3D.h" +#include "Radius-B12.h" +#include "DistanceUnits.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Circle */ +typedef struct Circle { + Position3D_t center; + Radius_B12_t radius; + DistanceUnits_t units; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Circle_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Circle; +extern asn_SEQUENCE_specifics_t asn_SPC_Circle_specs_1; +extern asn_TYPE_member_t asn_MBR_Circle_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Circle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ClassificationConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ClassificationConfidence.h new file mode 100644 index 000000000..155280700 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ClassificationConfidence.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _ClassificationConfidence_H_ +#define _ClassificationConfidence_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ClassificationConfidence */ +typedef long ClassificationConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ClassificationConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ClassificationConfidence; +asn_struct_free_f ClassificationConfidence_free; +asn_struct_print_f ClassificationConfidence_print; +asn_constr_check_f ClassificationConfidence_constraint; +ber_type_decoder_f ClassificationConfidence_decode_ber; +der_type_encoder_f ClassificationConfidence_encode_der; +xer_type_decoder_f ClassificationConfidence_decode_xer; +xer_type_encoder_f ClassificationConfidence_encode_xer; +oer_type_decoder_f ClassificationConfidence_decode_oer; +oer_type_encoder_f ClassificationConfidence_encode_oer; +per_type_decoder_f ClassificationConfidence_decode_uper; +per_type_encoder_f ClassificationConfidence_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ClassificationConfidence_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/CoarseHeading.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/CoarseHeading.h new file mode 100644 index 000000000..dca305e55 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/CoarseHeading.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _CoarseHeading_H_ +#define _CoarseHeading_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CoarseHeading */ +typedef long CoarseHeading_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CoarseHeading_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CoarseHeading; +asn_struct_free_f CoarseHeading_free; +asn_struct_print_f CoarseHeading_print; +asn_constr_check_f CoarseHeading_constraint; +ber_type_decoder_f CoarseHeading_decode_ber; +der_type_encoder_f CoarseHeading_encode_der; +xer_type_decoder_f CoarseHeading_decode_xer; +xer_type_encoder_f CoarseHeading_encode_xer; +oer_type_decoder_f CoarseHeading_decode_oer; +oer_type_encoder_f CoarseHeading_encode_oer; +per_type_decoder_f CoarseHeading_decode_uper; +per_type_encoder_f CoarseHeading_encode_uper; +per_type_decoder_f CoarseHeading_decode_aper; +per_type_encoder_f CoarseHeading_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoarseHeading_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/CodeWord.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/CodeWord.h new file mode 100644 index 000000000..088f2d0da --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/CodeWord.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _CodeWord_H_ +#define _CodeWord_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CodeWord */ +typedef OCTET_STRING_t CodeWord_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CodeWord; +asn_struct_free_f CodeWord_free; +asn_struct_print_f CodeWord_print; +asn_constr_check_f CodeWord_constraint; +ber_type_decoder_f CodeWord_decode_ber; +der_type_encoder_f CodeWord_encode_der; +xer_type_decoder_f CodeWord_decode_xer; +xer_type_encoder_f CodeWord_encode_xer; +oer_type_decoder_f CodeWord_decode_oer; +oer_type_encoder_f CodeWord_encode_oer; +per_type_decoder_f CodeWord_decode_uper; +per_type_encoder_f CodeWord_encode_uper; +per_type_decoder_f CodeWord_decode_aper; +per_type_encoder_f CodeWord_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CodeWord_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/CoefficientOfFriction.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/CoefficientOfFriction.h new file mode 100644 index 000000000..28f99afb1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/CoefficientOfFriction.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _CoefficientOfFriction_H_ +#define _CoefficientOfFriction_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CoefficientOfFriction */ +typedef long CoefficientOfFriction_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CoefficientOfFriction_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CoefficientOfFriction; +asn_struct_free_f CoefficientOfFriction_free; +asn_struct_print_f CoefficientOfFriction_print; +asn_constr_check_f CoefficientOfFriction_constraint; +ber_type_decoder_f CoefficientOfFriction_decode_ber; +der_type_encoder_f CoefficientOfFriction_encode_der; +xer_type_decoder_f CoefficientOfFriction_decode_xer; +xer_type_encoder_f CoefficientOfFriction_encode_xer; +oer_type_decoder_f CoefficientOfFriction_decode_oer; +oer_type_encoder_f CoefficientOfFriction_encode_oer; +per_type_decoder_f CoefficientOfFriction_decode_uper; +per_type_encoder_f CoefficientOfFriction_encode_uper; +per_type_decoder_f CoefficientOfFriction_decode_aper; +per_type_encoder_f CoefficientOfFriction_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoefficientOfFriction_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/CommonSafetyRequest.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/CommonSafetyRequest.h new file mode 100644 index 000000000..bdfa50017 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/CommonSafetyRequest.h @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "CommonSafetyRequest" + * found in "J2735-CommonSafetyRequest.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _CommonSafetyRequest_H_ +#define _CommonSafetyRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MinuteOfTheYear.h" +#include "Common_MsgCount.h" +#include "TemporaryID.h" +#include "RequestedItemList.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_CommonSafetyRequest; + +/* CommonSafetyRequest */ +typedef struct CommonSafetyRequest { + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + Common_MsgCount_t *msgCnt; /* OPTIONAL */ + TemporaryID_t *id; /* OPTIONAL */ + RequestedItemList_t requests; + struct CommonSafetyRequest__regional { + A_SEQUENCE_OF(struct Reg_CommonSafetyRequest) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CommonSafetyRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CommonSafetyRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_CommonSafetyRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_CommonSafetyRequest_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _CommonSafetyRequest_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Common_Angle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Common_Angle.h new file mode 100644 index 000000000..98a865511 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Common_Angle.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Common_Angle_H_ +#define _Common_Angle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Common_Angle */ +typedef long Common_Angle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Common_Angle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Common_Angle; +asn_struct_free_f Common_Angle_free; +asn_struct_print_f Common_Angle_print; +asn_constr_check_f Common_Angle_constraint; +ber_type_decoder_f Common_Angle_decode_ber; +der_type_encoder_f Common_Angle_encode_der; +xer_type_decoder_f Common_Angle_decode_xer; +xer_type_encoder_f Common_Angle_encode_xer; +oer_type_decoder_f Common_Angle_decode_oer; +oer_type_encoder_f Common_Angle_encode_oer; +per_type_decoder_f Common_Angle_decode_uper; +per_type_encoder_f Common_Angle_encode_uper; +per_type_decoder_f Common_Angle_decode_aper; +per_type_encoder_f Common_Angle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Common_Angle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Common_Elevation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Common_Elevation.h new file mode 100644 index 000000000..cf5925ca5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Common_Elevation.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Common_Elevation_H_ +#define _Common_Elevation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Common_Elevation */ +typedef long Common_Elevation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Common_Elevation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Common_Elevation; +asn_struct_free_f Common_Elevation_free; +asn_struct_print_f Common_Elevation_print; +asn_constr_check_f Common_Elevation_constraint; +ber_type_decoder_f Common_Elevation_decode_ber; +der_type_encoder_f Common_Elevation_encode_der; +xer_type_decoder_f Common_Elevation_decode_xer; +xer_type_encoder_f Common_Elevation_encode_xer; +oer_type_decoder_f Common_Elevation_decode_oer; +oer_type_encoder_f Common_Elevation_encode_oer; +per_type_decoder_f Common_Elevation_decode_uper; +per_type_encoder_f Common_Elevation_encode_uper; +per_type_decoder_f Common_Elevation_decode_aper; +per_type_encoder_f Common_Elevation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Common_Elevation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Common_MsgCount.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Common_MsgCount.h new file mode 100644 index 000000000..aed312877 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Common_MsgCount.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Common_MsgCount_H_ +#define _Common_MsgCount_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Common_MsgCount */ +typedef long Common_MsgCount_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Common_MsgCount_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Common_MsgCount; +asn_struct_free_f Common_MsgCount_free; +asn_struct_print_f Common_MsgCount_print; +asn_constr_check_f Common_MsgCount_constraint; +ber_type_decoder_f Common_MsgCount_decode_ber; +der_type_encoder_f Common_MsgCount_encode_der; +xer_type_decoder_f Common_MsgCount_decode_xer; +xer_type_encoder_f Common_MsgCount_encode_xer; +oer_type_decoder_f Common_MsgCount_decode_oer; +oer_type_encoder_f Common_MsgCount_encode_oer; +per_type_decoder_f Common_MsgCount_decode_uper; +per_type_encoder_f Common_MsgCount_encode_uper; +per_type_decoder_f Common_MsgCount_decode_aper; +per_type_encoder_f Common_MsgCount_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Common_MsgCount_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ComputedLane.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ComputedLane.h new file mode 100644 index 000000000..9e127c5c1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ComputedLane.h @@ -0,0 +1,98 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ComputedLane_H_ +#define _ComputedLane_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LaneID.h" +#include "Common_Angle.h" +#include "Scale-B12.h" +#include "DrivenLineOffsetSm.h" +#include "DrivenLineOffsetLg.h" +#include "constr_CHOICE.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ComputedLane__offsetXaxis_PR { + ComputedLane__offsetXaxis_PR_NOTHING, /* No components present */ + ComputedLane__offsetXaxis_PR_small, + ComputedLane__offsetXaxis_PR_large +} ComputedLane__offsetXaxis_PR; +typedef enum ComputedLane__offsetYaxis_PR { + ComputedLane__offsetYaxis_PR_NOTHING, /* No components present */ + ComputedLane__offsetYaxis_PR_small, + ComputedLane__offsetYaxis_PR_large +} ComputedLane__offsetYaxis_PR; + +/* Forward declarations */ +struct Reg_ComputedLane; + +/* ComputedLane */ +typedef struct ComputedLane { + LaneID_t referenceLaneId; + struct ComputedLane__offsetXaxis { + ComputedLane__offsetXaxis_PR present; + union ComputedLane__offsetXaxis_u { + DrivenLineOffsetSm_t small; + DrivenLineOffsetLg_t large; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } offsetXaxis; + struct ComputedLane__offsetYaxis { + ComputedLane__offsetYaxis_PR present; + union ComputedLane__offsetYaxis_u { + DrivenLineOffsetSm_t small; + DrivenLineOffsetLg_t large; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } offsetYaxis; + Common_Angle_t *rotateXY; /* OPTIONAL */ + Scale_B12_t *scaleXaxis; /* OPTIONAL */ + Scale_B12_t *scaleYaxis; /* OPTIONAL */ + struct ComputedLane__regional { + A_SEQUENCE_OF(struct Reg_ComputedLane) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ComputedLane_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ComputedLane; +extern asn_SEQUENCE_specifics_t asn_SPC_ComputedLane_specs_1; +extern asn_TYPE_member_t asn_MBR_ComputedLane_1[7]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _ComputedLane_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Confidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Confidence.h new file mode 100644 index 000000000..31b3ac066 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Confidence.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Confidence_H_ +#define _Confidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Confidence */ +typedef long Confidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Confidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Confidence; +asn_struct_free_f Confidence_free; +asn_struct_print_f Confidence_print; +asn_constr_check_f Confidence_constraint; +ber_type_decoder_f Confidence_decode_ber; +der_type_encoder_f Confidence_encode_der; +xer_type_decoder_f Confidence_decode_xer; +xer_type_encoder_f Confidence_encode_xer; +oer_type_decoder_f Confidence_decode_oer; +oer_type_encoder_f Confidence_encode_oer; +per_type_decoder_f Confidence_decode_uper; +per_type_encoder_f Confidence_encode_uper; +per_type_decoder_f Confidence_decode_aper; +per_type_encoder_f Confidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Confidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConfidenceSet.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConfidenceSet.h new file mode 100644 index 000000000..377a1a672 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConfidenceSet.h @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ConfidenceSet_H_ +#define _ConfidenceSet_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TimeConfidence.h" +#include "SteeringWheelAngleConfidence.h" +#include "HeadingConfidence.h" +#include "ThrottleConfidence.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct AccelSteerYawRateConfidence; +struct SpeedandHeadingandThrottleConfidence; +struct PositionConfidenceSet; + +/* ConfidenceSet */ +typedef struct ConfidenceSet { + struct AccelSteerYawRateConfidence *accelConfidence; /* OPTIONAL */ + struct SpeedandHeadingandThrottleConfidence *speedConfidence; /* OPTIONAL */ + TimeConfidence_t *timeConfidence; /* OPTIONAL */ + struct PositionConfidenceSet *posConfidence; /* OPTIONAL */ + SteeringWheelAngleConfidence_t *steerConfidence; /* OPTIONAL */ + HeadingConfidence_t *headingConfidence; /* OPTIONAL */ + ThrottleConfidence_t *throttleConfidence; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ConfidenceSet_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ConfidenceSet; +extern asn_SEQUENCE_specifics_t asn_SPC_ConfidenceSet_specs_1; +extern asn_TYPE_member_t asn_MBR_ConfidenceSet_1[7]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "AccelSteerYawRateConfidence.h" +#include "SpeedandHeadingandThrottleConfidence.h" +#include "PositionConfidenceSet.h" + +#endif /* _ConfidenceSet_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectingLane.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectingLane.h new file mode 100644 index 000000000..380caebc9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectingLane.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ConnectingLane_H_ +#define _ConnectingLane_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LaneID.h" +#include "AllowedManeuvers.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ConnectingLane */ +typedef struct ConnectingLane { + LaneID_t lane; + AllowedManeuvers_t *maneuver; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ConnectingLane_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ConnectingLane; +extern asn_SEQUENCE_specifics_t asn_SPC_ConnectingLane_specs_1; +extern asn_TYPE_member_t asn_MBR_ConnectingLane_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ConnectingLane_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Connection.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Connection.h new file mode 100644 index 000000000..325a41923 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Connection.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Connection_H_ +#define _Connection_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ConnectingLane.h" +#include "SignalGroupID.h" +#include "RestrictionClassID.h" +#include "LaneConnectionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IntersectionReferenceID; + +/* Connection */ +typedef struct Connection { + ConnectingLane_t connectingLane; + struct IntersectionReferenceID *remoteIntersection; /* OPTIONAL */ + SignalGroupID_t *signalGroup; /* OPTIONAL */ + RestrictionClassID_t *userClass; /* OPTIONAL */ + LaneConnectionID_t *connectionID; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Connection_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Connection; +extern asn_SEQUENCE_specifics_t asn_SPC_Connection_specs_1; +extern asn_TYPE_member_t asn_MBR_Connection_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IntersectionReferenceID.h" + +#endif /* _Connection_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectionManeuverAssist-addGrpC.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectionManeuverAssist-addGrpC.h new file mode 100644 index 000000000..0bf9081a4 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectionManeuverAssist-addGrpC.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ConnectionManeuverAssist_addGrpC_H_ +#define _ConnectionManeuverAssist_addGrpC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "VehicleToLanePositionList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NodeOffsetPointXY; + +/* ConnectionManeuverAssist-addGrpC */ +typedef struct ConnectionManeuverAssist_addGrpC { + VehicleToLanePositionList_t vehicleToLanePositions; + struct NodeOffsetPointXY *rsuDistanceFromAnchor; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ConnectionManeuverAssist_addGrpC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ConnectionManeuverAssist_addGrpC; +extern asn_SEQUENCE_specifics_t asn_SPC_ConnectionManeuverAssist_addGrpC_specs_1; +extern asn_TYPE_member_t asn_MBR_ConnectionManeuverAssist_addGrpC_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "NodeOffsetPointXY.h" + +#endif /* _ConnectionManeuverAssist_addGrpC_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectionManeuverAssist.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectionManeuverAssist.h new file mode 100644 index 000000000..d79b8b408 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectionManeuverAssist.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ConnectionManeuverAssist_H_ +#define _ConnectionManeuverAssist_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LaneConnectionID.h" +#include "ZoneLength.h" +#include "WaitOnStopline.h" +#include "PedestrianBicycleDetect.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_ConnectionManeuverAssist; + +/* ConnectionManeuverAssist */ +typedef struct ConnectionManeuverAssist { + LaneConnectionID_t connectionID; + ZoneLength_t *queueLength; /* OPTIONAL */ + ZoneLength_t *availableStorageLength; /* OPTIONAL */ + WaitOnStopline_t *waitOnStop; /* OPTIONAL */ + PedestrianBicycleDetect_t *pedBicycleDetect; /* OPTIONAL */ + struct ConnectionManeuverAssist__regional { + A_SEQUENCE_OF(struct Reg_ConnectionManeuverAssist) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ConnectionManeuverAssist_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ConnectionManeuverAssist; +extern asn_SEQUENCE_specifics_t asn_SPC_ConnectionManeuverAssist_specs_1; +extern asn_TYPE_member_t asn_MBR_ConnectionManeuverAssist_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _ConnectionManeuverAssist_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectsToList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectsToList.h new file mode 100644 index 000000000..2878837aa --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ConnectsToList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ConnectsToList_H_ +#define _ConnectsToList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Connection; + +/* ConnectsToList */ +typedef struct ConnectsToList { + A_SEQUENCE_OF(struct Connection) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ConnectsToList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ConnectsToList; +extern asn_SET_OF_specifics_t asn_SPC_ConnectsToList_specs_1; +extern asn_TYPE_member_t asn_MBR_ConnectsToList_1[1]; +extern asn_per_constraints_t asn_PER_type_ConnectsToList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Connection.h" + +#endif /* _ConnectsToList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Count.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Count.h new file mode 100644 index 000000000..1f191434f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Count.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Count_H_ +#define _Count_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Count */ +typedef long Count_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Count; +asn_struct_free_f Count_free; +asn_struct_print_f Count_print; +asn_constr_check_f Count_constraint; +ber_type_decoder_f Count_decode_ber; +der_type_encoder_f Count_encode_der; +xer_type_decoder_f Count_decode_xer; +xer_type_encoder_f Count_encode_xer; +oer_type_decoder_f Count_decode_oer; +oer_type_encoder_f Count_encode_oer; +per_type_decoder_f Count_decode_uper; +per_type_encoder_f Count_encode_uper; +per_type_decoder_f Count_decode_aper; +per_type_encoder_f Count_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Count_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DDate.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DDate.h new file mode 100644 index 000000000..545998e9f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DDate.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DDate_H_ +#define _DDate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DYear.h" +#include "DMonth.h" +#include "DDay.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DDate */ +typedef struct DDate { + DYear_t year; + DMonth_t month; + DDay_t day; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DDate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DDate; + +#ifdef __cplusplus +} +#endif + +#endif /* _DDate_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DDateTime.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DDateTime.h new file mode 100644 index 000000000..9d187f099 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DDateTime.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DDateTime_H_ +#define _DDateTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DYear.h" +#include "DMonth.h" +#include "DDay.h" +#include "DHour.h" +#include "DMinute.h" +#include "DSecond.h" +#include "DOffset.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DDateTime */ +typedef struct DDateTime { + DYear_t *year; /* OPTIONAL */ + DMonth_t *month; /* OPTIONAL */ + DDay_t *day; /* OPTIONAL */ + DHour_t *hour; /* OPTIONAL */ + DMinute_t *minute; /* OPTIONAL */ + DSecond_t *second; /* OPTIONAL */ + DOffset_t *offset; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DDateTime_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DDateTime; +extern asn_SEQUENCE_specifics_t asn_SPC_DDateTime_specs_1; +extern asn_TYPE_member_t asn_MBR_DDateTime_1[7]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DDateTime_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DDay.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DDay.h new file mode 100644 index 000000000..6b7ecf671 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DDay.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DDay_H_ +#define _DDay_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DDay */ +typedef long DDay_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DDay_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DDay; +asn_struct_free_f DDay_free; +asn_struct_print_f DDay_print; +asn_constr_check_f DDay_constraint; +ber_type_decoder_f DDay_decode_ber; +der_type_encoder_f DDay_encode_der; +xer_type_decoder_f DDay_decode_xer; +xer_type_encoder_f DDay_encode_xer; +oer_type_decoder_f DDay_decode_oer; +oer_type_encoder_f DDay_encode_oer; +per_type_decoder_f DDay_decode_uper; +per_type_encoder_f DDay_encode_uper; +per_type_decoder_f DDay_decode_aper; +per_type_encoder_f DDay_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DDay_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DFullTime.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DFullTime.h new file mode 100644 index 000000000..d9b7e5e2f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DFullTime.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DFullTime_H_ +#define _DFullTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DYear.h" +#include "DMonth.h" +#include "DDay.h" +#include "DHour.h" +#include "DMinute.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DFullTime */ +typedef struct DFullTime { + DYear_t year; + DMonth_t month; + DDay_t day; + DHour_t hour; + DMinute_t minute; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DFullTime_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DFullTime; + +#ifdef __cplusplus +} +#endif + +#endif /* _DFullTime_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DHour.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DHour.h new file mode 100644 index 000000000..8e1d0956b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DHour.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DHour_H_ +#define _DHour_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DHour */ +typedef long DHour_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DHour_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DHour; +asn_struct_free_f DHour_free; +asn_struct_print_f DHour_print; +asn_constr_check_f DHour_constraint; +ber_type_decoder_f DHour_decode_ber; +der_type_encoder_f DHour_encode_der; +xer_type_decoder_f DHour_decode_xer; +xer_type_encoder_f DHour_encode_xer; +oer_type_decoder_f DHour_decode_oer; +oer_type_encoder_f DHour_encode_oer; +per_type_decoder_f DHour_decode_uper; +per_type_encoder_f DHour_encode_uper; +per_type_decoder_f DHour_decode_aper; +per_type_encoder_f DHour_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DHour_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DMinute.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DMinute.h new file mode 100644 index 000000000..7cea5dfde --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DMinute.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DMinute_H_ +#define _DMinute_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DMinute */ +typedef long DMinute_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DMinute_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DMinute; +asn_struct_free_f DMinute_free; +asn_struct_print_f DMinute_print; +asn_constr_check_f DMinute_constraint; +ber_type_decoder_f DMinute_decode_ber; +der_type_encoder_f DMinute_encode_der; +xer_type_decoder_f DMinute_decode_xer; +xer_type_encoder_f DMinute_encode_xer; +oer_type_decoder_f DMinute_decode_oer; +oer_type_encoder_f DMinute_encode_oer; +per_type_decoder_f DMinute_decode_uper; +per_type_encoder_f DMinute_encode_uper; +per_type_decoder_f DMinute_decode_aper; +per_type_encoder_f DMinute_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DMinute_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DMonth.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DMonth.h new file mode 100644 index 000000000..d36428350 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DMonth.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DMonth_H_ +#define _DMonth_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DMonth */ +typedef long DMonth_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DMonth_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DMonth; +asn_struct_free_f DMonth_free; +asn_struct_print_f DMonth_print; +asn_constr_check_f DMonth_constraint; +ber_type_decoder_f DMonth_decode_ber; +der_type_encoder_f DMonth_encode_der; +xer_type_decoder_f DMonth_decode_xer; +xer_type_encoder_f DMonth_encode_xer; +oer_type_decoder_f DMonth_decode_oer; +oer_type_encoder_f DMonth_encode_oer; +per_type_decoder_f DMonth_decode_uper; +per_type_encoder_f DMonth_encode_uper; +per_type_decoder_f DMonth_decode_aper; +per_type_encoder_f DMonth_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DMonth_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DMonthDay.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DMonthDay.h new file mode 100644 index 000000000..f37dc5428 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DMonthDay.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DMonthDay_H_ +#define _DMonthDay_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DMonth.h" +#include "DDay.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DMonthDay */ +typedef struct DMonthDay { + DMonth_t month; + DDay_t day; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DMonthDay_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DMonthDay; + +#ifdef __cplusplus +} +#endif + +#endif /* _DMonthDay_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DOffset.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DOffset.h new file mode 100644 index 000000000..16583a947 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DOffset.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DOffset_H_ +#define _DOffset_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DOffset */ +typedef long DOffset_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DOffset_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DOffset; +asn_struct_free_f DOffset_free; +asn_struct_print_f DOffset_print; +asn_constr_check_f DOffset_constraint; +ber_type_decoder_f DOffset_decode_ber; +der_type_encoder_f DOffset_encode_der; +xer_type_decoder_f DOffset_decode_xer; +xer_type_encoder_f DOffset_encode_xer; +oer_type_decoder_f DOffset_decode_oer; +oer_type_encoder_f DOffset_encode_oer; +per_type_decoder_f DOffset_decode_uper; +per_type_encoder_f DOffset_encode_uper; +per_type_decoder_f DOffset_decode_aper; +per_type_encoder_f DOffset_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DOffset_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DSRC_DayOfWeek.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DSRC_DayOfWeek.h new file mode 100644 index 000000000..d826b978d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DSRC_DayOfWeek.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _DSRC_DayOfWeek_H_ +#define _DSRC_DayOfWeek_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DSRC_DayOfWeek { + DSRC_DayOfWeek_sun = 6, + DSRC_DayOfWeek_mon = 5, + DSRC_DayOfWeek_tue = 4, + DSRC_DayOfWeek_wed = 3, + DSRC_DayOfWeek_thu = 2, + DSRC_DayOfWeek_fri = 1, + DSRC_DayOfWeek_sat = 0 +} e_DSRC_DayOfWeek; + +/* DSRC_DayOfWeek */ +typedef BIT_STRING_t DSRC_DayOfWeek_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DSRC_DayOfWeek; +asn_struct_free_f DSRC_DayOfWeek_free; +asn_struct_print_f DSRC_DayOfWeek_print; +asn_constr_check_f DSRC_DayOfWeek_constraint; +ber_type_decoder_f DSRC_DayOfWeek_decode_ber; +der_type_encoder_f DSRC_DayOfWeek_encode_der; +xer_type_decoder_f DSRC_DayOfWeek_decode_xer; +xer_type_encoder_f DSRC_DayOfWeek_encode_xer; +oer_type_decoder_f DSRC_DayOfWeek_decode_oer; +oer_type_encoder_f DSRC_DayOfWeek_encode_oer; +per_type_decoder_f DSRC_DayOfWeek_decode_uper; +per_type_encoder_f DSRC_DayOfWeek_encode_uper; +per_type_decoder_f DSRC_DayOfWeek_decode_aper; +per_type_encoder_f DSRC_DayOfWeek_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DSRC_DayOfWeek_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DSRCmsgID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DSRCmsgID.h new file mode 100644 index 000000000..9e9e399a6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DSRCmsgID.h @@ -0,0 +1,95 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MessageFrame" + * found in "J2735-MessageFrame.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DSRCmsgID_H_ +#define _DSRCmsgID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DSRCmsgID */ +typedef long DSRCmsgID_t; + +/* Implementation */ +// #define DSRCmsgID_reservedMessageId_D ((DSRCmsgID_t)0) +// #define DSRCmsgID_alaCarteMessage_D ((DSRCmsgID_t)1) +// #define DSRCmsgID_basicSafetyMessage_D ((DSRCmsgID_t)2) +// #define DSRCmsgID_basicSafetyMessageVerbose_D ((DSRCmsgID_t)3) +// #define DSRCmsgID_commonSafetyRequest_D ((DSRCmsgID_t)4) +// #define DSRCmsgID_emergencyVehicleAlert_D ((DSRCmsgID_t)5) +// #define DSRCmsgID_intersectionCollision_D ((DSRCmsgID_t)6) +// #define DSRCmsgID_mapData_D ((DSRCmsgID_t)7) +// #define DSRCmsgID_nmeaCorrections_D ((DSRCmsgID_t)8) +// #define DSRCmsgID_probeDataManagement_D ((DSRCmsgID_t)9) +// #define DSRCmsgID_probeVehicleData_D ((DSRCmsgID_t)10) +// #define DSRCmsgID_roadSideAlert_D ((DSRCmsgID_t)11) +// #define DSRCmsgID_rtcmCorrections_D ((DSRCmsgID_t)12) +// #define DSRCmsgID_signalPhaseAndTimingMessage_D ((DSRCmsgID_t)13) +// #define DSRCmsgID_signalRequestMessage_D ((DSRCmsgID_t)14) +// #define DSRCmsgID_signalStatusMessage_D ((DSRCmsgID_t)15) +// #define DSRCmsgID_travelerInformation_D ((DSRCmsgID_t)16) +// #define DSRCmsgID_uperFrame_D ((DSRCmsgID_t)17) +extern asn_per_constraints_t asn_PER_type_DSRCmsgID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DSRCmsgID; +asn_struct_free_f DSRCmsgID_free; +asn_struct_print_f DSRCmsgID_print; +asn_constr_check_f DSRCmsgID_constraint; +ber_type_decoder_f DSRCmsgID_decode_ber; +der_type_encoder_f DSRCmsgID_encode_der; +xer_type_decoder_f DSRCmsgID_decode_xer; +xer_type_encoder_f DSRCmsgID_encode_xer; +oer_type_decoder_f DSRCmsgID_decode_oer; +oer_type_encoder_f DSRCmsgID_encode_oer; +per_type_decoder_f DSRCmsgID_decode_uper; +per_type_encoder_f DSRCmsgID_encode_uper; +per_type_decoder_f DSRCmsgID_decode_aper; +per_type_encoder_f DSRCmsgID_encode_aper; +// #define DSRCmsgID_mapData ((DSRCmsgID_t)18) +// #define DSRCmsgID_signalPhaseAndTimingMessage ((DSRCmsgID_t)19) +// #define DSRCmsgID_basicSafetyMessage ((DSRCmsgID_t)20) +// #define DSRCmsgID_commonSafetyRequest ((DSRCmsgID_t)21) +// #define DSRCmsgID_emergencyVehicleAlert ((DSRCmsgID_t)22) +// #define DSRCmsgID_intersectionCollision ((DSRCmsgID_t)23) +// #define DSRCmsgID_nmeaCorrections ((DSRCmsgID_t)24) +// #define DSRCmsgID_probeDataManagement ((DSRCmsgID_t)25) +// #define DSRCmsgID_probeVehicleData ((DSRCmsgID_t)26) +// #define DSRCmsgID_roadSideAlert ((DSRCmsgID_t)27) +// #define DSRCmsgID_rtcmCorrections ((DSRCmsgID_t)28) +// #define DSRCmsgID_signalRequestMessage ((DSRCmsgID_t)29) +// #define DSRCmsgID_signalStatusMessage ((DSRCmsgID_t)30) +// #define DSRCmsgID_travelerInformation ((DSRCmsgID_t)31) +// #define DSRCmsgID_personalSafetyMessage ((DSRCmsgID_t)32) +// #define DSRCmsgID_testMessage00 ((DSRCmsgID_t)240) +// #define DSRCmsgID_testMessage01 ((DSRCmsgID_t)241) +// #define DSRCmsgID_testMessage02 ((DSRCmsgID_t)242) +// #define DSRCmsgID_testMessage03 ((DSRCmsgID_t)243) +// #define DSRCmsgID_testMessage04 ((DSRCmsgID_t)244) +// #define DSRCmsgID_testMessage05 ((DSRCmsgID_t)245) +// #define DSRCmsgID_testMessage06 ((DSRCmsgID_t)246) +// #define DSRCmsgID_testMessage07 ((DSRCmsgID_t)247) +// #define DSRCmsgID_testMessage08 ((DSRCmsgID_t)248) +// #define DSRCmsgID_testMessage09 ((DSRCmsgID_t)249) +// #define DSRCmsgID_testMessage10 ((DSRCmsgID_t)250) +// #define DSRCmsgID_testMessage11 ((DSRCmsgID_t)251) +// #define DSRCmsgID_testMessage12 ((DSRCmsgID_t)252) +// #define DSRCmsgID_testMessage13 ((DSRCmsgID_t)253) +// #define DSRCmsgID_testMessage14 ((DSRCmsgID_t)254) +// #define DSRCmsgID_testMessage15 ((DSRCmsgID_t)255) + +#ifdef __cplusplus +} +#endif + +#endif /* _DSRCmsgID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DSecond.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DSecond.h new file mode 100644 index 000000000..d5c612139 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DSecond.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DSecond_H_ +#define _DSecond_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DSecond */ +typedef long DSecond_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DSecond_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DSecond; +asn_struct_free_f DSecond_free; +asn_struct_print_f DSecond_print; +asn_constr_check_f DSecond_constraint; +ber_type_decoder_f DSecond_decode_ber; +der_type_encoder_f DSecond_encode_der; +xer_type_decoder_f DSecond_decode_xer; +xer_type_encoder_f DSecond_encode_xer; +oer_type_decoder_f DSecond_decode_oer; +oer_type_encoder_f DSecond_encode_oer; +per_type_decoder_f DSecond_decode_uper; +per_type_encoder_f DSecond_encode_uper; +per_type_decoder_f DSecond_decode_aper; +per_type_encoder_f DSecond_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DSecond_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DTime.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DTime.h new file mode 100644 index 000000000..4a595d033 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DTime.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DTime_H_ +#define _DTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DHour.h" +#include "DMinute.h" +#include "DSecond.h" +#include "DOffset.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DTime */ +typedef struct DTime { + DHour_t hour; + DMinute_t minute; + DSecond_t second; + DOffset_t *offset; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DTime_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DTime; + +#ifdef __cplusplus +} +#endif + +#endif /* _DTime_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DYear.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DYear.h new file mode 100644 index 000000000..9706e6e41 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DYear.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DYear_H_ +#define _DYear_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DYear */ +typedef long DYear_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DYear_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DYear; +asn_struct_free_f DYear_free; +asn_struct_print_f DYear_print; +asn_constr_check_f DYear_constraint; +ber_type_decoder_f DYear_decode_ber; +der_type_encoder_f DYear_encode_der; +xer_type_decoder_f DYear_decode_xer; +xer_type_encoder_f DYear_encode_xer; +oer_type_decoder_f DYear_decode_oer; +oer_type_encoder_f DYear_encode_oer; +per_type_decoder_f DYear_decode_uper; +per_type_encoder_f DYear_encode_uper; +per_type_decoder_f DYear_decode_aper; +per_type_encoder_f DYear_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DYear_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DYearMonth.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DYearMonth.h new file mode 100644 index 000000000..44c34ec06 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DYearMonth.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DYearMonth_H_ +#define _DYearMonth_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DYear.h" +#include "DMonth.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DYearMonth */ +typedef struct DYearMonth { + DYear_t year; + DMonth_t month; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DYearMonth_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DYearMonth; + +#ifdef __cplusplus +} +#endif + +#endif /* _DYearMonth_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DailySchedule.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DailySchedule.h new file mode 100644 index 000000000..43dddacdc --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DailySchedule.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _DailySchedule_H_ +#define _DailySchedule_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DailySchedule */ +typedef struct DailySchedule { + long begin; + long duration; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DailySchedule_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DailySchedule; +extern asn_SEQUENCE_specifics_t asn_SPC_DailySchedule_specs_1; +extern asn_TYPE_member_t asn_MBR_DailySchedule_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DailySchedule_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DataParameters.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DataParameters.h new file mode 100644 index 000000000..81649b684 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DataParameters.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DataParameters_H_ +#define _DataParameters_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DataParameters */ +typedef struct DataParameters { + IA5String_t *processMethod; /* OPTIONAL */ + IA5String_t *processAgency; /* OPTIONAL */ + IA5String_t *lastCheckedDate; /* OPTIONAL */ + IA5String_t *geoidUsed; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DataParameters_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DataParameters; +extern asn_SEQUENCE_specifics_t asn_SPC_DataParameters_specs_1; +extern asn_TYPE_member_t asn_MBR_DataParameters_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DataParameters_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Day.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Day.h new file mode 100644 index 000000000..b4e0f1ff5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Day.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Day_H_ +#define _Day_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Day */ +typedef long Day_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Day_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Day; +asn_struct_free_f Day_free; +asn_struct_print_f Day_print; +asn_constr_check_f Day_constraint; +ber_type_decoder_f Day_decode_ber; +der_type_encoder_f Day_encode_der; +xer_type_decoder_f Day_decode_xer; +xer_type_encoder_f Day_encode_xer; +oer_type_decoder_f Day_decode_oer; +oer_type_encoder_f Day_encode_oer; +per_type_decoder_f Day_decode_uper; +per_type_encoder_f Day_encode_uper; +per_type_decoder_f Day_decode_aper; +per_type_encoder_f Day_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Day_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DayOfWeek.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DayOfWeek.h new file mode 100644 index 000000000..54ed99deb --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DayOfWeek.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DayOfWeek_H_ +#define _DayOfWeek_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DayOfWeek { + DayOfWeek_unknown = 0, + DayOfWeek_monday = 1, + DayOfWeek_tuesday = 2, + DayOfWeek_wednesday = 3, + DayOfWeek_thursday = 4, + DayOfWeek_friday = 5, + DayOfWeek_saturday = 6, + DayOfWeek_sunday = 7 +} e_DayOfWeek; + +/* DayOfWeek */ +typedef long DayOfWeek_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DayOfWeek_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DayOfWeek; +extern const asn_INTEGER_specifics_t asn_SPC_DayOfWeek_specs_1; +asn_struct_free_f DayOfWeek_free; +asn_struct_print_f DayOfWeek_print; +asn_constr_check_f DayOfWeek_constraint; +ber_type_decoder_f DayOfWeek_decode_ber; +der_type_encoder_f DayOfWeek_encode_der; +xer_type_decoder_f DayOfWeek_decode_xer; +xer_type_encoder_f DayOfWeek_encode_xer; +oer_type_decoder_f DayOfWeek_decode_oer; +oer_type_encoder_f DayOfWeek_encode_oer; +per_type_decoder_f DayOfWeek_decode_uper; +per_type_encoder_f DayOfWeek_encode_uper; +per_type_decoder_f DayOfWeek_decode_aper; +per_type_encoder_f DayOfWeek_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DayOfWeek_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DaySchedule.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DaySchedule.h new file mode 100644 index 000000000..75c77a2f6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DaySchedule.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _DaySchedule_H_ +#define _DaySchedule_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DaySchedule */ +typedef struct DaySchedule { + long begin; + long duration; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DaySchedule_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DaySchedule; +extern asn_SEQUENCE_specifics_t asn_SPC_DaySchedule_specs_1; +extern asn_TYPE_member_t asn_MBR_DaySchedule_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DaySchedule_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DegreesLat.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DegreesLat.h new file mode 100644 index 000000000..88eb44e33 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DegreesLat.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DegreesLat_H_ +#define _DegreesLat_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DegreesLat */ +typedef long DegreesLat_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DegreesLat_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DegreesLat; +asn_struct_free_f DegreesLat_free; +asn_struct_print_f DegreesLat_print; +asn_constr_check_f DegreesLat_constraint; +ber_type_decoder_f DegreesLat_decode_ber; +der_type_encoder_f DegreesLat_encode_der; +xer_type_decoder_f DegreesLat_decode_xer; +xer_type_encoder_f DegreesLat_encode_xer; +oer_type_decoder_f DegreesLat_decode_oer; +oer_type_encoder_f DegreesLat_encode_oer; +per_type_decoder_f DegreesLat_decode_uper; +per_type_encoder_f DegreesLat_encode_uper; +per_type_decoder_f DegreesLat_decode_aper; +per_type_encoder_f DegreesLat_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DegreesLat_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DegreesLong.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DegreesLong.h new file mode 100644 index 000000000..d424da628 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DegreesLong.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DegreesLong_H_ +#define _DegreesLong_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DegreesLong */ +typedef long DegreesLong_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DegreesLong_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DegreesLong; +asn_struct_free_f DegreesLong_free; +asn_struct_print_f DegreesLong_print; +asn_constr_check_f DegreesLong_constraint; +ber_type_decoder_f DegreesLong_decode_ber; +der_type_encoder_f DegreesLong_encode_der; +xer_type_decoder_f DegreesLong_decode_xer; +xer_type_encoder_f DegreesLong_encode_xer; +oer_type_decoder_f DegreesLong_decode_oer; +oer_type_encoder_f DegreesLong_encode_oer; +per_type_decoder_f DegreesLong_decode_uper; +per_type_encoder_f DegreesLong_encode_uper; +per_type_decoder_f DegreesLong_decode_aper; +per_type_encoder_f DegreesLong_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DegreesLong_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DeltaAngle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DeltaAngle.h new file mode 100644 index 000000000..669466e38 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DeltaAngle.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DeltaAngle_H_ +#define _DeltaAngle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DeltaAngle */ +typedef long DeltaAngle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DeltaAngle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DeltaAngle; +asn_struct_free_f DeltaAngle_free; +asn_struct_print_f DeltaAngle_print; +asn_constr_check_f DeltaAngle_constraint; +ber_type_decoder_f DeltaAngle_decode_ber; +der_type_encoder_f DeltaAngle_encode_der; +xer_type_decoder_f DeltaAngle_decode_xer; +xer_type_encoder_f DeltaAngle_encode_xer; +oer_type_decoder_f DeltaAngle_decode_oer; +oer_type_encoder_f DeltaAngle_encode_oer; +per_type_decoder_f DeltaAngle_decode_uper; +per_type_encoder_f DeltaAngle_encode_uper; +per_type_decoder_f DeltaAngle_decode_aper; +per_type_encoder_f DeltaAngle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeltaAngle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DeltaTime.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DeltaTime.h new file mode 100644 index 000000000..efed6370c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DeltaTime.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DeltaTime_H_ +#define _DeltaTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DeltaTime */ +typedef long DeltaTime_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DeltaTime_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DeltaTime; +asn_struct_free_f DeltaTime_free; +asn_struct_print_f DeltaTime_print; +asn_constr_check_f DeltaTime_constraint; +ber_type_decoder_f DeltaTime_decode_ber; +der_type_encoder_f DeltaTime_encode_der; +xer_type_decoder_f DeltaTime_decode_xer; +xer_type_encoder_f DeltaTime_encode_xer; +oer_type_decoder_f DeltaTime_decode_oer; +oer_type_encoder_f DeltaTime_encode_oer; +per_type_decoder_f DeltaTime_decode_uper; +per_type_encoder_f DeltaTime_encode_uper; +per_type_decoder_f DeltaTime_decode_aper; +per_type_encoder_f DeltaTime_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeltaTime_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DescriptiveName.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DescriptiveName.h new file mode 100644 index 000000000..e5ba7bd98 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DescriptiveName.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DescriptiveName_H_ +#define _DescriptiveName_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DescriptiveName */ +typedef IA5String_t DescriptiveName_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DescriptiveName_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DescriptiveName; +asn_struct_free_f DescriptiveName_free; +asn_struct_print_f DescriptiveName_print; +asn_constr_check_f DescriptiveName_constraint; +ber_type_decoder_f DescriptiveName_decode_ber; +der_type_encoder_f DescriptiveName_encode_der; +xer_type_decoder_f DescriptiveName_decode_xer; +xer_type_encoder_f DescriptiveName_encode_xer; +oer_type_decoder_f DescriptiveName_decode_oer; +oer_type_encoder_f DescriptiveName_encode_oer; +per_type_decoder_f DescriptiveName_decode_uper; +per_type_encoder_f DescriptiveName_encode_uper; +per_type_decoder_f DescriptiveName_decode_aper; +per_type_encoder_f DescriptiveName_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DescriptiveName_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DestinationType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DestinationType.h new file mode 100644 index 000000000..2fd84bf3e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DestinationType.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "../J2735_201603DA_with_PMM.ASN" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -S/home/gmb/TMX-OAM/Build/asn1c/skeletons` + */ + +#ifndef _DestinationType_H_ +#define _DestinationType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Longitude.h" +#include "Latitude.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DestinationType */ +typedef struct DestinationType { + Longitude_t lon; + Latitude_t lat; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DestinationType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DestinationType; +extern asn_SEQUENCE_specifics_t asn_SPC_DestinationType_specs_1; +extern asn_TYPE_member_t asn_MBR_DestinationType_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DestinationType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectCommonData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectCommonData.h new file mode 100644 index 000000000..47a21dd85 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectCommonData.h @@ -0,0 +1,79 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _DetectedObjectCommonData_H_ +#define _DetectedObjectCommonData_H_ + + +#include + +/* Including external dependencies */ +#include "ObjectType.h" +#include "ClassificationConfidence.h" +#include "ObjectID.h" +#include "MeasurementTimeOffset.h" +#include "TimeConfidence.h" +#include "PositionOffsetXYZ.h" +#include "PositionConfidenceSet.h" +#include "Speed.h" +#include "SpeedConfidence.h" +#include "Heading.h" +#include "HeadingConfidence.h" +#include "AccelerationConfidence.h" +#include "YawRateConfidence.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct AccelerationSet4Way; + +/* DetectedObjectCommonData */ +typedef struct DetectedObjectCommonData { + ObjectType_t objType; + ClassificationConfidence_t objTypeCfd; + ObjectID_t objectID; + MeasurementTimeOffset_t measurementTime; + TimeConfidence_t timeConfidence; + PositionOffsetXYZ_t pos; + PositionConfidenceSet_t posConfidence; + Speed_t speed; + SpeedConfidence_t speedConfidence; + Speed_t *speedZ /* OPTIONAL */; + SpeedConfidence_t *speedConfidenceZ /* OPTIONAL */; + Heading_t heading; + HeadingConfidence_t headingConf; + struct AccelerationSet4Way *accel4way /* OPTIONAL */; + AccelerationConfidence_t *accCfdX /* OPTIONAL */; + AccelerationConfidence_t *accCfdY /* OPTIONAL */; + AccelerationConfidence_t *accCfdZ /* OPTIONAL */; + YawRateConfidence_t *accCfdYaw /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DetectedObjectCommonData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DetectedObjectCommonData; +extern asn_SEQUENCE_specifics_t asn_SPC_DetectedObjectCommonData_specs_1; +extern asn_TYPE_member_t asn_MBR_DetectedObjectCommonData_1[18]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "AccelerationSet4Way.h" + +#endif /* _DetectedObjectCommonData_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectData.h new file mode 100644 index 000000000..e856ddf5f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectData.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _DetectedObjectData_H_ +#define _DetectedObjectData_H_ + + +#include + +/* Including external dependencies */ +#include "DetectedObjectCommonData.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct DetectedObjectOptionalData; + +/* DetectedObjectData */ +typedef struct DetectedObjectData { + DetectedObjectCommonData_t detObjCommon; + struct DetectedObjectOptionalData *detObjOptData /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DetectedObjectData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DetectedObjectData; +extern asn_SEQUENCE_specifics_t asn_SPC_DetectedObjectData_specs_1; +extern asn_TYPE_member_t asn_MBR_DetectedObjectData_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "DetectedObjectOptionalData.h" + +#endif /* _DetectedObjectData_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectList.h new file mode 100644 index 000000000..c114380dd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _DetectedObjectList_H_ +#define _DetectedObjectList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct DetectedObjectData; + +/* DetectedObjectList */ +typedef struct DetectedObjectList { + A_SEQUENCE_OF(struct DetectedObjectData) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DetectedObjectList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DetectedObjectList; +extern asn_SET_OF_specifics_t asn_SPC_DetectedObjectList_specs_1; +extern asn_TYPE_member_t asn_MBR_DetectedObjectList_1[1]; +extern asn_per_constraints_t asn_PER_type_DetectedObjectList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "DetectedObjectData.h" + +#endif /* _DetectedObjectList_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectOptionalData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectOptionalData.h new file mode 100644 index 000000000..97b9624cf --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObjectOptionalData.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _DetectedObjectOptionalData_H_ +#define _DetectedObjectOptionalData_H_ + + +#include + +/* Including external dependencies */ +#include "DetectedVehicleData.h" +#include "DetectedVRUData.h" +#include "DetectedObstacleData.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DetectedObjectOptionalData_PR { + DetectedObjectOptionalData_PR_NOTHING, /* No components present */ + DetectedObjectOptionalData_PR_detVeh, + DetectedObjectOptionalData_PR_detVRU, + DetectedObjectOptionalData_PR_detObst +} DetectedObjectOptionalData_PR; + +/* DetectedObjectOptionalData */ +typedef struct DetectedObjectOptionalData { + DetectedObjectOptionalData_PR present; + union DetectedObjectOptionalData_u { + DetectedVehicleData_t detVeh; + DetectedVRUData_t detVRU; + DetectedObstacleData_t detObst; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DetectedObjectOptionalData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DetectedObjectOptionalData; +extern asn_CHOICE_specifics_t asn_SPC_DetectedObjectOptionalData_specs_1; +extern asn_TYPE_member_t asn_MBR_DetectedObjectOptionalData_1[3]; +extern asn_per_constraints_t asn_PER_type_DetectedObjectOptionalData_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _DetectedObjectOptionalData_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObstacleData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObstacleData.h new file mode 100644 index 000000000..b6f5ad78e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedObstacleData.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _DetectedObstacleData_H_ +#define _DetectedObstacleData_H_ + + +#include + +/* Including external dependencies */ +#include "ObstacleSize.h" +#include "ObstacleSizeConfidence.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* DetectedObstacleData */ +typedef struct DetectedObstacleData { + ObstacleSize_t obstSize; + ObstacleSizeConfidence_t obstSizeConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DetectedObstacleData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DetectedObstacleData; +extern asn_SEQUENCE_specifics_t asn_SPC_DetectedObstacleData_specs_1; +extern asn_TYPE_member_t asn_MBR_DetectedObstacleData_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DetectedObstacleData_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedVRUData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedVRUData.h new file mode 100644 index 000000000..5bfaffda3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedVRUData.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _DetectedVRUData_H_ +#define _DetectedVRUData_H_ + + +#include + +/* Including external dependencies */ +#include "PersonalDeviceUserType.h" +#include "Attachment.h" +#include "AttachmentRadius.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PropelledInformation; + +/* DetectedVRUData */ +typedef struct DetectedVRUData { + PersonalDeviceUserType_t *basicType /* OPTIONAL */; + struct PropelledInformation *propulsion /* OPTIONAL */; + Attachment_t *attachment /* OPTIONAL */; + AttachmentRadius_t *radius /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DetectedVRUData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DetectedVRUData; +extern asn_SEQUENCE_specifics_t asn_SPC_DetectedVRUData_specs_1; +extern asn_TYPE_member_t asn_MBR_DetectedVRUData_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "PropelledInformation.h" + +#endif /* _DetectedVRUData_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedVehicleData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedVehicleData.h new file mode 100644 index 000000000..49a988e5d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DetectedVehicleData.h @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _DetectedVehicleData_H_ +#define _DetectedVehicleData_H_ + + +#include + +/* Including external dependencies */ +#include "ExteriorLights.h" +#include "VehicleHeight.h" +#include "BasicVehicleClass.h" +#include "ClassificationConfidence.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Attitude; +struct AttitudeConfidence; +struct AngularVelocity; +struct AngularVelocityConfidence; +struct VehicleSize; +struct VehicleSizeConfidence; + +/* DetectedVehicleData */ +typedef struct DetectedVehicleData { + ExteriorLights_t *lights /* OPTIONAL */; + struct Attitude *vehAttitude /* OPTIONAL */; + struct AttitudeConfidence *vehAttitudeConfidence /* OPTIONAL */; + struct AngularVelocity *vehAngVel /* OPTIONAL */; + struct AngularVelocityConfidence *vehAngVelConfidence /* OPTIONAL */; + struct VehicleSize *size /* OPTIONAL */; + VehicleHeight_t *height /* OPTIONAL */; + struct VehicleSizeConfidence *vehicleSizeConfidence /* OPTIONAL */; + BasicVehicleClass_t *vehicleClass /* OPTIONAL */; + ClassificationConfidence_t *classConf /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DetectedVehicleData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DetectedVehicleData; +extern asn_SEQUENCE_specifics_t asn_SPC_DetectedVehicleData_specs_1; +extern asn_TYPE_member_t asn_MBR_DetectedVehicleData_1[10]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Attitude.h" +#include "AttitudeConfidence.h" +#include "AngularVelocity.h" +#include "AngularVelocityConfidence.h" +#include "VehicleSize.h" +#include "VehicleSizeConfidence.h" + +#endif /* _DetectedVehicleData_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DirectionOfUse.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DirectionOfUse.h new file mode 100644 index 000000000..3860daba4 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DirectionOfUse.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DirectionOfUse_H_ +#define _DirectionOfUse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DirectionOfUse { + DirectionOfUse_unavailable = 0, + DirectionOfUse_forward = 1, + DirectionOfUse_reverse = 2, + DirectionOfUse_both = 3 +} e_DirectionOfUse; + +/* DirectionOfUse */ +typedef long DirectionOfUse_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DirectionOfUse_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DirectionOfUse; +extern const asn_INTEGER_specifics_t asn_SPC_DirectionOfUse_specs_1; +asn_struct_free_f DirectionOfUse_free; +asn_struct_print_f DirectionOfUse_print; +asn_constr_check_f DirectionOfUse_constraint; +ber_type_decoder_f DirectionOfUse_decode_ber; +der_type_encoder_f DirectionOfUse_encode_der; +xer_type_decoder_f DirectionOfUse_decode_xer; +xer_type_encoder_f DirectionOfUse_encode_xer; +oer_type_decoder_f DirectionOfUse_decode_oer; +oer_type_encoder_f DirectionOfUse_encode_oer; +per_type_decoder_f DirectionOfUse_decode_uper; +per_type_encoder_f DirectionOfUse_encode_uper; +per_type_decoder_f DirectionOfUse_decode_aper; +per_type_encoder_f DirectionOfUse_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DirectionOfUse_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DisabledVehicle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DisabledVehicle.h new file mode 100644 index 000000000..f7bc0ecab --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DisabledVehicle.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DisabledVehicle_H_ +#define _DisabledVehicle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ITIScodes.h" +#include "GenericLocations.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DisabledVehicle */ +typedef struct DisabledVehicle { + ITIScodes_t statusDetails; + GenericLocations_t *locationDetails; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DisabledVehicle_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DisabledVehicle; +extern asn_SEQUENCE_specifics_t asn_SPC_DisabledVehicle_specs_1; +extern asn_TYPE_member_t asn_MBR_DisabledVehicle_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DisabledVehicle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DistanceUnits.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DistanceUnits.h new file mode 100644 index 000000000..925b72517 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DistanceUnits.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DistanceUnits_H_ +#define _DistanceUnits_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DistanceUnits { + DistanceUnits_centimeter = 0, + DistanceUnits_cm2_5 = 1, + DistanceUnits_decimeter = 2, + DistanceUnits_meter = 3, + DistanceUnits_kilometer = 4, + DistanceUnits_foot = 5, + DistanceUnits_yard = 6, + DistanceUnits_mile = 7 +} e_DistanceUnits; + +/* DistanceUnits */ +typedef long DistanceUnits_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DistanceUnits_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DistanceUnits; +extern const asn_INTEGER_specifics_t asn_SPC_DistanceUnits_specs_1; +asn_struct_free_f DistanceUnits_free; +asn_struct_print_f DistanceUnits_print; +asn_constr_check_f DistanceUnits_constraint; +ber_type_decoder_f DistanceUnits_decode_ber; +der_type_encoder_f DistanceUnits_encode_der; +xer_type_decoder_f DistanceUnits_decode_xer; +xer_type_encoder_f DistanceUnits_encode_xer; +oer_type_decoder_f DistanceUnits_decode_oer; +oer_type_encoder_f DistanceUnits_encode_oer; +per_type_decoder_f DistanceUnits_decode_uper; +per_type_encoder_f DistanceUnits_encode_uper; +per_type_decoder_f DistanceUnits_decode_aper; +per_type_encoder_f DistanceUnits_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DistanceUnits_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleLiftAirPressure.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleLiftAirPressure.h new file mode 100644 index 000000000..687d06f81 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleLiftAirPressure.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DriveAxleLiftAirPressure_H_ +#define _DriveAxleLiftAirPressure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DriveAxleLiftAirPressure */ +typedef long DriveAxleLiftAirPressure_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DriveAxleLiftAirPressure_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DriveAxleLiftAirPressure; +asn_struct_free_f DriveAxleLiftAirPressure_free; +asn_struct_print_f DriveAxleLiftAirPressure_print; +asn_constr_check_f DriveAxleLiftAirPressure_constraint; +ber_type_decoder_f DriveAxleLiftAirPressure_decode_ber; +der_type_encoder_f DriveAxleLiftAirPressure_encode_der; +xer_type_decoder_f DriveAxleLiftAirPressure_decode_xer; +xer_type_encoder_f DriveAxleLiftAirPressure_encode_xer; +oer_type_decoder_f DriveAxleLiftAirPressure_decode_oer; +oer_type_encoder_f DriveAxleLiftAirPressure_encode_oer; +per_type_decoder_f DriveAxleLiftAirPressure_decode_uper; +per_type_encoder_f DriveAxleLiftAirPressure_encode_uper; +per_type_decoder_f DriveAxleLiftAirPressure_decode_aper; +per_type_encoder_f DriveAxleLiftAirPressure_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DriveAxleLiftAirPressure_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleLocation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleLocation.h new file mode 100644 index 000000000..b2771b065 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleLocation.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DriveAxleLocation_H_ +#define _DriveAxleLocation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DriveAxleLocation */ +typedef long DriveAxleLocation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DriveAxleLocation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DriveAxleLocation; +asn_struct_free_f DriveAxleLocation_free; +asn_struct_print_f DriveAxleLocation_print; +asn_constr_check_f DriveAxleLocation_constraint; +ber_type_decoder_f DriveAxleLocation_decode_ber; +der_type_encoder_f DriveAxleLocation_encode_der; +xer_type_decoder_f DriveAxleLocation_decode_xer; +xer_type_encoder_f DriveAxleLocation_encode_xer; +oer_type_decoder_f DriveAxleLocation_decode_oer; +oer_type_encoder_f DriveAxleLocation_encode_oer; +per_type_decoder_f DriveAxleLocation_decode_uper; +per_type_encoder_f DriveAxleLocation_encode_uper; +per_type_decoder_f DriveAxleLocation_decode_aper; +per_type_encoder_f DriveAxleLocation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DriveAxleLocation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleLubePressure.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleLubePressure.h new file mode 100644 index 000000000..792472698 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleLubePressure.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DriveAxleLubePressure_H_ +#define _DriveAxleLubePressure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DriveAxleLubePressure */ +typedef long DriveAxleLubePressure_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DriveAxleLubePressure_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DriveAxleLubePressure; +asn_struct_free_f DriveAxleLubePressure_free; +asn_struct_print_f DriveAxleLubePressure_print; +asn_constr_check_f DriveAxleLubePressure_constraint; +ber_type_decoder_f DriveAxleLubePressure_decode_ber; +der_type_encoder_f DriveAxleLubePressure_encode_der; +xer_type_decoder_f DriveAxleLubePressure_decode_xer; +xer_type_encoder_f DriveAxleLubePressure_encode_xer; +oer_type_decoder_f DriveAxleLubePressure_decode_oer; +oer_type_encoder_f DriveAxleLubePressure_encode_oer; +per_type_decoder_f DriveAxleLubePressure_decode_uper; +per_type_encoder_f DriveAxleLubePressure_encode_uper; +per_type_decoder_f DriveAxleLubePressure_decode_aper; +per_type_encoder_f DriveAxleLubePressure_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DriveAxleLubePressure_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleTemperature.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleTemperature.h new file mode 100644 index 000000000..b8ae7a273 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DriveAxleTemperature.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DriveAxleTemperature_H_ +#define _DriveAxleTemperature_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DriveAxleTemperature */ +typedef long DriveAxleTemperature_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DriveAxleTemperature_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DriveAxleTemperature; +asn_struct_free_f DriveAxleTemperature_free; +asn_struct_print_f DriveAxleTemperature_print; +asn_constr_check_f DriveAxleTemperature_constraint; +ber_type_decoder_f DriveAxleTemperature_decode_ber; +der_type_encoder_f DriveAxleTemperature_encode_der; +xer_type_decoder_f DriveAxleTemperature_decode_xer; +xer_type_encoder_f DriveAxleTemperature_encode_xer; +oer_type_decoder_f DriveAxleTemperature_decode_oer; +oer_type_encoder_f DriveAxleTemperature_encode_oer; +per_type_decoder_f DriveAxleTemperature_decode_uper; +per_type_encoder_f DriveAxleTemperature_encode_uper; +per_type_decoder_f DriveAxleTemperature_decode_aper; +per_type_encoder_f DriveAxleTemperature_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DriveAxleTemperature_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DrivenLineOffsetLg.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DrivenLineOffsetLg.h new file mode 100644 index 000000000..7921004c5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DrivenLineOffsetLg.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DrivenLineOffsetLg_H_ +#define _DrivenLineOffsetLg_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DrivenLineOffsetLg */ +typedef long DrivenLineOffsetLg_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DrivenLineOffsetLg_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DrivenLineOffsetLg; +asn_struct_free_f DrivenLineOffsetLg_free; +asn_struct_print_f DrivenLineOffsetLg_print; +asn_constr_check_f DrivenLineOffsetLg_constraint; +ber_type_decoder_f DrivenLineOffsetLg_decode_ber; +der_type_encoder_f DrivenLineOffsetLg_encode_der; +xer_type_decoder_f DrivenLineOffsetLg_decode_xer; +xer_type_encoder_f DrivenLineOffsetLg_encode_xer; +oer_type_decoder_f DrivenLineOffsetLg_decode_oer; +oer_type_encoder_f DrivenLineOffsetLg_encode_oer; +per_type_decoder_f DrivenLineOffsetLg_decode_uper; +per_type_encoder_f DrivenLineOffsetLg_encode_uper; +per_type_decoder_f DrivenLineOffsetLg_decode_aper; +per_type_encoder_f DrivenLineOffsetLg_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DrivenLineOffsetLg_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DrivenLineOffsetSm.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DrivenLineOffsetSm.h new file mode 100644 index 000000000..390ca8535 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DrivenLineOffsetSm.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DrivenLineOffsetSm_H_ +#define _DrivenLineOffsetSm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DrivenLineOffsetSm */ +typedef long DrivenLineOffsetSm_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DrivenLineOffsetSm_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DrivenLineOffsetSm; +asn_struct_free_f DrivenLineOffsetSm_free; +asn_struct_print_f DrivenLineOffsetSm_print; +asn_constr_check_f DrivenLineOffsetSm_constraint; +ber_type_decoder_f DrivenLineOffsetSm_decode_ber; +der_type_encoder_f DrivenLineOffsetSm_encode_der; +xer_type_decoder_f DrivenLineOffsetSm_decode_xer; +xer_type_encoder_f DrivenLineOffsetSm_encode_xer; +oer_type_decoder_f DrivenLineOffsetSm_decode_oer; +oer_type_encoder_f DrivenLineOffsetSm_encode_oer; +per_type_decoder_f DrivenLineOffsetSm_decode_uper; +per_type_encoder_f DrivenLineOffsetSm_encode_uper; +per_type_decoder_f DrivenLineOffsetSm_decode_aper; +per_type_encoder_f DrivenLineOffsetSm_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DrivenLineOffsetSm_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/DrivingWheelAngle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DrivingWheelAngle.h new file mode 100644 index 000000000..206e8330b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/DrivingWheelAngle.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _DrivingWheelAngle_H_ +#define _DrivingWheelAngle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DrivingWheelAngle */ +typedef long DrivingWheelAngle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DrivingWheelAngle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DrivingWheelAngle; +asn_struct_free_f DrivingWheelAngle_free; +asn_struct_print_f DrivingWheelAngle_print; +asn_constr_check_f DrivingWheelAngle_constraint; +ber_type_decoder_f DrivingWheelAngle_decode_ber; +der_type_encoder_f DrivingWheelAngle_encode_der; +xer_type_decoder_f DrivingWheelAngle_decode_xer; +xer_type_encoder_f DrivingWheelAngle_encode_xer; +oer_type_decoder_f DrivingWheelAngle_decode_oer; +oer_type_encoder_f DrivingWheelAngle_encode_oer; +per_type_decoder_f DrivingWheelAngle_decode_uper; +per_type_encoder_f DrivingWheelAngle_encode_uper; +per_type_decoder_f DrivingWheelAngle_decode_aper; +per_type_encoder_f DrivingWheelAngle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DrivingWheelAngle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Duration.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Duration.h new file mode 100644 index 000000000..1dd192aa1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Duration.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Duration_H_ +#define _Duration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Duration */ +typedef long Duration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Duration; +asn_struct_free_f Duration_free; +asn_struct_print_f Duration_print; +asn_constr_check_f Duration_constraint; +ber_type_decoder_f Duration_decode_ber; +der_type_encoder_f Duration_encode_der; +xer_type_decoder_f Duration_decode_xer; +xer_type_encoder_f Duration_encode_xer; +oer_type_decoder_f Duration_decode_oer; +oer_type_encoder_f Duration_encode_oer; +per_type_decoder_f Duration_decode_uper; +per_type_encoder_f Duration_encode_uper; +per_type_decoder_f Duration_decode_aper; +per_type_encoder_f Duration_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Duration_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ENUMERATED.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ENUMERATED.h new file mode 100644 index 000000000..e4df29b4f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ENUMERATED.h @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _ENUMERATED_H_ +#define _ENUMERATED_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef INTEGER_t ENUMERATED_t; /* Implemented via INTEGER */ + +extern asn_TYPE_descriptor_t asn_DEF_ENUMERATED; +extern asn_TYPE_operation_t asn_OP_ENUMERATED; + +per_type_decoder_f ENUMERATED_decode_uper; +per_type_encoder_f ENUMERATED_encode_uper; + +#define ENUMERATED_free ASN__PRIMITIVE_TYPE_free +#define ENUMERATED_print INTEGER_print +#define ENUMERATED_compare INTEGER_compare +#define ENUMERATED_constraint asn_generic_no_constraint +#define ENUMERATED_decode_ber ber_decode_primitive +#define ENUMERATED_encode_der INTEGER_encode_der +#define ENUMERATED_decode_xer INTEGER_decode_xer +#define ENUMERATED_encode_xer INTEGER_encode_xer + +#ifdef __cplusplus +} +#endif + +#endif /* _ENUMERATED_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EXTERNAL.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EXTERNAL.h new file mode 100644 index 000000000..f059c3047 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EXTERNAL.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ASN1C-UsefulInformationObjectClasses" + * found in "/usr/local/share/asn1c/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _EXTERNAL_H_ +#define _EXTERNAL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OBJECT_IDENTIFIER.h" +#include "NativeInteger.h" +#include "ObjectDescriptor.h" +#include "ANY.h" +#include "OCTET_STRING.h" +#include "BIT_STRING.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EXTERNAL__encoding_PR { + EXTERNAL__encoding_PR_NOTHING, /* No components present */ + EXTERNAL__encoding_PR_single_ASN1_type, + EXTERNAL__encoding_PR_octet_aligned, + EXTERNAL__encoding_PR_arbitrary +} EXTERNAL__encoding_PR; + +/* EXTERNAL */ +typedef struct EXTERNAL { + OBJECT_IDENTIFIER_t *direct_reference; /* OPTIONAL */ + long *indirect_reference; /* OPTIONAL */ + ObjectDescriptor_t *data_value_descriptor; /* OPTIONAL */ + struct EXTERNAL__encoding { + EXTERNAL__encoding_PR present; + union EXTERNAL__encoding_u { + ANY_t single_ASN1_type; + OCTET_STRING_t octet_aligned; + BIT_STRING_t arbitrary; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } encoding; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EXTERNAL_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EXTERNAL; + +#ifdef __cplusplus +} +#endif + +#endif /* _EXTERNAL_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ElevationConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ElevationConfidence.h new file mode 100644 index 000000000..d725be536 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ElevationConfidence.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ElevationConfidence_H_ +#define _ElevationConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ElevationConfidence { + ElevationConfidence_unavailable = 0, + ElevationConfidence_elev_500_00 = 1, + ElevationConfidence_elev_200_00 = 2, + ElevationConfidence_elev_100_00 = 3, + ElevationConfidence_elev_050_00 = 4, + ElevationConfidence_elev_020_00 = 5, + ElevationConfidence_elev_010_00 = 6, + ElevationConfidence_elev_005_00 = 7, + ElevationConfidence_elev_002_00 = 8, + ElevationConfidence_elev_001_00 = 9, + ElevationConfidence_elev_000_50 = 10, + ElevationConfidence_elev_000_20 = 11, + ElevationConfidence_elev_000_10 = 12, + ElevationConfidence_elev_000_05 = 13, + ElevationConfidence_elev_000_02 = 14, + ElevationConfidence_elev_000_01 = 15 +} e_ElevationConfidence; + +/* ElevationConfidence */ +typedef long ElevationConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ElevationConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ElevationConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_ElevationConfidence_specs_1; +asn_struct_free_f ElevationConfidence_free; +asn_struct_print_f ElevationConfidence_print; +asn_constr_check_f ElevationConfidence_constraint; +ber_type_decoder_f ElevationConfidence_decode_ber; +der_type_encoder_f ElevationConfidence_encode_der; +xer_type_decoder_f ElevationConfidence_decode_xer; +xer_type_encoder_f ElevationConfidence_encode_xer; +oer_type_decoder_f ElevationConfidence_decode_oer; +oer_type_encoder_f ElevationConfidence_encode_oer; +per_type_decoder_f ElevationConfidence_decode_uper; +per_type_encoder_f ElevationConfidence_encode_uper; +per_type_decoder_f ElevationConfidence_decode_aper; +per_type_encoder_f ElevationConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ElevationConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EmergencyDetails.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EmergencyDetails.h new file mode 100644 index 000000000..a7d5278d5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EmergencyDetails.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _EmergencyDetails_H_ +#define _EmergencyDetails_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SSPindex.h" +#include "SirenInUse.h" +#include "LightbarInUse.h" +#include "MultiVehicleResponse.h" +#include "ResponseType.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PrivilegedEvents; + +/* EmergencyDetails */ +typedef struct EmergencyDetails { + SSPindex_t notUsed; + SirenInUse_t sirenUse; + LightbarInUse_t lightsUse; + MultiVehicleResponse_t multi; + struct PrivilegedEvents *events; /* OPTIONAL */ + ResponseType_t *responseType; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EmergencyDetails_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EmergencyDetails; +extern asn_SEQUENCE_specifics_t asn_SPC_EmergencyDetails_specs_1; +extern asn_TYPE_member_t asn_MBR_EmergencyDetails_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "PrivilegedEvents.h" + +#endif /* _EmergencyDetails_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EmergencyVehicleAlert.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EmergencyVehicleAlert.h new file mode 100644 index 000000000..56c4fdf57 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EmergencyVehicleAlert.h @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "EmergencyVehicleAlert" + * found in "J2735-EmergencyVehicleAlert.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _EmergencyVehicleAlert_H_ +#define _EmergencyVehicleAlert_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MinuteOfTheYear.h" +#include "TemporaryID.h" +#include "RoadSideAlert.h" +#include "ResponseType.h" +#include "VehicleMass.h" +#include "VehicleType.h" +#include "VehicleGroupAffected.h" +#include "IncidentResponseEquipment.h" +#include "ResponderGroupAffected.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct EmergencyDetails; +struct Reg_EmergencyVehicleAlert; + +/* EmergencyVehicleAlert */ +typedef struct EmergencyVehicleAlert { + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + TemporaryID_t *id; /* OPTIONAL */ + RoadSideAlert_t rsaMsg; + ResponseType_t *responseType; /* OPTIONAL */ + struct EmergencyDetails *details; /* OPTIONAL */ + VehicleMass_t *mass; /* OPTIONAL */ + VehicleType_t *basicType; /* OPTIONAL */ + VehicleGroupAffected_t *vehicleType; /* OPTIONAL */ + IncidentResponseEquipment_t *responseEquip; /* OPTIONAL */ + ResponderGroupAffected_t *responderType; /* OPTIONAL */ + struct EmergencyVehicleAlert__regional { + A_SEQUENCE_OF(struct Reg_EmergencyVehicleAlert) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EmergencyVehicleAlert_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EmergencyVehicleAlert; +extern asn_SEQUENCE_specifics_t asn_SPC_EmergencyVehicleAlert_specs_1; +extern asn_TYPE_member_t asn_MBR_EmergencyVehicleAlert_1[11]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "EmergencyDetails.h" +#include "RegionalExtension.h" + +#endif /* _EmergencyVehicleAlert_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EmissionType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EmissionType.h new file mode 100644 index 000000000..16c595414 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EmissionType.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _EmissionType_H_ +#define _EmissionType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EmissionType { + EmissionType_typeA = 0, + EmissionType_typeB = 1, + EmissionType_typeC = 2, + EmissionType_typeD = 3, + EmissionType_typeE = 4 + /* + * Enumeration is extensible + */ +} e_EmissionType; + +/* EmissionType */ +typedef long EmissionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EmissionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EmissionType; +extern const asn_INTEGER_specifics_t asn_SPC_EmissionType_specs_1; +asn_struct_free_f EmissionType_free; +asn_struct_print_f EmissionType_print; +asn_constr_check_f EmissionType_constraint; +ber_type_decoder_f EmissionType_decode_ber; +der_type_encoder_f EmissionType_encode_der; +xer_type_decoder_f EmissionType_decode_xer; +xer_type_encoder_f EmissionType_encode_xer; +oer_type_decoder_f EmissionType_decode_oer; +oer_type_encoder_f EmissionType_encode_oer; +per_type_decoder_f EmissionType_decode_uper; +per_type_encoder_f EmissionType_encode_uper; +per_type_decoder_f EmissionType_decode_aper; +per_type_encoder_f EmissionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EmissionType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EnabledLaneList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EnabledLaneList.h new file mode 100644 index 000000000..ec99508d1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EnabledLaneList.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _EnabledLaneList_H_ +#define _EnabledLaneList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LaneID.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EnabledLaneList */ +typedef struct EnabledLaneList { + A_SEQUENCE_OF(LaneID_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EnabledLaneList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EnabledLaneList; +extern asn_SET_OF_specifics_t asn_SPC_EnabledLaneList_specs_1; +extern asn_TYPE_member_t asn_MBR_EnabledLaneList_1[1]; +extern asn_per_constraints_t asn_PER_type_EnabledLaneList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _EnabledLaneList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EpochMins.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EpochMins.h new file mode 100644 index 000000000..a116028f7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EpochMins.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _EpochMins_H_ +#define _EpochMins_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EpochMins */ +typedef INTEGER_t EpochMins_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EpochMins_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EpochMins; +asn_struct_free_f EpochMins_free; +asn_struct_print_f EpochMins_print; +asn_constr_check_f EpochMins_constraint; +ber_type_decoder_f EpochMins_decode_ber; +der_type_encoder_f EpochMins_encode_der; +xer_type_decoder_f EpochMins_decode_xer; +xer_type_encoder_f EpochMins_encode_xer; +oer_type_decoder_f EpochMins_decode_oer; +oer_type_encoder_f EpochMins_encode_oer; +per_type_decoder_f EpochMins_decode_uper; +per_type_encoder_f EpochMins_encode_uper; +per_type_decoder_f EpochMins_decode_aper; +per_type_encoder_f EpochMins_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EpochMins_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EquipmentType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EquipmentType.h new file mode 100644 index 000000000..2d1799bb4 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EquipmentType.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _EquipmentType_H_ +#define _EquipmentType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EquipmentType { + EquipmentType_unknown = 0, + EquipmentType_rsu = 1, + EquipmentType_obu = 2, + EquipmentType_vru = 3 + /* + * Enumeration is extensible + */ +} e_EquipmentType; + +/* EquipmentType */ +typedef long EquipmentType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EquipmentType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EquipmentType; +extern const asn_INTEGER_specifics_t asn_SPC_EquipmentType_specs_1; +asn_struct_free_f EquipmentType_free; +asn_struct_print_f EquipmentType_print; +asn_constr_check_f EquipmentType_constraint; +ber_type_decoder_f EquipmentType_decode_ber; +der_type_encoder_f EquipmentType_encode_der; +xer_type_decoder_f EquipmentType_decode_xer; +xer_type_encoder_f EquipmentType_encode_xer; +oer_type_decoder_f EquipmentType_decode_oer; +oer_type_encoder_f EquipmentType_encode_oer; +per_type_decoder_f EquipmentType_decode_uper; +per_type_encoder_f EquipmentType_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EquipmentType_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssMobileFriction.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssMobileFriction.h new file mode 100644 index 000000000..039bab27c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssMobileFriction.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NTCIP" + * found in "J2735-NTCIP.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _EssMobileFriction_H_ +#define _EssMobileFriction_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EssMobileFriction */ +typedef long EssMobileFriction_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EssMobileFriction_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EssMobileFriction; +asn_struct_free_f EssMobileFriction_free; +asn_struct_print_f EssMobileFriction_print; +asn_constr_check_f EssMobileFriction_constraint; +ber_type_decoder_f EssMobileFriction_decode_ber; +der_type_encoder_f EssMobileFriction_encode_der; +xer_type_decoder_f EssMobileFriction_decode_xer; +xer_type_encoder_f EssMobileFriction_encode_xer; +oer_type_decoder_f EssMobileFriction_decode_oer; +oer_type_encoder_f EssMobileFriction_encode_oer; +per_type_decoder_f EssMobileFriction_decode_uper; +per_type_encoder_f EssMobileFriction_encode_uper; +per_type_decoder_f EssMobileFriction_decode_aper; +per_type_encoder_f EssMobileFriction_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EssMobileFriction_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssPrecipRate.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssPrecipRate.h new file mode 100644 index 000000000..50433c199 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssPrecipRate.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NTCIP" + * found in "J2735-NTCIP.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _EssPrecipRate_H_ +#define _EssPrecipRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EssPrecipRate */ +typedef long EssPrecipRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EssPrecipRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EssPrecipRate; +asn_struct_free_f EssPrecipRate_free; +asn_struct_print_f EssPrecipRate_print; +asn_constr_check_f EssPrecipRate_constraint; +ber_type_decoder_f EssPrecipRate_decode_ber; +der_type_encoder_f EssPrecipRate_encode_der; +xer_type_decoder_f EssPrecipRate_decode_xer; +xer_type_encoder_f EssPrecipRate_encode_xer; +oer_type_decoder_f EssPrecipRate_decode_oer; +oer_type_encoder_f EssPrecipRate_encode_oer; +per_type_decoder_f EssPrecipRate_decode_uper; +per_type_encoder_f EssPrecipRate_encode_uper; +per_type_decoder_f EssPrecipRate_decode_aper; +per_type_encoder_f EssPrecipRate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EssPrecipRate_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssPrecipSituation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssPrecipSituation.h new file mode 100644 index 000000000..d5792d025 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssPrecipSituation.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NTCIP" + * found in "J2735-NTCIP.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _EssPrecipSituation_H_ +#define _EssPrecipSituation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EssPrecipSituation { + EssPrecipSituation_other = 1, + EssPrecipSituation_unknown = 2, + EssPrecipSituation_noPrecipitation = 3, + EssPrecipSituation_unidentifiedSlight = 4, + EssPrecipSituation_unidentifiedModerate = 5, + EssPrecipSituation_unidentifiedHeavy = 6, + EssPrecipSituation_snowSlight = 7, + EssPrecipSituation_snowModerate = 8, + EssPrecipSituation_snowHeavy = 9, + EssPrecipSituation_rainSlight = 10, + EssPrecipSituation_rainModerate = 11, + EssPrecipSituation_rainHeavy = 12, + EssPrecipSituation_frozenPrecipitationSlight = 13, + EssPrecipSituation_frozenPrecipitationModerate = 14, + EssPrecipSituation_frozenPrecipitationHeavy = 15 +} e_EssPrecipSituation; + +/* EssPrecipSituation */ +typedef long EssPrecipSituation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EssPrecipSituation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EssPrecipSituation; +extern const asn_INTEGER_specifics_t asn_SPC_EssPrecipSituation_specs_1; +asn_struct_free_f EssPrecipSituation_free; +asn_struct_print_f EssPrecipSituation_print; +asn_constr_check_f EssPrecipSituation_constraint; +ber_type_decoder_f EssPrecipSituation_decode_ber; +der_type_encoder_f EssPrecipSituation_encode_der; +xer_type_decoder_f EssPrecipSituation_decode_xer; +xer_type_encoder_f EssPrecipSituation_encode_xer; +oer_type_decoder_f EssPrecipSituation_decode_oer; +oer_type_encoder_f EssPrecipSituation_encode_oer; +per_type_decoder_f EssPrecipSituation_decode_uper; +per_type_encoder_f EssPrecipSituation_encode_uper; +per_type_decoder_f EssPrecipSituation_decode_aper; +per_type_encoder_f EssPrecipSituation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EssPrecipSituation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssPrecipYesNo.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssPrecipYesNo.h new file mode 100644 index 000000000..7f47ec7bc --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssPrecipYesNo.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NTCIP" + * found in "J2735-NTCIP.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _EssPrecipYesNo_H_ +#define _EssPrecipYesNo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EssPrecipYesNo { + EssPrecipYesNo_precip = 1, + EssPrecipYesNo_noPrecip = 2, + EssPrecipYesNo_error = 3 +} e_EssPrecipYesNo; + +/* EssPrecipYesNo */ +typedef long EssPrecipYesNo_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EssPrecipYesNo_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EssPrecipYesNo; +extern const asn_INTEGER_specifics_t asn_SPC_EssPrecipYesNo_specs_1; +asn_struct_free_f EssPrecipYesNo_free; +asn_struct_print_f EssPrecipYesNo_print; +asn_constr_check_f EssPrecipYesNo_constraint; +ber_type_decoder_f EssPrecipYesNo_decode_ber; +der_type_encoder_f EssPrecipYesNo_encode_der; +xer_type_decoder_f EssPrecipYesNo_decode_xer; +xer_type_encoder_f EssPrecipYesNo_encode_xer; +oer_type_decoder_f EssPrecipYesNo_decode_oer; +oer_type_encoder_f EssPrecipYesNo_encode_oer; +per_type_decoder_f EssPrecipYesNo_decode_uper; +per_type_encoder_f EssPrecipYesNo_encode_uper; +per_type_decoder_f EssPrecipYesNo_decode_aper; +per_type_encoder_f EssPrecipYesNo_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EssPrecipYesNo_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssSolarRadiation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssSolarRadiation.h new file mode 100644 index 000000000..026493c1e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EssSolarRadiation.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NTCIP" + * found in "J2735-NTCIP.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _EssSolarRadiation_H_ +#define _EssSolarRadiation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EssSolarRadiation */ +typedef long EssSolarRadiation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EssSolarRadiation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EssSolarRadiation; +asn_struct_free_f EssSolarRadiation_free; +asn_struct_print_f EssSolarRadiation_print; +asn_constr_check_f EssSolarRadiation_constraint; +ber_type_decoder_f EssSolarRadiation_decode_ber; +der_type_encoder_f EssSolarRadiation_encode_der; +xer_type_decoder_f EssSolarRadiation_decode_xer; +xer_type_encoder_f EssSolarRadiation_encode_xer; +oer_type_decoder_f EssSolarRadiation_decode_oer; +oer_type_encoder_f EssSolarRadiation_encode_oer; +per_type_decoder_f EssSolarRadiation_decode_uper; +per_type_encoder_f EssSolarRadiation_encode_uper; +per_type_decoder_f EssSolarRadiation_decode_aper; +per_type_encoder_f EssSolarRadiation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EssSolarRadiation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EstimatedTimeType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EstimatedTimeType.h new file mode 100644 index 000000000..3108b5319 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EstimatedTimeType.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "../J2735_201603DA_with_PMM.ASN" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -S/home/gmb/TMX-OAM/Build/asn1c/skeletons` + */ + +#ifndef _EstimatedTimeType_H_ +#define _EstimatedTimeType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EstimatedTimeType */ +typedef long EstimatedTimeType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EstimatedTimeType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EstimatedTimeType; +asn_struct_free_f EstimatedTimeType_free; +asn_struct_print_f EstimatedTimeType_print; +asn_constr_check_f EstimatedTimeType_constraint; +ber_type_decoder_f EstimatedTimeType_decode_ber; +der_type_encoder_f EstimatedTimeType_encode_der; +xer_type_decoder_f EstimatedTimeType_decode_xer; +xer_type_encoder_f EstimatedTimeType_encode_xer; +per_type_decoder_f EstimatedTimeType_decode_uper; +per_type_encoder_f EstimatedTimeType_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EstimatedTimeType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/EventDescription.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EventDescription.h new file mode 100644 index 000000000..d878be4a6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/EventDescription.h @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _EventDescription_H_ +#define _EventDescription_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ITIScodes.h" +#include "Priority.h" +#include "HeadingSlice.h" +#include "Extent.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_EventDescription; + +/* EventDescription */ +typedef struct EventDescription { + ITIScodes_t typeEvent; + struct EventDescription__description { + A_SEQUENCE_OF(ITIScodes_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *description; + Priority_t *priority; /* OPTIONAL */ + HeadingSlice_t *heading; /* OPTIONAL */ + Extent_t *extent; /* OPTIONAL */ + struct EventDescription__regional { + A_SEQUENCE_OF(struct Reg_EventDescription) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EventDescription_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EventDescription; +extern asn_SEQUENCE_specifics_t asn_SPC_EventDescription_specs_1; +extern asn_TYPE_member_t asn_MBR_EventDescription_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _EventDescription_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ExitService.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ExitService.h new file mode 100644 index 000000000..ed0f9a510 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ExitService.h @@ -0,0 +1,69 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ExitService_H_ +#define _ExitService_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ITIScodes.h" +#include "ITIStextPhrase.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ExitService__Member__item_PR { + ExitService__Member__item_PR_NOTHING, /* No components present */ + ExitService__Member__item_PR_itis, + ExitService__Member__item_PR_text +} ExitService__Member__item_PR; + +/* Forward definitions */ +typedef struct ExitService__Member { + struct ExitService__Member__item { + ExitService__Member__item_PR present; + union ExitService__Member__item_u { + ITIScodes_t itis; + ITIStextPhrase_t text; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } item; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ExitService__Member; + +/* ExitService */ +typedef struct ExitService { + A_SEQUENCE_OF(ExitService__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ExitService_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ExitService; +extern asn_SET_OF_specifics_t asn_SPC_ExitService_specs_1; +extern asn_TYPE_member_t asn_MBR_ExitService_1[1]; +extern asn_per_constraints_t asn_PER_type_ExitService_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExitService_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Extent.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Extent.h new file mode 100644 index 000000000..142f7a7ce --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Extent.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Extent_H_ +#define _Extent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Extent { + Extent_useInstantlyOnly = 0, + Extent_useFor3meters = 1, + Extent_useFor10meters = 2, + Extent_useFor50meters = 3, + Extent_useFor100meters = 4, + Extent_useFor500meters = 5, + Extent_useFor1000meters = 6, + Extent_useFor5000meters = 7, + Extent_useFor10000meters = 8, + Extent_useFor50000meters = 9, + Extent_useFor100000meters = 10, + Extent_useFor500000meters = 11, + Extent_useFor1000000meters = 12, + Extent_useFor5000000meters = 13, + Extent_useFor10000000meters = 14, + Extent_forever = 15 +} e_Extent; + +/* Extent */ +typedef long Extent_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Extent_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Extent; +extern const asn_INTEGER_specifics_t asn_SPC_Extent_specs_1; +asn_struct_free_f Extent_free; +asn_struct_print_f Extent_print; +asn_constr_check_f Extent_constraint; +ber_type_decoder_f Extent_decode_ber; +der_type_encoder_f Extent_encode_der; +xer_type_decoder_f Extent_decode_xer; +xer_type_encoder_f Extent_encode_xer; +oer_type_decoder_f Extent_decode_oer; +oer_type_encoder_f Extent_encode_oer; +per_type_decoder_f Extent_decode_uper; +per_type_encoder_f Extent_encode_uper; +per_type_decoder_f Extent_decode_aper; +per_type_encoder_f Extent_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Extent_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ExteriorLights.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ExteriorLights.h new file mode 100644 index 000000000..79616e3ad --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ExteriorLights.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ExteriorLights_H_ +#define _ExteriorLights_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ExteriorLights { + ExteriorLights_lowBeamHeadlightsOn = 0, + ExteriorLights_highBeamHeadlightsOn = 1, + ExteriorLights_leftTurnSignalOn = 2, + ExteriorLights_rightTurnSignalOn = 3, + ExteriorLights_hazardSignalOn = 4, + ExteriorLights_automaticLightControlOn = 5, + ExteriorLights_daytimeRunningLightsOn = 6, + ExteriorLights_fogLightOn = 7, + ExteriorLights_parkingLightsOn = 8 +} e_ExteriorLights; + +/* ExteriorLights */ +typedef BIT_STRING_t ExteriorLights_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ExteriorLights_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ExteriorLights; +asn_struct_free_f ExteriorLights_free; +asn_struct_print_f ExteriorLights_print; +asn_constr_check_f ExteriorLights_constraint; +ber_type_decoder_f ExteriorLights_decode_ber; +der_type_encoder_f ExteriorLights_encode_der; +xer_type_decoder_f ExteriorLights_decode_xer; +xer_type_encoder_f ExteriorLights_encode_xer; +oer_type_decoder_f ExteriorLights_decode_oer; +oer_type_encoder_f ExteriorLights_encode_oer; +per_type_decoder_f ExteriorLights_decode_uper; +per_type_encoder_f ExteriorLights_encode_uper; +per_type_decoder_f ExteriorLights_decode_aper; +per_type_encoder_f ExteriorLights_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExteriorLights_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/FuelType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/FuelType.h new file mode 100644 index 000000000..8a3d18234 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/FuelType.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _FuelType_H_ +#define _FuelType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* FuelType */ +typedef long FuelType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_FuelType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_FuelType; +asn_struct_free_f FuelType_free; +asn_struct_print_f FuelType_print; +asn_constr_check_f FuelType_constraint; +ber_type_decoder_f FuelType_decode_ber; +der_type_encoder_f FuelType_encode_der; +xer_type_decoder_f FuelType_decode_xer; +xer_type_encoder_f FuelType_encode_xer; +oer_type_decoder_f FuelType_decode_oer; +oer_type_encoder_f FuelType_encode_oer; +per_type_decoder_f FuelType_decode_uper; +per_type_encoder_f FuelType_encode_uper; +per_type_decoder_f FuelType_decode_aper; +per_type_encoder_f FuelType_encode_aper; +#define FuelType_unknownFuel ((FuelType_t)0) +#define FuelType_gasoline ((FuelType_t)1) +#define FuelType_ethanol ((FuelType_t)2) +#define FuelType_diesel ((FuelType_t)3) +#define FuelType_electric ((FuelType_t)4) +#define FuelType_hybrid ((FuelType_t)5) +#define FuelType_hydrogen ((FuelType_t)6) +#define FuelType_natGasLiquid ((FuelType_t)7) +#define FuelType_natGasComp ((FuelType_t)8) +#define FuelType_propane ((FuelType_t)9) + +#ifdef __cplusplus +} +#endif + +#endif /* _FuelType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/FullPositionVector.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/FullPositionVector.h new file mode 100644 index 000000000..c0730fb1a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/FullPositionVector.h @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _FullPositionVector_H_ +#define _FullPositionVector_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Longitude.h" +#include "Latitude.h" +#include "Common_Elevation.h" +#include "Heading.h" +#include "TimeConfidence.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct DDateTime; +struct TransmissionAndSpeed; +struct PositionalAccuracy; +struct PositionConfidenceSet; +struct SpeedandHeadingandThrottleConfidence; + +/* FullPositionVector */ +typedef struct FullPositionVector { + struct DDateTime *utcTime; /* OPTIONAL */ + Longitude_t Long; + Latitude_t lat; + Common_Elevation_t *elevation; /* OPTIONAL */ + Heading_t *heading; /* OPTIONAL */ + struct TransmissionAndSpeed *speed; /* OPTIONAL */ + struct PositionalAccuracy *posAccuracy; /* OPTIONAL */ + TimeConfidence_t *timeConfidence; /* OPTIONAL */ + struct PositionConfidenceSet *posConfidence; /* OPTIONAL */ + struct SpeedandHeadingandThrottleConfidence *speedConfidence; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FullPositionVector_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_FullPositionVector; +extern asn_SEQUENCE_specifics_t asn_SPC_FullPositionVector_specs_1; +extern asn_TYPE_member_t asn_MBR_FullPositionVector_1[10]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "DDateTime.h" +#include "TransmissionAndSpeed.h" +#include "PositionalAccuracy.h" +#include "PositionConfidenceSet.h" +#include "SpeedandHeadingandThrottleConfidence.h" + +#endif /* _FullPositionVector_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/FurtherInfoID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/FurtherInfoID.h new file mode 100644 index 000000000..9f69347a2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/FurtherInfoID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _FurtherInfoID_H_ +#define _FurtherInfoID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* FurtherInfoID */ +typedef OCTET_STRING_t FurtherInfoID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_FurtherInfoID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_FurtherInfoID; +asn_struct_free_f FurtherInfoID_free; +asn_struct_print_f FurtherInfoID_print; +asn_constr_check_f FurtherInfoID_constraint; +ber_type_decoder_f FurtherInfoID_decode_ber; +der_type_encoder_f FurtherInfoID_encode_der; +xer_type_decoder_f FurtherInfoID_decode_xer; +xer_type_encoder_f FurtherInfoID_encode_xer; +oer_type_decoder_f FurtherInfoID_decode_oer; +oer_type_encoder_f FurtherInfoID_encode_oer; +per_type_decoder_f FurtherInfoID_decode_uper; +per_type_encoder_f FurtherInfoID_encode_uper; +per_type_decoder_f FurtherInfoID_decode_aper; +per_type_encoder_f FurtherInfoID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _FurtherInfoID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/GNSSstatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GNSSstatus.h new file mode 100644 index 000000000..3466ebb95 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GNSSstatus.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _GNSSstatus_H_ +#define _GNSSstatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GNSSstatus { + GNSSstatus_unavailable = 0, + GNSSstatus_isHealthy = 1, + GNSSstatus_isMonitored = 2, + GNSSstatus_baseStationType = 3, + GNSSstatus_aPDOPofUnder5 = 4, + GNSSstatus_inViewOfUnder5 = 5, + GNSSstatus_localCorrectionsPresent = 6, + GNSSstatus_networkCorrectionsPresent = 7 +} e_GNSSstatus; + +/* GNSSstatus */ +typedef BIT_STRING_t GNSSstatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GNSSstatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GNSSstatus; +asn_struct_free_f GNSSstatus_free; +asn_struct_print_f GNSSstatus_print; +asn_constr_check_f GNSSstatus_constraint; +ber_type_decoder_f GNSSstatus_decode_ber; +der_type_encoder_f GNSSstatus_encode_der; +xer_type_decoder_f GNSSstatus_decode_xer; +xer_type_encoder_f GNSSstatus_encode_xer; +oer_type_decoder_f GNSSstatus_decode_oer; +oer_type_encoder_f GNSSstatus_encode_oer; +per_type_decoder_f GNSSstatus_decode_uper; +per_type_encoder_f GNSSstatus_encode_uper; +per_type_decoder_f GNSSstatus_decode_aper; +per_type_encoder_f GNSSstatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNSSstatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeneralString.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeneralString.h new file mode 100644 index 000000000..55b994fa3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeneralString.h @@ -0,0 +1,34 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _GeneralString_H_ +#define _GeneralString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t GeneralString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_GeneralString; +extern asn_TYPE_operation_t asn_OP_GeneralString; + +#define GeneralString_free OCTET_STRING_free +#define GeneralString_print OCTET_STRING_print +#define GeneralString_compare OCTET_STRING_compare +#define GeneralString_constraint asn_generic_unknown_constraint +#define GeneralString_decode_ber OCTET_STRING_decode_ber +#define GeneralString_encode_der OCTET_STRING_encode_der +#define GeneralString_decode_xer OCTET_STRING_decode_xer_hex +#define GeneralString_encode_xer OCTET_STRING_encode_xer +#define GeneralString_decode_uper OCTET_STRING_decode_uper +#define GeneralString_encode_uper OCTET_STRING_encode_uper + +#ifdef __cplusplus +} +#endif + +#endif /* _GeneralString_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeneralizedTime.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeneralizedTime.h new file mode 100644 index 000000000..ace9c0271 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeneralizedTime.h @@ -0,0 +1,77 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _GeneralizedTime_H_ +#define _GeneralizedTime_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t GeneralizedTime_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_GeneralizedTime; +extern asn_TYPE_operation_t asn_OP_GeneralizedTime; + +asn_struct_print_f GeneralizedTime_print; +asn_constr_check_f GeneralizedTime_constraint; +der_type_encoder_f GeneralizedTime_encode_der; +xer_type_encoder_f GeneralizedTime_encode_xer; + +#define GeneralizedTime_free OCTET_STRING_free +#define GeneralizedTime_compare OCTET_STRING_compare +#define GeneralizedTime_decode_ber OCTET_STRING_decode_ber +#define GeneralizedTime_decode_xer OCTET_STRING_decode_xer_utf8 +#define GeneralizedTime_decode_uper OCTET_STRING_decode_uper +#define GeneralizedTime_encode_uper OCTET_STRING_encode_uper + +/*********************** + * Some handy helpers. * + ***********************/ + +struct tm; /* */ + +/* + * Convert a GeneralizedTime structure into time_t + * and optionally into struct tm. + * If as_gmt is given, the resulting _optional_tm4fill will have a GMT zone, + * instead of default local one. + * On error returns -1 and errno set to EINVAL + */ +time_t asn_GT2time(const GeneralizedTime_t *, struct tm *_optional_tm4fill, + int as_gmt); + +/* A version of the above function also returning the fractions of seconds */ +time_t asn_GT2time_frac(const GeneralizedTime_t *, + int *frac_value, int *frac_digits, /* (value / (10 ^ digits)) */ + struct tm *_optional_tm4fill, int as_gmt); + +/* + * Another version returning fractions with defined precision + * For example, parsing of the time ending with ".1" seconds + * with frac_digits=3 (msec) would yield frac_value = 100. + */ +time_t asn_GT2time_prec(const GeneralizedTime_t *, + int *frac_value, int frac_digits, + struct tm *_optional_tm4fill, int as_gmt); + +/* + * Convert a struct tm into GeneralizedTime. + * If _optional_gt is not given, this function will try to allocate one. + * If force_gmt is given, the resulting GeneralizedTime will be forced + * into a GMT time zone (encoding ends with a "Z"). + * On error, this function returns 0 and sets errno. + */ +GeneralizedTime_t *asn_time2GT(GeneralizedTime_t *_optional_gt, + const struct tm *, int force_gmt); +GeneralizedTime_t *asn_time2GT_frac(GeneralizedTime_t *_optional_gt, + const struct tm *, int frac_value, int frac_digits, int force_gmt); + +#ifdef __cplusplus +} +#endif + +#endif /* _GeneralizedTime_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/GenericLane.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GenericLane.h new file mode 100644 index 000000000..728a15169 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GenericLane.h @@ -0,0 +1,75 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _GenericLane_H_ +#define _GenericLane_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LaneID.h" +#include "DescriptiveName.h" +#include "ApproachID.h" +#include "LaneAttributes.h" +#include "AllowedManeuvers.h" +#include "NodeListXY.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ConnectsToList; +struct OverlayLaneList; +struct Reg_GenericLane; + +/* GenericLane */ +typedef struct GenericLane { + LaneID_t laneID; + DescriptiveName_t *name; /* OPTIONAL */ + ApproachID_t *ingressApproach; /* OPTIONAL */ + ApproachID_t *egressApproach; /* OPTIONAL */ + LaneAttributes_t laneAttributes; + AllowedManeuvers_t *maneuvers; /* OPTIONAL */ + NodeListXY_t nodeList; + struct ConnectsToList *connectsTo; /* OPTIONAL */ + struct OverlayLaneList *overlays; /* OPTIONAL */ + struct GenericLane__regional { + A_SEQUENCE_OF(struct Reg_GenericLane) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GenericLane_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GenericLane; +extern asn_SEQUENCE_specifics_t asn_SPC_GenericLane_specs_1; +extern asn_TYPE_member_t asn_MBR_GenericLane_1[10]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ConnectsToList.h" +#include "OverlayLaneList.h" +#include "RegionalExtension.h" + +#endif /* _GenericLane_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/GenericLocations.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GenericLocations.h new file mode 100644 index 000000000..d2bf6034f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GenericLocations.h @@ -0,0 +1,150 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _GenericLocations_H_ +#define _GenericLocations_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GenericLocations { + GenericLocations_on_bridges = 7937, + GenericLocations_in_tunnels = 7938, + GenericLocations_entering_or_leaving_tunnels = 7939, + GenericLocations_on_ramps = 7940, + GenericLocations_in_road_construction_area = 7941, + GenericLocations_around_a_curve = 7942, + GenericLocations_on_curve = 8026, + GenericLocations_on_tracks = 8009, + GenericLocations_in_street = 8025, + GenericLocations_shoulder = 8027, + GenericLocations_on_minor_roads = 7943, + GenericLocations_in_the_opposing_lanes = 7944, + GenericLocations_adjacent_to_roadway = 7945, + GenericLocations_across_tracks = 8024, + GenericLocations_on_bend = 7946, + GenericLocations_intersection = 8032, + GenericLocations_entire_intersection = 7947, + GenericLocations_in_the_median = 7948, + GenericLocations_moved_to_side_of_road = 7949, + GenericLocations_moved_to_shoulder = 7950, + GenericLocations_on_the_roadway = 7951, + GenericLocations_dip = 8010, + GenericLocations_traffic_circle = 8011, + GenericLocations_crossover = 8028, + GenericLocations_cross_road = 8029, + GenericLocations_side_road = 8030, + GenericLocations_to = 8014, + GenericLocations_by = 8015, + GenericLocations_through = 8016, + GenericLocations_area_of = 8017, + GenericLocations_under = 8018, + GenericLocations_over = 8019, + GenericLocations_from = 8020, + GenericLocations_approaching = 8021, + GenericLocations_entering_at = 8022, + GenericLocations_exiting_at = 8023, + GenericLocations_in_shaded_areas = 7952, + GenericLocations_in_low_lying_areas = 7953, + GenericLocations_in_the_downtown_area = 7954, + GenericLocations_in_the_inner_city_area = 7955, + GenericLocations_in_parts = 7956, + GenericLocations_in_some_places = 7957, + GenericLocations_in_the_ditch = 7958, + GenericLocations_in_the_valley = 7959, + GenericLocations_on_hill_top = 7960, + GenericLocations_near_the_foothills = 7961, + GenericLocations_at_high_altitudes = 7962, + GenericLocations_near_the_lake = 7963, + GenericLocations_near_the_shore = 7964, + GenericLocations_nearby_basin = 8008, + GenericLocations_over_the_crest_of_a_hill = 7965, + GenericLocations_other_than_on_the_roadway = 7966, + GenericLocations_near_the_beach = 7967, + GenericLocations_near_beach_access_point = 7968, + GenericLocations_mountain_pass = 8006, + GenericLocations_lower_level = 7969, + GenericLocations_upper_level = 7970, + GenericLocations_airport = 7971, + GenericLocations_concourse = 7972, + GenericLocations_gate = 7973, + GenericLocations_baggage_claim = 7974, + GenericLocations_customs_point = 7975, + GenericLocations_reservation_center = 8007, + GenericLocations_station = 7976, + GenericLocations_platform = 7977, + GenericLocations_dock = 7978, + GenericLocations_depot = 7979, + GenericLocations_ev_charging_point = 7980, + GenericLocations_information_welcome_point = 7981, + GenericLocations_at_rest_area = 7982, + GenericLocations_at_service_area = 7983, + GenericLocations_at_weigh_station = 7984, + GenericLocations_roadside_park = 8033, + GenericLocations_picnic_areas = 7985, + GenericLocations_rest_area = 7986, + GenericLocations_service_stations = 7987, + GenericLocations_toilets = 7988, + GenericLocations_bus_stop = 8031, + GenericLocations_park_and_ride_lot = 8012, + GenericLocations_on_the_right = 7989, + GenericLocations_on_the_left = 7990, + GenericLocations_in_the_center = 7991, + GenericLocations_in_the_opposite_direction = 7992, + GenericLocations_cross_traffic = 7993, + GenericLocations_northbound_traffic = 7994, + GenericLocations_eastbound_traffic = 7995, + GenericLocations_southbound_traffic = 7996, + GenericLocations_westbound_traffic = 7997, + GenericLocations_north = 7998, + GenericLocations_south = 7999, + GenericLocations_east = 8000, + GenericLocations_west = 8001, + GenericLocations_northeast = 8002, + GenericLocations_northwest = 8003, + GenericLocations_southeast = 8004, + GenericLocations_southwest = 8005 + /* + * Enumeration is extensible + */ +} e_GenericLocations; + +/* GenericLocations */ +typedef long GenericLocations_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GenericLocations_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GenericLocations; +extern const asn_INTEGER_specifics_t asn_SPC_GenericLocations_specs_1; +asn_struct_free_f GenericLocations_free; +asn_struct_print_f GenericLocations_print; +asn_constr_check_f GenericLocations_constraint; +ber_type_decoder_f GenericLocations_decode_ber; +der_type_encoder_f GenericLocations_encode_der; +xer_type_decoder_f GenericLocations_decode_xer; +xer_type_encoder_f GenericLocations_encode_xer; +oer_type_decoder_f GenericLocations_decode_oer; +oer_type_encoder_f GenericLocations_encode_oer; +per_type_decoder_f GenericLocations_decode_uper; +per_type_encoder_f GenericLocations_encode_uper; +per_type_decoder_f GenericLocations_decode_aper; +per_type_encoder_f GenericLocations_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GenericLocations_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/GenericSignage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GenericSignage.h new file mode 100644 index 000000000..4eb75d088 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GenericSignage.h @@ -0,0 +1,69 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _GenericSignage_H_ +#define _GenericSignage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ITIScodes.h" +#include "ITIStextPhrase.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GenericSignage__Member__item_PR { + GenericSignage__Member__item_PR_NOTHING, /* No components present */ + GenericSignage__Member__item_PR_itis, + GenericSignage__Member__item_PR_text +} GenericSignage__Member__item_PR; + +/* Forward definitions */ +typedef struct GenericSignage__Member { + struct GenericSignage__Member__item { + GenericSignage__Member__item_PR present; + union GenericSignage__Member__item_u { + ITIScodes_t itis; + ITIStextPhrase_t text; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } item; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GenericSignage__Member; + +/* GenericSignage */ +typedef struct GenericSignage { + A_SEQUENCE_OF(GenericSignage__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GenericSignage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GenericSignage; +extern asn_SET_OF_specifics_t asn_SPC_GenericSignage_specs_1; +extern asn_TYPE_member_t asn_MBR_GenericSignage_1[1]; +extern asn_per_constraints_t asn_PER_type_GenericSignage_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GenericSignage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeographicalPath.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeographicalPath.h new file mode 100644 index 000000000..aaddaff6a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeographicalPath.h @@ -0,0 +1,101 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _GeographicalPath_H_ +#define _GeographicalPath_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DescriptiveName.h" +#include "LaneWidth.h" +#include "DirectionOfUse.h" +#include "BOOLEAN.h" +#include "HeadingSlice.h" +#include "OffsetSystem.h" +#include "GeometricProjection.h" +#include "ValidRegion.h" +#include "constr_CHOICE.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GeographicalPath__description_PR { + GeographicalPath__description_PR_NOTHING, /* No components present */ + GeographicalPath__description_PR_path, + GeographicalPath__description_PR_geometry, + GeographicalPath__description_PR_oldRegion + /* Extensions may appear below */ + +} GeographicalPath__description_PR; + +/* Forward declarations */ +struct RoadSegmentReferenceID; +struct Position3D; +struct Reg_GeographicalPath; + +/* GeographicalPath */ +typedef struct GeographicalPath { + DescriptiveName_t *name; /* OPTIONAL */ + struct RoadSegmentReferenceID *id; /* OPTIONAL */ + struct Position3D *anchor; /* OPTIONAL */ + LaneWidth_t *laneWidth; /* OPTIONAL */ + DirectionOfUse_t *directionality; /* OPTIONAL */ + BOOLEAN_t *closedPath; /* OPTIONAL */ + HeadingSlice_t *direction; /* OPTIONAL */ + struct GeographicalPath__description { + GeographicalPath__description_PR present; + union GeographicalPath__description_u { + OffsetSystem_t path; + GeometricProjection_t geometry; + ValidRegion_t oldRegion; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *description; + struct GeographicalPath__regional { + A_SEQUENCE_OF(struct Reg_GeographicalPath) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GeographicalPath_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GeographicalPath; +extern asn_SEQUENCE_specifics_t asn_SPC_GeographicalPath_specs_1; +extern asn_TYPE_member_t asn_MBR_GeographicalPath_1[9]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RoadSegmentReferenceID.h" +#include "Position3D.h" +#include "RegionalExtension.h" + +#endif /* _GeographicalPath_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeometricProjection.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeometricProjection.h new file mode 100644 index 000000000..61e8b0674 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GeometricProjection.h @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _GeometricProjection_H_ +#define _GeometricProjection_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "HeadingSlice.h" +#include "Extent.h" +#include "LaneWidth.h" +#include "Circle.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_GeometricProjection; + +/* GeometricProjection */ +typedef struct GeometricProjection { + HeadingSlice_t direction; + Extent_t *extent; /* OPTIONAL */ + LaneWidth_t *laneWidth; /* OPTIONAL */ + Circle_t circle; + struct GeometricProjection__regional { + A_SEQUENCE_OF(struct Reg_GeometricProjection) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GeometricProjection_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GeometricProjection; +extern asn_SEQUENCE_specifics_t asn_SPC_GeometricProjection_specs_1; +extern asn_TYPE_member_t asn_MBR_GeometricProjection_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _GeometricProjection_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/GraphicString.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GraphicString.h new file mode 100644 index 000000000..807e9d6b0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GraphicString.h @@ -0,0 +1,56 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _GraphicString_H_ +#define _GraphicString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t GraphicString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_GraphicString; +extern asn_TYPE_operation_t asn_OP_GraphicString; + +#define GraphicString_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define GraphicString_print OCTET_STRING_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define GraphicString_compare OCTET_STRING_compare + +#define GraphicString_constraint asn_generic_unknown_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define GraphicString_decode_ber OCTET_STRING_decode_ber +#define GraphicString_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define GraphicString_decode_xer OCTET_STRING_decode_xer_hex +#define GraphicString_encode_xer OCTET_STRING_encode_xer +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define GraphicString_encode_jer OCTET_STRING_encode_jer +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define GraphicString_decode_uper OCTET_STRING_decode_uper +#define GraphicString_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define GraphicString_decode_aper OCTET_STRING_decode_aper +#define GraphicString_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GraphicString_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/GrossDistance.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GrossDistance.h new file mode 100644 index 000000000..61df4a687 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GrossDistance.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _GrossDistance_H_ +#define _GrossDistance_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GrossDistance */ +typedef long GrossDistance_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GrossDistance_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GrossDistance; +asn_struct_free_f GrossDistance_free; +asn_struct_print_f GrossDistance_print; +asn_constr_check_f GrossDistance_constraint; +ber_type_decoder_f GrossDistance_decode_ber; +der_type_encoder_f GrossDistance_encode_der; +xer_type_decoder_f GrossDistance_decode_xer; +xer_type_encoder_f GrossDistance_encode_xer; +oer_type_decoder_f GrossDistance_decode_oer; +oer_type_encoder_f GrossDistance_encode_oer; +per_type_decoder_f GrossDistance_decode_uper; +per_type_encoder_f GrossDistance_encode_uper; +per_type_decoder_f GrossDistance_decode_aper; +per_type_encoder_f GrossDistance_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GrossDistance_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/GrossSpeed.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GrossSpeed.h new file mode 100644 index 000000000..3e5c68a22 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/GrossSpeed.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _GrossSpeed_H_ +#define _GrossSpeed_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GrossSpeed */ +typedef long GrossSpeed_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GrossSpeed_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GrossSpeed; +asn_struct_free_f GrossSpeed_free; +asn_struct_print_f GrossSpeed_print; +asn_constr_check_f GrossSpeed_constraint; +ber_type_decoder_f GrossSpeed_decode_ber; +der_type_encoder_f GrossSpeed_encode_der; +xer_type_decoder_f GrossSpeed_decode_xer; +xer_type_encoder_f GrossSpeed_encode_xer; +oer_type_decoder_f GrossSpeed_decode_oer; +oer_type_encoder_f GrossSpeed_encode_oer; +per_type_decoder_f GrossSpeed_decode_uper; +per_type_encoder_f GrossSpeed_encode_uper; +per_type_decoder_f GrossSpeed_decode_aper; +per_type_encoder_f GrossSpeed_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GrossSpeed_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Header.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Header.h new file mode 100644 index 000000000..a9708f4d5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Header.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Header_H_ +#define _Header_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DYear.h" +#include "MinuteOfTheYear.h" +#include "DSecond.h" +#include "Common_MsgCount.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Header */ +typedef struct Header { + DYear_t *year; /* OPTIONAL */ + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + DSecond_t *secMark; /* OPTIONAL */ + Common_MsgCount_t *msgIssueRevision; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Header_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Header; +extern asn_SEQUENCE_specifics_t asn_SPC_Header_specs_1; +extern asn_TYPE_member_t asn_MBR_Header_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Header_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Heading.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Heading.h new file mode 100644 index 000000000..cc2f69682 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Heading.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Heading_H_ +#define _Heading_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Heading */ +typedef long Heading_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Heading_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Heading; +asn_struct_free_f Heading_free; +asn_struct_print_f Heading_print; +asn_constr_check_f Heading_constraint; +ber_type_decoder_f Heading_decode_ber; +der_type_encoder_f Heading_encode_der; +xer_type_decoder_f Heading_decode_xer; +xer_type_encoder_f Heading_encode_xer; +oer_type_decoder_f Heading_decode_oer; +oer_type_encoder_f Heading_encode_oer; +per_type_decoder_f Heading_decode_uper; +per_type_encoder_f Heading_encode_uper; +per_type_decoder_f Heading_decode_aper; +per_type_encoder_f Heading_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Heading_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/HeadingConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/HeadingConfidence.h new file mode 100644 index 000000000..3b2b8b1b0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/HeadingConfidence.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _HeadingConfidence_H_ +#define _HeadingConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HeadingConfidence { + HeadingConfidence_unavailable = 0, + HeadingConfidence_prec10deg = 1, + HeadingConfidence_prec05deg = 2, + HeadingConfidence_prec01deg = 3, + HeadingConfidence_prec0_1deg = 4, + HeadingConfidence_prec0_05deg = 5, + HeadingConfidence_prec0_01deg = 6, + HeadingConfidence_prec0_0125deg = 7 +} e_HeadingConfidence; + +/* HeadingConfidence */ +typedef long HeadingConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HeadingConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HeadingConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_HeadingConfidence_specs_1; +asn_struct_free_f HeadingConfidence_free; +asn_struct_print_f HeadingConfidence_print; +asn_constr_check_f HeadingConfidence_constraint; +ber_type_decoder_f HeadingConfidence_decode_ber; +der_type_encoder_f HeadingConfidence_encode_der; +xer_type_decoder_f HeadingConfidence_decode_xer; +xer_type_encoder_f HeadingConfidence_encode_xer; +oer_type_decoder_f HeadingConfidence_decode_oer; +oer_type_encoder_f HeadingConfidence_encode_oer; +per_type_decoder_f HeadingConfidence_decode_uper; +per_type_encoder_f HeadingConfidence_encode_uper; +per_type_decoder_f HeadingConfidence_decode_aper; +per_type_encoder_f HeadingConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HeadingConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/HeadingSlice.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/HeadingSlice.h new file mode 100644 index 000000000..2ce3d8b4f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/HeadingSlice.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _HeadingSlice_H_ +#define _HeadingSlice_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HeadingSlice { + HeadingSlice_from000_0to022_5degrees = 0, + HeadingSlice_from022_5to045_0degrees = 1, + HeadingSlice_from045_0to067_5degrees = 2, + HeadingSlice_from067_5to090_0degrees = 3, + HeadingSlice_from090_0to112_5degrees = 4, + HeadingSlice_from112_5to135_0degrees = 5, + HeadingSlice_from135_0to157_5degrees = 6, + HeadingSlice_from157_5to180_0degrees = 7, + HeadingSlice_from180_0to202_5degrees = 8, + HeadingSlice_from202_5to225_0degrees = 9, + HeadingSlice_from225_0to247_5degrees = 10, + HeadingSlice_from247_5to270_0degrees = 11, + HeadingSlice_from270_0to292_5degrees = 12, + HeadingSlice_from292_5to315_0degrees = 13, + HeadingSlice_from315_0to337_5degrees = 14, + HeadingSlice_from337_5to360_0degrees = 15 +} e_HeadingSlice; + +/* HeadingSlice */ +typedef BIT_STRING_t HeadingSlice_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HeadingSlice_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HeadingSlice; +asn_struct_free_f HeadingSlice_free; +asn_struct_print_f HeadingSlice_print; +asn_constr_check_f HeadingSlice_constraint; +ber_type_decoder_f HeadingSlice_decode_ber; +der_type_encoder_f HeadingSlice_encode_der; +xer_type_decoder_f HeadingSlice_decode_xer; +xer_type_encoder_f HeadingSlice_encode_xer; +oer_type_decoder_f HeadingSlice_decode_oer; +oer_type_encoder_f HeadingSlice_encode_oer; +per_type_decoder_f HeadingSlice_decode_uper; +per_type_encoder_f HeadingSlice_encode_uper; +per_type_decoder_f HeadingSlice_decode_aper; +per_type_encoder_f HeadingSlice_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HeadingSlice_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Holiday.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Holiday.h new file mode 100644 index 000000000..1c319c8a3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Holiday.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Holiday_H_ +#define _Holiday_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Holiday { + Holiday_weekday = 0, + Holiday_holiday = 1 +} e_Holiday; + +/* Holiday */ +typedef long Holiday_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Holiday_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Holiday; +extern const asn_INTEGER_specifics_t asn_SPC_Holiday_specs_1; +asn_struct_free_f Holiday_free; +asn_struct_print_f Holiday_print; +asn_constr_check_f Holiday_constraint; +ber_type_decoder_f Holiday_decode_ber; +der_type_encoder_f Holiday_encode_der; +xer_type_decoder_f Holiday_decode_xer; +xer_type_encoder_f Holiday_encode_xer; +oer_type_decoder_f Holiday_decode_oer; +oer_type_encoder_f Holiday_encode_oer; +per_type_decoder_f Holiday_decode_uper; +per_type_encoder_f Holiday_encode_uper; +per_type_decoder_f Holiday_decode_aper; +per_type_encoder_f Holiday_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Holiday_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Hour.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Hour.h new file mode 100644 index 000000000..972139b3f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Hour.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Hour_H_ +#define _Hour_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Hour */ +typedef long Hour_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Hour_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Hour; +asn_struct_free_f Hour_free; +asn_struct_print_f Hour_print; +asn_constr_check_f Hour_constraint; +ber_type_decoder_f Hour_decode_ber; +der_type_encoder_f Hour_encode_der; +xer_type_decoder_f Hour_decode_xer; +xer_type_encoder_f Hour_encode_xer; +oer_type_decoder_f Hour_decode_oer; +oer_type_encoder_f Hour_encode_oer; +per_type_decoder_f Hour_decode_uper; +per_type_encoder_f Hour_encode_uper; +per_type_decoder_f Hour_decode_aper; +per_type_encoder_f Hour_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Hour_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/HumanPropelledType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/HumanPropelledType.h new file mode 100644 index 000000000..59f4dfdf5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/HumanPropelledType.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _HumanPropelledType_H_ +#define _HumanPropelledType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HumanPropelledType { + HumanPropelledType_unavailable = 0, + HumanPropelledType_otherTypes = 1, + HumanPropelledType_onFoot = 2, + HumanPropelledType_skateboard = 3, + HumanPropelledType_pushOrKickScooter = 4, + HumanPropelledType_wheelchair = 5 + /* + * Enumeration is extensible + */ +} e_HumanPropelledType; + +/* HumanPropelledType */ +typedef long HumanPropelledType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HumanPropelledType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HumanPropelledType; +extern const asn_INTEGER_specifics_t asn_SPC_HumanPropelledType_specs_1; +asn_struct_free_f HumanPropelledType_free; +asn_struct_print_f HumanPropelledType_print; +asn_constr_check_f HumanPropelledType_constraint; +ber_type_decoder_f HumanPropelledType_decode_ber; +der_type_encoder_f HumanPropelledType_encode_der; +xer_type_decoder_f HumanPropelledType_decode_xer; +xer_type_encoder_f HumanPropelledType_encode_xer; +oer_type_decoder_f HumanPropelledType_decode_oer; +oer_type_encoder_f HumanPropelledType_encode_oer; +per_type_decoder_f HumanPropelledType_decode_uper; +per_type_encoder_f HumanPropelledType_encode_uper; +per_type_decoder_f HumanPropelledType_decode_aper; +per_type_encoder_f HumanPropelledType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HumanPropelledType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IA5String.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IA5String.h new file mode 100644 index 000000000..195f474a1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IA5String.h @@ -0,0 +1,59 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _IA5String_H_ +#define _IA5String_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t IA5String_t; /* Implemented via OCTET STRING */ + +/* + * IA5String ASN.1 type definition. + */ +extern asn_TYPE_descriptor_t asn_DEF_IA5String; +extern asn_TYPE_operation_t asn_OP_IA5String; + +#define IA5String_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define IA5String_print OCTET_STRING_print_utf8 +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define IA5String_compare OCTET_STRING_compare + +asn_constr_check_f IA5String_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define IA5String_decode_ber OCTET_STRING_decode_ber +#define IA5String_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define IA5String_decode_xer OCTET_STRING_decode_xer_utf8 +#define IA5String_encode_xer OCTET_STRING_encode_xer_utf8 +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define IA5String_encode_jer OCTET_STRING_encode_jer_utf8 +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define IA5String_decode_uper OCTET_STRING_decode_uper +#define IA5String_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define IA5String_decode_aper OCTET_STRING_decode_aper +#define IA5String_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _IA5String_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/INTEGER.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/INTEGER.h new file mode 100644 index 000000000..1666e0bce --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/INTEGER.h @@ -0,0 +1,139 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _INTEGER_H_ +#define _INTEGER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ASN__PRIMITIVE_TYPE_t INTEGER_t; + +extern asn_TYPE_descriptor_t asn_DEF_INTEGER; +extern asn_TYPE_operation_t asn_OP_INTEGER; + +/* Map with to integer value association */ +typedef struct asn_INTEGER_enum_map_s { + long nat_value; /* associated native integer value */ + size_t enum_len; /* strlen("tag") */ + const char *enum_name; /* "tag" */ +} asn_INTEGER_enum_map_t; + +/* This type describes an enumeration for INTEGER and ENUMERATED types */ +typedef struct asn_INTEGER_specifics_s { + const asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */ + const unsigned int *enum2value; /* "tag" => N; sorted by tag */ + int map_count; /* Elements in either map */ + int extension; /* This map is extensible */ + int strict_enumeration; /* Enumeration set is fixed */ + int field_width; /* Size of native integer */ + int field_unsigned; /* Signed=0, unsigned=1 */ +} asn_INTEGER_specifics_t; + +ssize_t INTEGER__dump(const asn_TYPE_descriptor_t *td, + const INTEGER_t *st, + asn_app_consume_bytes_f *cb, + void *app_key, int plainOrXER); + +#define INTEGER_free ASN__PRIMITIVE_TYPE_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f INTEGER_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f INTEGER_compare; + +#define INTEGER_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define INTEGER_decode_ber ber_decode_primitive +der_type_encoder_f INTEGER_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f INTEGER_decode_xer; +xer_type_encoder_f INTEGER_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f INTEGER_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f INTEGER_decode_oer; +oer_type_encoder_f INTEGER_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f INTEGER_decode_uper; +per_type_encoder_f INTEGER_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f INTEGER_decode_aper; +per_type_encoder_f INTEGER_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f INTEGER_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +/*********************************** + * Some handy conversion routines. * + ***********************************/ + +/* + * Natiwe size-independent conversion of native integers to/from INTEGER. + * (l_size) is in bytes. + * Returns 0 if it was possible to convert, -1 otherwise. + * -1/EINVAL: Mandatory argument missing + * -1/ERANGE: Value encoded is out of range for long representation + * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()). + */ +int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l); +int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l); +int asn_imax2INTEGER(INTEGER_t *i, intmax_t l); +int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l); + +/* + * Size-specific conversion helpers. + */ +int asn_INTEGER2long(const INTEGER_t *i, long *l); +int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l); +int asn_long2INTEGER(INTEGER_t *i, long l); +int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l); +int asn_int642INTEGER(INTEGER_t *i, int64_t l); +int asn_uint642INTEGER(INTEGER_t *i, uint64_t l); + +/* A version of strtol/strtoimax(3) with nicer error reporting. */ +enum asn_strtox_result_e { + ASN_STRTOX_ERROR_RANGE = -3, /* Input outside of supported numeric range */ + ASN_STRTOX_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */ + ASN_STRTOX_EXPECT_MORE = -1, /* More data expected (e.g. "+") */ + ASN_STRTOX_OK = 0, /* Conversion succeeded, number ends at (*end) */ + ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeeded, but the string has extra stuff */ +}; +enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end, + long *l); +enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end, + unsigned long *l); +enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end, + intmax_t *l); +enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end, + uintmax_t *l); + +/* + * Convert the integer value into the corresponding enumeration map entry. + */ +const asn_INTEGER_enum_map_t *INTEGER_map_value2enum( + const asn_INTEGER_specifics_t *specs, long value); + +#ifdef __cplusplus +} +#endif + +#endif /* _INTEGER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ISO646String.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ISO646String.h new file mode 100644 index 000000000..494831541 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ISO646String.h @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _ISO646String_H_ +#define _ISO646String_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef VisibleString_t ISO646String_t; /* Implemented using VisibleString */ + +extern asn_TYPE_descriptor_t asn_DEF_ISO646String; +extern asn_TYPE_operation_t asn_OP_ISO646String; + +#define ISO646String_free OCTET_STRING_free +#define ISO646String_print OCTET_STRING_print_utf8 +#define ISO646String_compare OCTET_STRING_compare +#define ISO646String_constraint VisibleString_constraint +#define ISO646String_decode_ber OCTET_STRING_decode_ber +#define ISO646String_encode_der OCTET_STRING_encode_der +#define ISO646String_decode_xer OCTET_STRING_decode_xer_utf8 +#define ISO646String_encode_xer OCTET_STRING_encode_xer_utf8 +#define ISO646String_decode_uper OCTET_STRING_decode_uper +#define ISO646String_encode_uper OCTET_STRING_encode_uper + +#ifdef __cplusplus +} +#endif + +#endif /* _ISO646String_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIScodes.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIScodes.h new file mode 100644 index 000000000..5624a71f5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIScodes.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ITIScodes_H_ +#define _ITIScodes_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ITIScodes */ +typedef long ITIScodes_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ITIScodes_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ITIScodes; +asn_struct_free_f ITIScodes_free; +asn_struct_print_f ITIScodes_print; +asn_constr_check_f ITIScodes_constraint; +ber_type_decoder_f ITIScodes_decode_ber; +der_type_encoder_f ITIScodes_encode_der; +xer_type_decoder_f ITIScodes_decode_xer; +xer_type_encoder_f ITIScodes_encode_xer; +oer_type_decoder_f ITIScodes_decode_oer; +oer_type_encoder_f ITIScodes_encode_oer; +per_type_decoder_f ITIScodes_decode_uper; +per_type_encoder_f ITIScodes_encode_uper; +per_type_decoder_f ITIScodes_decode_aper; +per_type_encoder_f ITIScodes_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ITIScodes_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIScodesAndText.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIScodesAndText.h new file mode 100644 index 000000000..09687c473 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIScodesAndText.h @@ -0,0 +1,69 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ITIScodesAndText_H_ +#define _ITIScodesAndText_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ITIScodes.h" +#include "ITIStext.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ITIScodesAndText__Member__item_PR { + ITIScodesAndText__Member__item_PR_NOTHING, /* No components present */ + ITIScodesAndText__Member__item_PR_itis, + ITIScodesAndText__Member__item_PR_text +} ITIScodesAndText__Member__item_PR; + +/* Forward definitions */ +typedef struct ITIScodesAndText__Member { + struct ITIScodesAndText__Member__item { + ITIScodesAndText__Member__item_PR present; + union ITIScodesAndText__Member__item_u { + ITIScodes_t itis; + ITIStext_t text; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } item; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ITIScodesAndText__Member; + +/* ITIScodesAndText */ +typedef struct ITIScodesAndText { + A_SEQUENCE_OF(ITIScodesAndText__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ITIScodesAndText_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ITIScodesAndText; +extern asn_SET_OF_specifics_t asn_SPC_ITIScodesAndText_specs_1; +extern asn_TYPE_member_t asn_MBR_ITIScodesAndText_1[1]; +extern asn_per_constraints_t asn_PER_type_ITIScodesAndText_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ITIScodesAndText_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIStext.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIStext.h new file mode 100644 index 000000000..490c849ff --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIStext.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ITIStext_H_ +#define _ITIStext_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ITIStext */ +typedef IA5String_t ITIStext_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ITIStext_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ITIStext; +asn_struct_free_f ITIStext_free; +asn_struct_print_f ITIStext_print; +asn_constr_check_f ITIStext_constraint; +ber_type_decoder_f ITIStext_decode_ber; +der_type_encoder_f ITIStext_encode_der; +xer_type_decoder_f ITIStext_decode_xer; +xer_type_encoder_f ITIStext_encode_xer; +oer_type_decoder_f ITIStext_decode_oer; +oer_type_encoder_f ITIStext_encode_oer; +per_type_decoder_f ITIStext_decode_uper; +per_type_encoder_f ITIStext_encode_uper; +per_type_decoder_f ITIStext_decode_aper; +per_type_encoder_f ITIStext_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ITIStext_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIStextPhrase.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIStextPhrase.h new file mode 100644 index 000000000..b07d39046 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ITIStextPhrase.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ITIStextPhrase_H_ +#define _ITIStextPhrase_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ITIStextPhrase */ +typedef IA5String_t ITIStextPhrase_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ITIStextPhrase_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ITIStextPhrase; +asn_struct_free_f ITIStextPhrase_free; +asn_struct_print_f ITIStextPhrase_print; +asn_constr_check_f ITIStextPhrase_constraint; +ber_type_decoder_f ITIStextPhrase_decode_ber; +der_type_encoder_f ITIStextPhrase_encode_der; +xer_type_decoder_f ITIStextPhrase_decode_xer; +xer_type_encoder_f ITIStextPhrase_encode_xer; +oer_type_decoder_f ITIStextPhrase_decode_oer; +oer_type_encoder_f ITIStextPhrase_encode_oer; +per_type_decoder_f ITIStextPhrase_decode_uper; +per_type_encoder_f ITIStextPhrase_encode_uper; +per_type_decoder_f ITIStextPhrase_decode_aper; +per_type_encoder_f ITIStextPhrase_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ITIStextPhrase_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Id128b.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Id128b.h new file mode 100644 index 000000000..0c58f036d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Id128b.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _Id128b_H_ +#define _Id128b_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Id128b */ +typedef OCTET_STRING_t Id128b_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Id128b_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Id128b; +asn_struct_free_f Id128b_free; +asn_struct_print_f Id128b_print; +asn_constr_check_f Id128b_constraint; +ber_type_decoder_f Id128b_decode_ber; +der_type_encoder_f Id128b_encode_der; +xer_type_decoder_f Id128b_decode_xer; +xer_type_encoder_f Id128b_encode_xer; +oer_type_decoder_f Id128b_decode_oer; +oer_type_encoder_f Id128b_encode_oer; +per_type_decoder_f Id128b_decode_uper; +per_type_encoder_f Id128b_encode_uper; +per_type_decoder_f Id128b_decode_aper; +per_type_encoder_f Id128b_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Id128b_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Id64b.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Id64b.h new file mode 100644 index 000000000..703feb0f8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Id64b.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _Id64b_H_ +#define _Id64b_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Id64b */ +typedef OCTET_STRING_t Id64b_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Id64b_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Id64b; +asn_struct_free_f Id64b_free; +asn_struct_print_f Id64b_print; +asn_constr_check_f Id64b_constraint; +ber_type_decoder_f Id64b_decode_ber; +der_type_encoder_f Id64b_encode_der; +xer_type_decoder_f Id64b_decode_xer; +xer_type_encoder_f Id64b_encode_xer; +oer_type_decoder_f Id64b_decode_oer; +oer_type_encoder_f Id64b_encode_oer; +per_type_decoder_f Id64b_decode_uper; +per_type_encoder_f Id64b_encode_uper; +per_type_decoder_f Id64b_decode_aper; +per_type_encoder_f Id64b_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Id64b_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IncidentResponseEquipment.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IncidentResponseEquipment.h new file mode 100644 index 000000000..73dd57070 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IncidentResponseEquipment.h @@ -0,0 +1,126 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IncidentResponseEquipment_H_ +#define _IncidentResponseEquipment_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum IncidentResponseEquipment { + IncidentResponseEquipment_ground_fire_suppression = 9985, + IncidentResponseEquipment_heavy_ground_equipment = 9986, + IncidentResponseEquipment_aircraft = 9988, + IncidentResponseEquipment_marine_equipment = 9989, + IncidentResponseEquipment_support_equipment = 9990, + IncidentResponseEquipment_medical_rescue_unit = 9991, + IncidentResponseEquipment_other = 9993, + IncidentResponseEquipment_ground_fire_suppression_other = 9994, + IncidentResponseEquipment_engine = 9995, + IncidentResponseEquipment_truck_or_aerial = 9996, + IncidentResponseEquipment_quint = 9997, + IncidentResponseEquipment_tanker_pumper_combination = 9998, + IncidentResponseEquipment_brush_truck = 10000, + IncidentResponseEquipment_aircraft_rescue_firefighting = 10001, + IncidentResponseEquipment_heavy_ground_equipment_other = 10004, + IncidentResponseEquipment_dozer_or_plow = 10005, + IncidentResponseEquipment_tractor = 10006, + IncidentResponseEquipment_tanker_or_tender = 10008, + IncidentResponseEquipment_aircraft_other = 10024, + IncidentResponseEquipment_aircraft_fixed_wing_tanker = 10025, + IncidentResponseEquipment_helitanker = 10026, + IncidentResponseEquipment_helicopter = 10027, + IncidentResponseEquipment_marine_equipment_other = 10034, + IncidentResponseEquipment_fire_boat_with_pump = 10035, + IncidentResponseEquipment_boat_no_pump = 10036, + IncidentResponseEquipment_support_apparatus_other = 10044, + IncidentResponseEquipment_breathing_apparatus_support = 10045, + IncidentResponseEquipment_light_and_air_unit = 10046, + IncidentResponseEquipment_medical_rescue_unit_other = 10054, + IncidentResponseEquipment_rescue_unit = 10055, + IncidentResponseEquipment_urban_search_rescue_unit = 10056, + IncidentResponseEquipment_high_angle_rescue = 10057, + IncidentResponseEquipment_crash_fire_rescue = 10058, + IncidentResponseEquipment_bLS_unit = 10059, + IncidentResponseEquipment_aLS_unit = 10060, + IncidentResponseEquipment_mobile_command_post = 10075, + IncidentResponseEquipment_chief_officer_car = 10076, + IncidentResponseEquipment_hAZMAT_unit = 10077, + IncidentResponseEquipment_type_i_hand_crew = 10078, + IncidentResponseEquipment_type_ii_hand_crew = 10079, + IncidentResponseEquipment_privately_owned_vehicle = 10083, + IncidentResponseEquipment_other_apparatus_resource = 10084, + IncidentResponseEquipment_ambulance = 10085, + IncidentResponseEquipment_bomb_squad_van = 10086, + IncidentResponseEquipment_combine_harvester = 10087, + IncidentResponseEquipment_construction_vehicle = 10088, + IncidentResponseEquipment_farm_tractor = 10089, + IncidentResponseEquipment_grass_cutting_machines = 10090, + IncidentResponseEquipment_hAZMAT_containment_tow = 10091, + IncidentResponseEquipment_heavy_tow = 10092, + IncidentResponseEquipment_light_tow = 10094, + IncidentResponseEquipment_flatbed_tow = 10114, + IncidentResponseEquipment_hedge_cutting_machines = 10093, + IncidentResponseEquipment_mobile_crane = 10095, + IncidentResponseEquipment_refuse_collection_vehicle = 10096, + IncidentResponseEquipment_resurfacing_vehicle = 10097, + IncidentResponseEquipment_road_sweeper = 10098, + IncidentResponseEquipment_roadside_litter_collection_crews = 10099, + IncidentResponseEquipment_salvage_vehicle = 10100, + IncidentResponseEquipment_sand_truck = 10101, + IncidentResponseEquipment_snowplow = 10102, + IncidentResponseEquipment_steam_roller = 10103, + IncidentResponseEquipment_swat_team_van = 10104, + IncidentResponseEquipment_track_laying_vehicle = 10105, + IncidentResponseEquipment_unknown_vehicle = 10106, + IncidentResponseEquipment_white_lining_vehicle = 10107, + IncidentResponseEquipment_dump_truck = 10108, + IncidentResponseEquipment_supervisor_vehicle = 10109, + IncidentResponseEquipment_snow_blower = 10110, + IncidentResponseEquipment_rotary_snow_blower = 10111, + IncidentResponseEquipment_road_grader = 10112, + IncidentResponseEquipment_steam_truck = 10113 + /* + * Enumeration is extensible + */ +} e_IncidentResponseEquipment; + +/* IncidentResponseEquipment */ +typedef long IncidentResponseEquipment_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_IncidentResponseEquipment_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_IncidentResponseEquipment; +extern const asn_INTEGER_specifics_t asn_SPC_IncidentResponseEquipment_specs_1; +asn_struct_free_f IncidentResponseEquipment_free; +asn_struct_print_f IncidentResponseEquipment_print; +asn_constr_check_f IncidentResponseEquipment_constraint; +ber_type_decoder_f IncidentResponseEquipment_decode_ber; +der_type_encoder_f IncidentResponseEquipment_encode_der; +xer_type_decoder_f IncidentResponseEquipment_decode_xer; +xer_type_encoder_f IncidentResponseEquipment_encode_xer; +oer_type_decoder_f IncidentResponseEquipment_decode_oer; +oer_type_encoder_f IncidentResponseEquipment_encode_oer; +per_type_decoder_f IncidentResponseEquipment_decode_uper; +per_type_encoder_f IncidentResponseEquipment_encode_uper; +per_type_decoder_f IncidentResponseEquipment_decode_aper; +per_type_encoder_f IncidentResponseEquipment_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IncidentResponseEquipment_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionAccessPoint.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionAccessPoint.h new file mode 100644 index 000000000..df66b4006 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionAccessPoint.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IntersectionAccessPoint_H_ +#define _IntersectionAccessPoint_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LaneID.h" +#include "ApproachID.h" +#include "LaneConnectionID.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum IntersectionAccessPoint_PR { + IntersectionAccessPoint_PR_NOTHING, /* No components present */ + IntersectionAccessPoint_PR_lane, + IntersectionAccessPoint_PR_approach, + IntersectionAccessPoint_PR_connection + /* Extensions may appear below */ + +} IntersectionAccessPoint_PR; + +/* IntersectionAccessPoint */ +typedef struct IntersectionAccessPoint { + IntersectionAccessPoint_PR present; + union IntersectionAccessPoint_u { + LaneID_t lane; + ApproachID_t approach; + LaneConnectionID_t connection; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IntersectionAccessPoint_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IntersectionAccessPoint; +extern asn_CHOICE_specifics_t asn_SPC_IntersectionAccessPoint_specs_1; +extern asn_TYPE_member_t asn_MBR_IntersectionAccessPoint_1[3]; +extern asn_per_constraints_t asn_PER_type_IntersectionAccessPoint_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _IntersectionAccessPoint_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionCollision.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionCollision.h new file mode 100644 index 000000000..fba78299e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionCollision.h @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "IntersectionCollision" + * found in "J2735-IntersectionCollision.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IntersectionCollision_H_ +#define _IntersectionCollision_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Common_MsgCount.h" +#include "TemporaryID.h" +#include "MinuteOfTheYear.h" +#include "IntersectionReferenceID.h" +#include "ApproachOrLane.h" +#include "VehicleEventFlags.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct BSMcoreData; +struct PathHistory; +struct PathPrediction; +struct Reg_IntersectionCollision; + +/* IntersectionCollision */ +typedef struct IntersectionCollision { + Common_MsgCount_t msgCnt; + TemporaryID_t id; + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + struct BSMcoreData *partOne; /* OPTIONAL */ + struct PathHistory *path; /* OPTIONAL */ + struct PathPrediction *pathPrediction; /* OPTIONAL */ + IntersectionReferenceID_t intersectionID; + ApproachOrLane_t laneNumber; + VehicleEventFlags_t eventFlag; + struct IntersectionCollision__regional { + A_SEQUENCE_OF(struct Reg_IntersectionCollision) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IntersectionCollision_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IntersectionCollision; +extern asn_SEQUENCE_specifics_t asn_SPC_IntersectionCollision_specs_1; +extern asn_TYPE_member_t asn_MBR_IntersectionCollision_1[10]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "BSMcoreData.h" +#include "PathHistory.h" +#include "PathPrediction.h" +#include "RegionalExtension.h" + +#endif /* _IntersectionCollision_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionGeometry.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionGeometry.h new file mode 100644 index 000000000..63bb86240 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionGeometry.h @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IntersectionGeometry_H_ +#define _IntersectionGeometry_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DescriptiveName.h" +#include "IntersectionReferenceID.h" +#include "Common_MsgCount.h" +#include "Position3D.h" +#include "LaneWidth.h" +#include "LaneList.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SpeedLimitList; +struct PreemptPriorityList; +struct Reg_IntersectionGeometry; + +/* IntersectionGeometry */ +typedef struct IntersectionGeometry { + DescriptiveName_t *name; /* OPTIONAL */ + IntersectionReferenceID_t id; + Common_MsgCount_t revision; + Position3D_t refPoint; + LaneWidth_t *laneWidth; /* OPTIONAL */ + struct SpeedLimitList *speedLimits; /* OPTIONAL */ + LaneList_t laneSet; + struct PreemptPriorityList *preemptPriorityData; /* OPTIONAL */ + struct IntersectionGeometry__regional { + A_SEQUENCE_OF(struct Reg_IntersectionGeometry) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IntersectionGeometry_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IntersectionGeometry; +extern asn_SEQUENCE_specifics_t asn_SPC_IntersectionGeometry_specs_1; +extern asn_TYPE_member_t asn_MBR_IntersectionGeometry_1[9]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "SpeedLimitList.h" +#include "PreemptPriorityList.h" +#include "RegionalExtension.h" + +#endif /* _IntersectionGeometry_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionGeometryList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionGeometryList.h new file mode 100644 index 000000000..9c3c28e81 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionGeometryList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IntersectionGeometryList_H_ +#define _IntersectionGeometryList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IntersectionGeometry; + +/* IntersectionGeometryList */ +typedef struct IntersectionGeometryList { + A_SEQUENCE_OF(struct IntersectionGeometry) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IntersectionGeometryList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IntersectionGeometryList; +extern asn_SET_OF_specifics_t asn_SPC_IntersectionGeometryList_specs_1; +extern asn_TYPE_member_t asn_MBR_IntersectionGeometryList_1[1]; +extern asn_per_constraints_t asn_PER_type_IntersectionGeometryList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IntersectionGeometry.h" + +#endif /* _IntersectionGeometryList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionID.h new file mode 100644 index 000000000..868ad082e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IntersectionID_H_ +#define _IntersectionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* IntersectionID */ +typedef long IntersectionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_IntersectionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_IntersectionID; +asn_struct_free_f IntersectionID_free; +asn_struct_print_f IntersectionID_print; +asn_constr_check_f IntersectionID_constraint; +ber_type_decoder_f IntersectionID_decode_ber; +der_type_encoder_f IntersectionID_encode_der; +xer_type_decoder_f IntersectionID_decode_xer; +xer_type_encoder_f IntersectionID_encode_xer; +oer_type_decoder_f IntersectionID_decode_oer; +oer_type_encoder_f IntersectionID_encode_oer; +per_type_decoder_f IntersectionID_decode_uper; +per_type_encoder_f IntersectionID_encode_uper; +per_type_decoder_f IntersectionID_decode_aper; +per_type_encoder_f IntersectionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IntersectionID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionReferenceID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionReferenceID.h new file mode 100644 index 000000000..b9a608440 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionReferenceID.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IntersectionReferenceID_H_ +#define _IntersectionReferenceID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RoadRegulatorID.h" +#include "IntersectionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* IntersectionReferenceID */ +typedef struct IntersectionReferenceID { + RoadRegulatorID_t *region; /* OPTIONAL */ + IntersectionID_t id; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IntersectionReferenceID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IntersectionReferenceID; +extern asn_SEQUENCE_specifics_t asn_SPC_IntersectionReferenceID_specs_1; +extern asn_TYPE_member_t asn_MBR_IntersectionReferenceID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _IntersectionReferenceID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionState-addGrpC.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionState-addGrpC.h new file mode 100644 index 000000000..44ce75530 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionState-addGrpC.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IntersectionState_addGrpC_H_ +#define _IntersectionState_addGrpC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PrioritizationResponseList; + +/* IntersectionState-addGrpC */ +typedef struct IntersectionState_addGrpC { + struct PrioritizationResponseList *activePrioritizations; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IntersectionState_addGrpC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IntersectionState_addGrpC; +extern asn_SEQUENCE_specifics_t asn_SPC_IntersectionState_addGrpC_specs_1; +extern asn_TYPE_member_t asn_MBR_IntersectionState_addGrpC_1[1]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "PrioritizationResponseList.h" + +#endif /* _IntersectionState_addGrpC_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionState.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionState.h new file mode 100644 index 000000000..3fbd9e8db --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionState.h @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IntersectionState_H_ +#define _IntersectionState_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DescriptiveName.h" +#include "IntersectionReferenceID.h" +#include "Common_MsgCount.h" +#include "IntersectionStatusObject.h" +#include "MinuteOfTheYear.h" +#include "DSecond.h" +#include "MovementList.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct EnabledLaneList; +struct ManeuverAssistList; +struct Reg_IntersectionState; + +/* IntersectionState */ +typedef struct IntersectionState { + DescriptiveName_t *name; /* OPTIONAL */ + IntersectionReferenceID_t id; + Common_MsgCount_t revision; + IntersectionStatusObject_t status; + MinuteOfTheYear_t *moy; /* OPTIONAL */ + DSecond_t *timeStamp; /* OPTIONAL */ + struct EnabledLaneList *enabledLanes; /* OPTIONAL */ + MovementList_t states; + struct ManeuverAssistList *maneuverAssistList; /* OPTIONAL */ + struct IntersectionState__regional { + A_SEQUENCE_OF(struct Reg_IntersectionState) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IntersectionState_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IntersectionState; +extern asn_SEQUENCE_specifics_t asn_SPC_IntersectionState_specs_1; +extern asn_TYPE_member_t asn_MBR_IntersectionState_1[10]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "EnabledLaneList.h" +#include "ManeuverAssistList.h" +#include "RegionalExtension.h" + +#endif /* _IntersectionState_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionStateList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionStateList.h new file mode 100644 index 000000000..694325614 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionStateList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IntersectionStateList_H_ +#define _IntersectionStateList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IntersectionState; + +/* IntersectionStateList */ +typedef struct IntersectionStateList { + A_SEQUENCE_OF(struct IntersectionState) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IntersectionStateList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IntersectionStateList; +extern asn_SET_OF_specifics_t asn_SPC_IntersectionStateList_specs_1; +extern asn_TYPE_member_t asn_MBR_IntersectionStateList_1[1]; +extern asn_per_constraints_t asn_PER_type_IntersectionStateList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IntersectionState.h" + +#endif /* _IntersectionStateList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionStatusObject.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionStatusObject.h new file mode 100644 index 000000000..c100476d9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IntersectionStatusObject.h @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IntersectionStatusObject_H_ +#define _IntersectionStatusObject_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum IntersectionStatusObject { + IntersectionStatusObject_manualControlIsEnabled = 0, + IntersectionStatusObject_stopTimeIsActivated = 1, + IntersectionStatusObject_failureFlash = 2, + IntersectionStatusObject_preemptIsActive = 3, + IntersectionStatusObject_signalPriorityIsActive = 4, + IntersectionStatusObject_fixedTimeOperation = 5, + IntersectionStatusObject_trafficDependentOperation = 6, + IntersectionStatusObject_standbyOperation = 7, + IntersectionStatusObject_failureMode = 8, + IntersectionStatusObject_off = 9, + IntersectionStatusObject_recentMAPmessageUpdate = 10, + IntersectionStatusObject_recentChangeInMAPassignedLanesIDsUsed = 11, + IntersectionStatusObject_noValidMAPisAvailableAtThisTime = 12, + IntersectionStatusObject_noValidSPATisAvailableAtThisTime = 13 +} e_IntersectionStatusObject; + +/* IntersectionStatusObject */ +typedef BIT_STRING_t IntersectionStatusObject_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_IntersectionStatusObject_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_IntersectionStatusObject; +asn_struct_free_f IntersectionStatusObject_free; +asn_struct_print_f IntersectionStatusObject_print; +asn_constr_check_f IntersectionStatusObject_constraint; +ber_type_decoder_f IntersectionStatusObject_decode_ber; +der_type_encoder_f IntersectionStatusObject_encode_der; +xer_type_decoder_f IntersectionStatusObject_decode_xer; +xer_type_encoder_f IntersectionStatusObject_encode_xer; +oer_type_decoder_f IntersectionStatusObject_decode_oer; +oer_type_encoder_f IntersectionStatusObject_encode_oer; +per_type_decoder_f IntersectionStatusObject_decode_uper; +per_type_encoder_f IntersectionStatusObject_encode_uper; +per_type_decoder_f IntersectionStatusObject_decode_aper; +per_type_encoder_f IntersectionStatusObject_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IntersectionStatusObject_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/IsDolly.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IsDolly.h new file mode 100644 index 000000000..2976a58f0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/IsDolly.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _IsDolly_H_ +#define _IsDolly_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BOOLEAN.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* IsDolly */ +typedef BOOLEAN_t IsDolly_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IsDolly; +asn_struct_free_f IsDolly_free; +asn_struct_print_f IsDolly_print; +asn_constr_check_f IsDolly_constraint; +ber_type_decoder_f IsDolly_decode_ber; +der_type_encoder_f IsDolly_encode_der; +xer_type_decoder_f IsDolly_decode_xer; +xer_type_encoder_f IsDolly_encode_xer; +oer_type_decoder_f IsDolly_decode_oer; +oer_type_encoder_f IsDolly_encode_oer; +per_type_decoder_f IsDolly_decode_uper; +per_type_encoder_f IsDolly_encode_uper; +per_type_decoder_f IsDolly_decode_aper; +per_type_encoder_f IsDolly_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IsDolly_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Iso3833VehicleType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Iso3833VehicleType.h new file mode 100644 index 000000000..16bd798f0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Iso3833VehicleType.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Iso3833VehicleType_H_ +#define _Iso3833VehicleType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Iso3833VehicleType */ +typedef long Iso3833VehicleType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Iso3833VehicleType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Iso3833VehicleType; +asn_struct_free_f Iso3833VehicleType_free; +asn_struct_print_f Iso3833VehicleType_print; +asn_constr_check_f Iso3833VehicleType_constraint; +ber_type_decoder_f Iso3833VehicleType_decode_ber; +der_type_encoder_f Iso3833VehicleType_encode_der; +xer_type_decoder_f Iso3833VehicleType_decode_xer; +xer_type_encoder_f Iso3833VehicleType_encode_xer; +oer_type_decoder_f Iso3833VehicleType_decode_oer; +oer_type_encoder_f Iso3833VehicleType_encode_oer; +per_type_decoder_f Iso3833VehicleType_decode_uper; +per_type_encoder_f Iso3833VehicleType_encode_uper; +per_type_decoder_f Iso3833VehicleType_decode_aper; +per_type_encoder_f Iso3833VehicleType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Iso3833VehicleType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/J1939data.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/J1939data.h new file mode 100644 index 000000000..0fd0b0169 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/J1939data.h @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _J1939data_H_ +#define _J1939data_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TrailerWeight.h" +#include "CargoWeight.h" +#include "SteeringAxleTemperature.h" +#include "DriveAxleLocation.h" +#include "DriveAxleLiftAirPressure.h" +#include "DriveAxleTemperature.h" +#include "DriveAxleLubePressure.h" +#include "SteeringAxleLubePressure.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TireDataList; +struct AxleWeightList; + +/* J1939data */ +typedef struct J1939data { + struct TireDataList *tires; /* OPTIONAL */ + struct AxleWeightList *axles; /* OPTIONAL */ + TrailerWeight_t *trailerWeight; /* OPTIONAL */ + CargoWeight_t *cargoWeight; /* OPTIONAL */ + SteeringAxleTemperature_t *steeringAxleTemperature; /* OPTIONAL */ + DriveAxleLocation_t *driveAxleLocation; /* OPTIONAL */ + DriveAxleLiftAirPressure_t *driveAxleLiftAirPressure; /* OPTIONAL */ + DriveAxleTemperature_t *driveAxleTemperature; /* OPTIONAL */ + DriveAxleLubePressure_t *driveAxleLubePressure; /* OPTIONAL */ + SteeringAxleLubePressure_t *steeringAxleLubePressure; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} J1939data_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_J1939data; +extern asn_SEQUENCE_specifics_t asn_SPC_J1939data_specs_1; +extern asn_TYPE_member_t asn_MBR_J1939data_1[10]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "TireDataList.h" +#include "AxleWeightList.h" + +#endif /* _J1939data_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Barrier.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Barrier.h new file mode 100644 index 000000000..881f4d22a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Barrier.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneAttributes_Barrier_H_ +#define _LaneAttributes_Barrier_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneAttributes_Barrier { + LaneAttributes_Barrier_median_RevocableLane = 0, + LaneAttributes_Barrier_median = 1, + LaneAttributes_Barrier_whiteLineHashing = 2, + LaneAttributes_Barrier_stripedLines = 3, + LaneAttributes_Barrier_doubleStripedLines = 4, + LaneAttributes_Barrier_trafficCones = 5, + LaneAttributes_Barrier_constructionBarrier = 6, + LaneAttributes_Barrier_trafficChannels = 7, + LaneAttributes_Barrier_lowCurbs = 8, + LaneAttributes_Barrier_highCurbs = 9 +} e_LaneAttributes_Barrier; + +/* LaneAttributes-Barrier */ +typedef BIT_STRING_t LaneAttributes_Barrier_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneAttributes_Barrier_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Barrier; +asn_struct_free_f LaneAttributes_Barrier_free; +asn_struct_print_f LaneAttributes_Barrier_print; +asn_constr_check_f LaneAttributes_Barrier_constraint; +ber_type_decoder_f LaneAttributes_Barrier_decode_ber; +der_type_encoder_f LaneAttributes_Barrier_encode_der; +xer_type_decoder_f LaneAttributes_Barrier_decode_xer; +xer_type_encoder_f LaneAttributes_Barrier_encode_xer; +oer_type_decoder_f LaneAttributes_Barrier_decode_oer; +oer_type_encoder_f LaneAttributes_Barrier_encode_oer; +per_type_decoder_f LaneAttributes_Barrier_decode_uper; +per_type_encoder_f LaneAttributes_Barrier_encode_uper; +per_type_decoder_f LaneAttributes_Barrier_decode_aper; +per_type_encoder_f LaneAttributes_Barrier_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneAttributes_Barrier_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Bike.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Bike.h new file mode 100644 index 000000000..cc4e61fbe --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Bike.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneAttributes_Bike_H_ +#define _LaneAttributes_Bike_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneAttributes_Bike { + LaneAttributes_Bike_bikeRevocableLane = 0, + LaneAttributes_Bike_pedestrianUseAllowed = 1, + LaneAttributes_Bike_isBikeFlyOverLane = 2, + LaneAttributes_Bike_fixedCycleTime = 3, + LaneAttributes_Bike_biDirectionalCycleTimes = 4, + LaneAttributes_Bike_isolatedByBarrier = 5, + LaneAttributes_Bike_unsignalizedSegmentsPresent = 6 +} e_LaneAttributes_Bike; + +/* LaneAttributes-Bike */ +typedef BIT_STRING_t LaneAttributes_Bike_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneAttributes_Bike_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Bike; +asn_struct_free_f LaneAttributes_Bike_free; +asn_struct_print_f LaneAttributes_Bike_print; +asn_constr_check_f LaneAttributes_Bike_constraint; +ber_type_decoder_f LaneAttributes_Bike_decode_ber; +der_type_encoder_f LaneAttributes_Bike_encode_der; +xer_type_decoder_f LaneAttributes_Bike_decode_xer; +xer_type_encoder_f LaneAttributes_Bike_encode_xer; +oer_type_decoder_f LaneAttributes_Bike_decode_oer; +oer_type_encoder_f LaneAttributes_Bike_encode_oer; +per_type_decoder_f LaneAttributes_Bike_decode_uper; +per_type_encoder_f LaneAttributes_Bike_encode_uper; +per_type_decoder_f LaneAttributes_Bike_decode_aper; +per_type_encoder_f LaneAttributes_Bike_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneAttributes_Bike_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Crosswalk.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Crosswalk.h new file mode 100644 index 000000000..509ed9df3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Crosswalk.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneAttributes_Crosswalk_H_ +#define _LaneAttributes_Crosswalk_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneAttributes_Crosswalk { + LaneAttributes_Crosswalk_crosswalkRevocableLane = 0, + LaneAttributes_Crosswalk_bicyleUseAllowed = 1, + LaneAttributes_Crosswalk_isXwalkFlyOverLane = 2, + LaneAttributes_Crosswalk_fixedCycleTime = 3, + LaneAttributes_Crosswalk_biDirectionalCycleTimes = 4, + LaneAttributes_Crosswalk_hasPushToWalkButton = 5, + LaneAttributes_Crosswalk_audioSupport = 6, + LaneAttributes_Crosswalk_rfSignalRequestPresent = 7, + LaneAttributes_Crosswalk_unsignalizedSegmentsPresent = 8 +} e_LaneAttributes_Crosswalk; + +/* LaneAttributes-Crosswalk */ +typedef BIT_STRING_t LaneAttributes_Crosswalk_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneAttributes_Crosswalk_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Crosswalk; +asn_struct_free_f LaneAttributes_Crosswalk_free; +asn_struct_print_f LaneAttributes_Crosswalk_print; +asn_constr_check_f LaneAttributes_Crosswalk_constraint; +ber_type_decoder_f LaneAttributes_Crosswalk_decode_ber; +der_type_encoder_f LaneAttributes_Crosswalk_encode_der; +xer_type_decoder_f LaneAttributes_Crosswalk_decode_xer; +xer_type_encoder_f LaneAttributes_Crosswalk_encode_xer; +oer_type_decoder_f LaneAttributes_Crosswalk_decode_oer; +oer_type_encoder_f LaneAttributes_Crosswalk_encode_oer; +per_type_decoder_f LaneAttributes_Crosswalk_decode_uper; +per_type_encoder_f LaneAttributes_Crosswalk_encode_uper; +per_type_decoder_f LaneAttributes_Crosswalk_decode_aper; +per_type_encoder_f LaneAttributes_Crosswalk_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneAttributes_Crosswalk_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Parking.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Parking.h new file mode 100644 index 000000000..b2fc3a094 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Parking.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneAttributes_Parking_H_ +#define _LaneAttributes_Parking_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneAttributes_Parking { + LaneAttributes_Parking_parkingRevocableLane = 0, + LaneAttributes_Parking_parallelParkingInUse = 1, + LaneAttributes_Parking_headInParkingInUse = 2, + LaneAttributes_Parking_doNotParkZone = 3, + LaneAttributes_Parking_parkingForBusUse = 4, + LaneAttributes_Parking_parkingForTaxiUse = 5, + LaneAttributes_Parking_noPublicParkingUse = 6 +} e_LaneAttributes_Parking; + +/* LaneAttributes-Parking */ +typedef BIT_STRING_t LaneAttributes_Parking_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneAttributes_Parking_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Parking; +asn_struct_free_f LaneAttributes_Parking_free; +asn_struct_print_f LaneAttributes_Parking_print; +asn_constr_check_f LaneAttributes_Parking_constraint; +ber_type_decoder_f LaneAttributes_Parking_decode_ber; +der_type_encoder_f LaneAttributes_Parking_encode_der; +xer_type_decoder_f LaneAttributes_Parking_decode_xer; +xer_type_encoder_f LaneAttributes_Parking_encode_xer; +oer_type_decoder_f LaneAttributes_Parking_decode_oer; +oer_type_encoder_f LaneAttributes_Parking_encode_oer; +per_type_decoder_f LaneAttributes_Parking_decode_uper; +per_type_encoder_f LaneAttributes_Parking_encode_uper; +per_type_decoder_f LaneAttributes_Parking_decode_aper; +per_type_encoder_f LaneAttributes_Parking_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneAttributes_Parking_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Sidewalk.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Sidewalk.h new file mode 100644 index 000000000..6cecf0147 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Sidewalk.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneAttributes_Sidewalk_H_ +#define _LaneAttributes_Sidewalk_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneAttributes_Sidewalk { + LaneAttributes_Sidewalk_sidewalk_RevocableLane = 0, + LaneAttributes_Sidewalk_bicyleUseAllowed = 1, + LaneAttributes_Sidewalk_isSidewalkFlyOverLane = 2, + LaneAttributes_Sidewalk_walkBikes = 3 +} e_LaneAttributes_Sidewalk; + +/* LaneAttributes-Sidewalk */ +typedef BIT_STRING_t LaneAttributes_Sidewalk_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneAttributes_Sidewalk_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Sidewalk; +asn_struct_free_f LaneAttributes_Sidewalk_free; +asn_struct_print_f LaneAttributes_Sidewalk_print; +asn_constr_check_f LaneAttributes_Sidewalk_constraint; +ber_type_decoder_f LaneAttributes_Sidewalk_decode_ber; +der_type_encoder_f LaneAttributes_Sidewalk_encode_der; +xer_type_decoder_f LaneAttributes_Sidewalk_decode_xer; +xer_type_encoder_f LaneAttributes_Sidewalk_encode_xer; +oer_type_decoder_f LaneAttributes_Sidewalk_decode_oer; +oer_type_encoder_f LaneAttributes_Sidewalk_encode_oer; +per_type_decoder_f LaneAttributes_Sidewalk_decode_uper; +per_type_encoder_f LaneAttributes_Sidewalk_encode_uper; +per_type_decoder_f LaneAttributes_Sidewalk_decode_aper; +per_type_encoder_f LaneAttributes_Sidewalk_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneAttributes_Sidewalk_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Striping.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Striping.h new file mode 100644 index 000000000..bd12a0051 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Striping.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneAttributes_Striping_H_ +#define _LaneAttributes_Striping_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneAttributes_Striping { + LaneAttributes_Striping_stripeToConnectingLanesRevocableLane = 0, + LaneAttributes_Striping_stripeDrawOnLeft = 1, + LaneAttributes_Striping_stripeDrawOnRight = 2, + LaneAttributes_Striping_stripeToConnectingLanesLeft = 3, + LaneAttributes_Striping_stripeToConnectingLanesRight = 4, + LaneAttributes_Striping_stripeToConnectingLanesAhead = 5 +} e_LaneAttributes_Striping; + +/* LaneAttributes-Striping */ +typedef BIT_STRING_t LaneAttributes_Striping_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneAttributes_Striping_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Striping; +asn_struct_free_f LaneAttributes_Striping_free; +asn_struct_print_f LaneAttributes_Striping_print; +asn_constr_check_f LaneAttributes_Striping_constraint; +ber_type_decoder_f LaneAttributes_Striping_decode_ber; +der_type_encoder_f LaneAttributes_Striping_encode_der; +xer_type_decoder_f LaneAttributes_Striping_decode_xer; +xer_type_encoder_f LaneAttributes_Striping_encode_xer; +oer_type_decoder_f LaneAttributes_Striping_decode_oer; +oer_type_encoder_f LaneAttributes_Striping_encode_oer; +per_type_decoder_f LaneAttributes_Striping_decode_uper; +per_type_encoder_f LaneAttributes_Striping_encode_uper; +per_type_decoder_f LaneAttributes_Striping_decode_aper; +per_type_encoder_f LaneAttributes_Striping_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneAttributes_Striping_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-TrackedVehicle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-TrackedVehicle.h new file mode 100644 index 000000000..d1cbf53b9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-TrackedVehicle.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneAttributes_TrackedVehicle_H_ +#define _LaneAttributes_TrackedVehicle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneAttributes_TrackedVehicle { + LaneAttributes_TrackedVehicle_spec_RevocableLane = 0, + LaneAttributes_TrackedVehicle_spec_commuterRailRoadTrack = 1, + LaneAttributes_TrackedVehicle_spec_lightRailRoadTrack = 2, + LaneAttributes_TrackedVehicle_spec_heavyRailRoadTrack = 3, + LaneAttributes_TrackedVehicle_spec_otherRailType = 4 +} e_LaneAttributes_TrackedVehicle; + +/* LaneAttributes-TrackedVehicle */ +typedef BIT_STRING_t LaneAttributes_TrackedVehicle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneAttributes_TrackedVehicle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneAttributes_TrackedVehicle; +asn_struct_free_f LaneAttributes_TrackedVehicle_free; +asn_struct_print_f LaneAttributes_TrackedVehicle_print; +asn_constr_check_f LaneAttributes_TrackedVehicle_constraint; +ber_type_decoder_f LaneAttributes_TrackedVehicle_decode_ber; +der_type_encoder_f LaneAttributes_TrackedVehicle_encode_der; +xer_type_decoder_f LaneAttributes_TrackedVehicle_decode_xer; +xer_type_encoder_f LaneAttributes_TrackedVehicle_encode_xer; +oer_type_decoder_f LaneAttributes_TrackedVehicle_decode_oer; +oer_type_encoder_f LaneAttributes_TrackedVehicle_encode_oer; +per_type_decoder_f LaneAttributes_TrackedVehicle_decode_uper; +per_type_encoder_f LaneAttributes_TrackedVehicle_encode_uper; +per_type_decoder_f LaneAttributes_TrackedVehicle_decode_aper; +per_type_encoder_f LaneAttributes_TrackedVehicle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneAttributes_TrackedVehicle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Vehicle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Vehicle.h new file mode 100644 index 000000000..61ca8f3b8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes-Vehicle.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneAttributes_Vehicle_H_ +#define _LaneAttributes_Vehicle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneAttributes_Vehicle { + LaneAttributes_Vehicle_isVehicleRevocableLane = 0, + LaneAttributes_Vehicle_isVehicleFlyOverLane = 1, + LaneAttributes_Vehicle_hovLaneUseOnly = 2, + LaneAttributes_Vehicle_restrictedToBusUse = 3, + LaneAttributes_Vehicle_restrictedToTaxiUse = 4, + LaneAttributes_Vehicle_restrictedFromPublicUse = 5, + LaneAttributes_Vehicle_hasIRbeaconCoverage = 6, + LaneAttributes_Vehicle_permissionOnRequest = 7 +} e_LaneAttributes_Vehicle; + +/* LaneAttributes-Vehicle */ +typedef BIT_STRING_t LaneAttributes_Vehicle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneAttributes_Vehicle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Vehicle; +asn_struct_free_f LaneAttributes_Vehicle_free; +asn_struct_print_f LaneAttributes_Vehicle_print; +asn_constr_check_f LaneAttributes_Vehicle_constraint; +ber_type_decoder_f LaneAttributes_Vehicle_decode_ber; +der_type_encoder_f LaneAttributes_Vehicle_encode_der; +xer_type_decoder_f LaneAttributes_Vehicle_decode_xer; +xer_type_encoder_f LaneAttributes_Vehicle_encode_xer; +oer_type_decoder_f LaneAttributes_Vehicle_decode_oer; +oer_type_encoder_f LaneAttributes_Vehicle_encode_oer; +per_type_decoder_f LaneAttributes_Vehicle_decode_uper; +per_type_encoder_f LaneAttributes_Vehicle_encode_uper; +per_type_decoder_f LaneAttributes_Vehicle_decode_aper; +per_type_encoder_f LaneAttributes_Vehicle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneAttributes_Vehicle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes.h new file mode 100644 index 000000000..d68eeb7bd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneAttributes.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneAttributes_H_ +#define _LaneAttributes_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LaneDirection.h" +#include "LaneSharing.h" +#include "LaneTypeAttributes.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_LaneAttributes; + +/* LaneAttributes */ +typedef struct LaneAttributes { + LaneDirection_t directionalUse; + LaneSharing_t sharedWith; + LaneTypeAttributes_t laneType; + struct Reg_LaneAttributes *regional; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LaneAttributes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LaneAttributes; +extern asn_SEQUENCE_specifics_t asn_SPC_LaneAttributes_specs_1; +extern asn_TYPE_member_t asn_MBR_LaneAttributes_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _LaneAttributes_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneConnectionID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneConnectionID.h new file mode 100644 index 000000000..67d6b8861 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneConnectionID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneConnectionID_H_ +#define _LaneConnectionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LaneConnectionID */ +typedef long LaneConnectionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneConnectionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneConnectionID; +asn_struct_free_f LaneConnectionID_free; +asn_struct_print_f LaneConnectionID_print; +asn_constr_check_f LaneConnectionID_constraint; +ber_type_decoder_f LaneConnectionID_decode_ber; +der_type_encoder_f LaneConnectionID_encode_der; +xer_type_decoder_f LaneConnectionID_decode_xer; +xer_type_encoder_f LaneConnectionID_encode_xer; +oer_type_decoder_f LaneConnectionID_decode_oer; +oer_type_encoder_f LaneConnectionID_encode_oer; +per_type_decoder_f LaneConnectionID_decode_uper; +per_type_encoder_f LaneConnectionID_encode_uper; +per_type_decoder_f LaneConnectionID_decode_aper; +per_type_encoder_f LaneConnectionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneConnectionID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDataAttribute-addGrpB.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDataAttribute-addGrpB.h new file mode 100644 index 000000000..787d99824 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDataAttribute-addGrpB.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneDataAttribute_addGrpB_H_ +#define _LaneDataAttribute_addGrpB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LaneDataAttribute-addGrpB */ +typedef struct LaneDataAttribute_addGrpB { + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LaneDataAttribute_addGrpB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LaneDataAttribute_addGrpB; +extern asn_SEQUENCE_specifics_t asn_SPC_LaneDataAttribute_addGrpB_specs_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneDataAttribute_addGrpB_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDataAttribute.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDataAttribute.h new file mode 100644 index 000000000..cbb7d7e77 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDataAttribute.h @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneDataAttribute_H_ +#define _LaneDataAttribute_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DeltaAngle.h" +#include "RoadwayCrownAngle.h" +#include "MergeDivergeNodeAngle.h" +#include "SpeedLimitList.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneDataAttribute_PR { + LaneDataAttribute_PR_NOTHING, /* No components present */ + LaneDataAttribute_PR_pathEndPointAngle, + LaneDataAttribute_PR_laneCrownPointCenter, + LaneDataAttribute_PR_laneCrownPointLeft, + LaneDataAttribute_PR_laneCrownPointRight, + LaneDataAttribute_PR_laneAngle, + LaneDataAttribute_PR_speedLimits, + LaneDataAttribute_PR_regional + /* Extensions may appear below */ + +} LaneDataAttribute_PR; + +/* Forward declarations */ +struct Reg_LaneDataAttribute; + +/* LaneDataAttribute */ +typedef struct LaneDataAttribute { + LaneDataAttribute_PR present; + union LaneDataAttribute_u { + DeltaAngle_t pathEndPointAngle; + RoadwayCrownAngle_t laneCrownPointCenter; + RoadwayCrownAngle_t laneCrownPointLeft; + RoadwayCrownAngle_t laneCrownPointRight; + MergeDivergeNodeAngle_t laneAngle; + SpeedLimitList_t speedLimits; + struct LaneDataAttribute__regional { + A_SEQUENCE_OF(struct Reg_LaneDataAttribute) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regional; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LaneDataAttribute_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LaneDataAttribute; +extern asn_CHOICE_specifics_t asn_SPC_LaneDataAttribute_specs_1; +extern asn_TYPE_member_t asn_MBR_LaneDataAttribute_1[7]; +extern asn_per_constraints_t asn_PER_type_LaneDataAttribute_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _LaneDataAttribute_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDataAttributeList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDataAttributeList.h new file mode 100644 index 000000000..12030813a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDataAttributeList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneDataAttributeList_H_ +#define _LaneDataAttributeList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct LaneDataAttribute; + +/* LaneDataAttributeList */ +typedef struct LaneDataAttributeList { + A_SEQUENCE_OF(struct LaneDataAttribute) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LaneDataAttributeList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LaneDataAttributeList; +extern asn_SET_OF_specifics_t asn_SPC_LaneDataAttributeList_specs_1; +extern asn_TYPE_member_t asn_MBR_LaneDataAttributeList_1[1]; +extern asn_per_constraints_t asn_PER_type_LaneDataAttributeList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "LaneDataAttribute.h" + +#endif /* _LaneDataAttributeList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDirection.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDirection.h new file mode 100644 index 000000000..bd8c78a5d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneDirection.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneDirection_H_ +#define _LaneDirection_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneDirection { + LaneDirection_ingressPath = 0, + LaneDirection_egressPath = 1 +} e_LaneDirection; + +/* LaneDirection */ +typedef BIT_STRING_t LaneDirection_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneDirection_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneDirection; +asn_struct_free_f LaneDirection_free; +asn_struct_print_f LaneDirection_print; +asn_constr_check_f LaneDirection_constraint; +ber_type_decoder_f LaneDirection_decode_ber; +der_type_encoder_f LaneDirection_encode_der; +xer_type_decoder_f LaneDirection_decode_xer; +xer_type_encoder_f LaneDirection_encode_xer; +oer_type_decoder_f LaneDirection_decode_oer; +oer_type_encoder_f LaneDirection_encode_oer; +per_type_decoder_f LaneDirection_decode_uper; +per_type_encoder_f LaneDirection_encode_uper; +per_type_decoder_f LaneDirection_decode_aper; +per_type_encoder_f LaneDirection_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneDirection_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneID.h new file mode 100644 index 000000000..b17575f5b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneID_H_ +#define _LaneID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LaneID */ +typedef long LaneID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneID; +asn_struct_free_f LaneID_free; +asn_struct_print_f LaneID_print; +asn_constr_check_f LaneID_constraint; +ber_type_decoder_f LaneID_decode_ber; +der_type_encoder_f LaneID_encode_der; +xer_type_decoder_f LaneID_decode_xer; +xer_type_encoder_f LaneID_encode_xer; +oer_type_decoder_f LaneID_decode_oer; +oer_type_encoder_f LaneID_encode_oer; +per_type_decoder_f LaneID_decode_uper; +per_type_encoder_f LaneID_encode_uper; +per_type_decoder_f LaneID_decode_aper; +per_type_encoder_f LaneID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneList.h new file mode 100644 index 000000000..a75213c21 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneList_H_ +#define _LaneList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GenericLane; + +/* LaneList */ +typedef struct LaneList { + A_SEQUENCE_OF(struct GenericLane) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LaneList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LaneList; +extern asn_SET_OF_specifics_t asn_SPC_LaneList_specs_1; +extern asn_TYPE_member_t asn_MBR_LaneList_1[1]; +extern asn_per_constraints_t asn_PER_type_LaneList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "GenericLane.h" + +#endif /* _LaneList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneSharing.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneSharing.h new file mode 100644 index 000000000..b71f24784 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneSharing.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneSharing_H_ +#define _LaneSharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneSharing { + LaneSharing_overlappingLaneDescriptionProvided = 0, + LaneSharing_multipleLanesTreatedAsOneLane = 1, + LaneSharing_otherNonMotorizedTrafficTypes = 2, + LaneSharing_individualMotorizedVehicleTraffic = 3, + LaneSharing_busVehicleTraffic = 4, + LaneSharing_taxiVehicleTraffic = 5, + LaneSharing_pedestriansTraffic = 6, + LaneSharing_cyclistVehicleTraffic = 7, + LaneSharing_trackedVehicleTraffic = 8, + LaneSharing_reserved = 9 +} e_LaneSharing; + +/* LaneSharing */ +typedef BIT_STRING_t LaneSharing_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneSharing_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneSharing; +asn_struct_free_f LaneSharing_free; +asn_struct_print_f LaneSharing_print; +asn_constr_check_f LaneSharing_constraint; +ber_type_decoder_f LaneSharing_decode_ber; +der_type_encoder_f LaneSharing_encode_der; +xer_type_decoder_f LaneSharing_decode_xer; +xer_type_encoder_f LaneSharing_encode_xer; +oer_type_decoder_f LaneSharing_decode_oer; +oer_type_encoder_f LaneSharing_encode_oer; +per_type_decoder_f LaneSharing_decode_uper; +per_type_encoder_f LaneSharing_encode_uper; +per_type_decoder_f LaneSharing_decode_aper; +per_type_encoder_f LaneSharing_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneSharing_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneTypeAttributes.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneTypeAttributes.h new file mode 100644 index 000000000..f6382dbcd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneTypeAttributes.h @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneTypeAttributes_H_ +#define _LaneTypeAttributes_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LaneAttributes-Vehicle.h" +#include "LaneAttributes-Crosswalk.h" +#include "LaneAttributes-Bike.h" +#include "LaneAttributes-Sidewalk.h" +#include "LaneAttributes-Barrier.h" +#include "LaneAttributes-Striping.h" +#include "LaneAttributes-TrackedVehicle.h" +#include "LaneAttributes-Parking.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneTypeAttributes_PR { + LaneTypeAttributes_PR_NOTHING, /* No components present */ + LaneTypeAttributes_PR_vehicle, + LaneTypeAttributes_PR_crosswalk, + LaneTypeAttributes_PR_bikeLane, + LaneTypeAttributes_PR_sidewalk, + LaneTypeAttributes_PR_median, + LaneTypeAttributes_PR_striping, + LaneTypeAttributes_PR_trackedVehicle, + LaneTypeAttributes_PR_parking + /* Extensions may appear below */ + +} LaneTypeAttributes_PR; + +/* LaneTypeAttributes */ +typedef struct LaneTypeAttributes { + LaneTypeAttributes_PR present; + union LaneTypeAttributes_u { + LaneAttributes_Vehicle_t vehicle; + LaneAttributes_Crosswalk_t crosswalk; + LaneAttributes_Bike_t bikeLane; + LaneAttributes_Sidewalk_t sidewalk; + LaneAttributes_Barrier_t median; + LaneAttributes_Striping_t striping; + LaneAttributes_TrackedVehicle_t trackedVehicle; + LaneAttributes_Parking_t parking; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LaneTypeAttributes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LaneTypeAttributes; +extern asn_CHOICE_specifics_t asn_SPC_LaneTypeAttributes_specs_1; +extern asn_TYPE_member_t asn_MBR_LaneTypeAttributes_1[8]; +extern asn_per_constraints_t asn_PER_type_LaneTypeAttributes_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneTypeAttributes_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneWidth.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneWidth.h new file mode 100644 index 000000000..3aa3e3835 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LaneWidth.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LaneWidth_H_ +#define _LaneWidth_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LaneWidth */ +typedef long LaneWidth_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneWidth_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneWidth; +asn_struct_free_f LaneWidth_free; +asn_struct_print_f LaneWidth_print; +asn_constr_check_f LaneWidth_constraint; +ber_type_decoder_f LaneWidth_decode_ber; +der_type_encoder_f LaneWidth_encode_der; +xer_type_decoder_f LaneWidth_decode_xer; +xer_type_encoder_f LaneWidth_encode_xer; +oer_type_decoder_f LaneWidth_decode_oer; +oer_type_encoder_f LaneWidth_encode_oer; +per_type_decoder_f LaneWidth_decode_uper; +per_type_encoder_f LaneWidth_encode_uper; +per_type_decoder_f LaneWidth_decode_aper; +per_type_encoder_f LaneWidth_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneWidth_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Latitude.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Latitude.h new file mode 100644 index 000000000..d74bb8de0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Latitude.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Latitude_H_ +#define _Latitude_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Latitude */ +typedef long Latitude_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Latitude_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Latitude; +asn_struct_free_f Latitude_free; +asn_struct_print_f Latitude_print; +asn_constr_check_f Latitude_constraint; +ber_type_decoder_f Latitude_decode_ber; +der_type_encoder_f Latitude_encode_der; +xer_type_decoder_f Latitude_decode_xer; +xer_type_encoder_f Latitude_encode_xer; +oer_type_decoder_f Latitude_decode_oer; +oer_type_encoder_f Latitude_encode_oer; +per_type_decoder_f Latitude_decode_uper; +per_type_encoder_f Latitude_encode_uper; +per_type_decoder_f Latitude_decode_aper; +per_type_encoder_f Latitude_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Latitude_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LatitudeDMS.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LatitudeDMS.h new file mode 100644 index 000000000..045e6280c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LatitudeDMS.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LatitudeDMS_H_ +#define _LatitudeDMS_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LatitudeDMS */ +typedef long LatitudeDMS_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LatitudeDMS_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LatitudeDMS; +asn_struct_free_f LatitudeDMS_free; +asn_struct_print_f LatitudeDMS_print; +asn_constr_check_f LatitudeDMS_constraint; +ber_type_decoder_f LatitudeDMS_decode_ber; +der_type_encoder_f LatitudeDMS_encode_der; +xer_type_decoder_f LatitudeDMS_decode_xer; +xer_type_encoder_f LatitudeDMS_encode_xer; +oer_type_decoder_f LatitudeDMS_decode_oer; +oer_type_encoder_f LatitudeDMS_encode_oer; +per_type_decoder_f LatitudeDMS_decode_uper; +per_type_encoder_f LatitudeDMS_encode_uper; +per_type_decoder_f LatitudeDMS_decode_aper; +per_type_encoder_f LatitudeDMS_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LatitudeDMS_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LatitudeDMS2.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LatitudeDMS2.h new file mode 100644 index 000000000..3e75afce2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LatitudeDMS2.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LatitudeDMS2_H_ +#define _LatitudeDMS2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DegreesLat.h" +#include "MinutesAngle.h" +#include "SecondsAngle.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LatitudeDMS2 */ +typedef struct LatitudeDMS2 { + DegreesLat_t d; + MinutesAngle_t m; + SecondsAngle_t s; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LatitudeDMS2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LatitudeDMS2; +extern asn_SEQUENCE_specifics_t asn_SPC_LatitudeDMS2_specs_1; +extern asn_TYPE_member_t asn_MBR_LatitudeDMS2_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LatitudeDMS2_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LayerID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LayerID.h new file mode 100644 index 000000000..da041e90d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LayerID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LayerID_H_ +#define _LayerID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LayerID */ +typedef long LayerID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LayerID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LayerID; +asn_struct_free_f LayerID_free; +asn_struct_print_f LayerID_print; +asn_constr_check_f LayerID_constraint; +ber_type_decoder_f LayerID_decode_ber; +der_type_encoder_f LayerID_encode_der; +xer_type_decoder_f LayerID_decode_xer; +xer_type_encoder_f LayerID_encode_xer; +oer_type_decoder_f LayerID_decode_oer; +oer_type_encoder_f LayerID_encode_oer; +per_type_decoder_f LayerID_decode_uper; +per_type_encoder_f LayerID_encode_uper; +per_type_decoder_f LayerID_decode_aper; +per_type_encoder_f LayerID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LayerID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LayerType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LayerType.h new file mode 100644 index 000000000..27e95f482 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LayerType.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LayerType_H_ +#define _LayerType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LayerType { + LayerType_none = 0, + LayerType_mixedContent = 1, + LayerType_generalMapData = 2, + LayerType_intersectionData = 3, + LayerType_curveData = 4, + LayerType_roadwaySectionData = 5, + LayerType_parkingAreaData = 6, + LayerType_sharedLaneData = 7 + /* + * Enumeration is extensible + */ +} e_LayerType; + +/* LayerType */ +typedef long LayerType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LayerType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LayerType; +extern const asn_INTEGER_specifics_t asn_SPC_LayerType_specs_1; +asn_struct_free_f LayerType_free; +asn_struct_print_f LayerType_print; +asn_constr_check_f LayerType_constraint; +ber_type_decoder_f LayerType_decode_ber; +der_type_encoder_f LayerType_encode_der; +xer_type_decoder_f LayerType_decode_xer; +xer_type_encoder_f LayerType_encode_xer; +oer_type_decoder_f LayerType_decode_oer; +oer_type_encoder_f LayerType_encode_oer; +per_type_decoder_f LayerType_decode_uper; +per_type_encoder_f LayerType_encode_uper; +per_type_decoder_f LayerType_decode_aper; +per_type_encoder_f LayerType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LayerType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LightbarInUse.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LightbarInUse.h new file mode 100644 index 000000000..bf7f2b4ff --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LightbarInUse.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LightbarInUse_H_ +#define _LightbarInUse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LightbarInUse { + LightbarInUse_unavailable = 0, + LightbarInUse_notInUse = 1, + LightbarInUse_inUse = 2, + LightbarInUse_yellowCautionLights = 3, + LightbarInUse_schooldBusLights = 4, + LightbarInUse_arrowSignsActive = 5, + LightbarInUse_slowMovingVehicle = 6, + LightbarInUse_freqStops = 7 +} e_LightbarInUse; + +/* LightbarInUse */ +typedef long LightbarInUse_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LightbarInUse_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LightbarInUse; +extern const asn_INTEGER_specifics_t asn_SPC_LightbarInUse_specs_1; +asn_struct_free_f LightbarInUse_free; +asn_struct_print_f LightbarInUse_print; +asn_constr_check_f LightbarInUse_constraint; +ber_type_decoder_f LightbarInUse_decode_ber; +der_type_encoder_f LightbarInUse_encode_der; +xer_type_decoder_f LightbarInUse_decode_xer; +xer_type_encoder_f LightbarInUse_encode_xer; +oer_type_decoder_f LightbarInUse_decode_oer; +oer_type_encoder_f LightbarInUse_encode_oer; +per_type_decoder_f LightbarInUse_decode_uper; +per_type_encoder_f LightbarInUse_encode_uper; +per_type_decoder_f LightbarInUse_decode_aper; +per_type_encoder_f LightbarInUse_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LightbarInUse_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Location-quality.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Location-quality.h new file mode 100644 index 000000000..22a9de6e7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Location-quality.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Location_quality_H_ +#define _Location_quality_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Location_quality { + Location_quality_loc_qual_bt1m = 0, + Location_quality_loc_qual_bt5m = 1, + Location_quality_loc_qual_bt12m = 2, + Location_quality_loc_qual_bt50m = 3, + Location_quality_loc_qual_bt125m = 4, + Location_quality_loc_qual_bt500m = 5, + Location_quality_loc_qual_bt1250m = 6, + Location_quality_loc_qual_unknown = 7 +} e_Location_quality; + +/* Location-quality */ +typedef long Location_quality_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Location_quality; +asn_struct_free_f Location_quality_free; +asn_struct_print_f Location_quality_print; +asn_constr_check_f Location_quality_constraint; +ber_type_decoder_f Location_quality_decode_ber; +der_type_encoder_f Location_quality_encode_der; +xer_type_decoder_f Location_quality_decode_xer; +xer_type_encoder_f Location_quality_encode_xer; +oer_type_decoder_f Location_quality_decode_oer; +oer_type_encoder_f Location_quality_encode_oer; +per_type_decoder_f Location_quality_decode_uper; +per_type_encoder_f Location_quality_encode_uper; +per_type_decoder_f Location_quality_decode_aper; +per_type_encoder_f Location_quality_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Location_quality_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Location-tech.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Location-tech.h new file mode 100644 index 000000000..8608f60b1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Location-tech.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Location_tech_H_ +#define _Location_tech_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Location_tech { + Location_tech_loc_tech_unknown = 0, + Location_tech_loc_tech_GNSS = 1, + Location_tech_loc_tech_DGPS = 2, + Location_tech_loc_tech_RTK = 3, + Location_tech_loc_tech_PPP = 4, + Location_tech_loc_tech_drGPS = 5, + Location_tech_loc_tech_drDGPS = 6, + Location_tech_loc_tech_dr = 7, + Location_tech_loc_tech_nav = 8, + Location_tech_loc_tech_fault = 9 + /* + * Enumeration is extensible + */ +} e_Location_tech; + +/* Location-tech */ +typedef long Location_tech_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Location_tech; +asn_struct_free_f Location_tech_free; +asn_struct_print_f Location_tech_print; +asn_constr_check_f Location_tech_constraint; +ber_type_decoder_f Location_tech_decode_ber; +der_type_encoder_f Location_tech_encode_der; +xer_type_decoder_f Location_tech_decode_xer; +xer_type_encoder_f Location_tech_encode_xer; +oer_type_decoder_f Location_tech_decode_oer; +oer_type_encoder_f Location_tech_encode_oer; +per_type_decoder_f Location_tech_decode_uper; +per_type_encoder_f Location_tech_encode_uper; +per_type_decoder_f Location_tech_decode_aper; +per_type_encoder_f Location_tech_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Location_tech_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Longitude.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Longitude.h new file mode 100644 index 000000000..5e1dac467 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Longitude.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Longitude_H_ +#define _Longitude_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Longitude */ +typedef long Longitude_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Longitude_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Longitude; +asn_struct_free_f Longitude_free; +asn_struct_print_f Longitude_print; +asn_constr_check_f Longitude_constraint; +ber_type_decoder_f Longitude_decode_ber; +der_type_encoder_f Longitude_encode_der; +xer_type_decoder_f Longitude_decode_xer; +xer_type_encoder_f Longitude_encode_xer; +oer_type_decoder_f Longitude_decode_oer; +oer_type_encoder_f Longitude_encode_oer; +per_type_decoder_f Longitude_decode_uper; +per_type_encoder_f Longitude_encode_uper; +per_type_decoder_f Longitude_decode_aper; +per_type_encoder_f Longitude_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Longitude_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LongitudeDMS.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LongitudeDMS.h new file mode 100644 index 000000000..7c3d5d9c1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LongitudeDMS.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LongitudeDMS_H_ +#define _LongitudeDMS_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LongitudeDMS */ +typedef long LongitudeDMS_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LongitudeDMS_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LongitudeDMS; +asn_struct_free_f LongitudeDMS_free; +asn_struct_print_f LongitudeDMS_print; +asn_constr_check_f LongitudeDMS_constraint; +ber_type_decoder_f LongitudeDMS_decode_ber; +der_type_encoder_f LongitudeDMS_encode_der; +xer_type_decoder_f LongitudeDMS_decode_xer; +xer_type_encoder_f LongitudeDMS_encode_xer; +oer_type_decoder_f LongitudeDMS_decode_oer; +oer_type_encoder_f LongitudeDMS_encode_oer; +per_type_decoder_f LongitudeDMS_decode_uper; +per_type_encoder_f LongitudeDMS_encode_uper; +per_type_decoder_f LongitudeDMS_decode_aper; +per_type_encoder_f LongitudeDMS_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LongitudeDMS_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/LongitudeDMS2.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LongitudeDMS2.h new file mode 100644 index 000000000..1d9f84abc --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/LongitudeDMS2.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _LongitudeDMS2_H_ +#define _LongitudeDMS2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DegreesLong.h" +#include "MinutesAngle.h" +#include "SecondsAngle.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LongitudeDMS2 */ +typedef struct LongitudeDMS2 { + DegreesLong_t d; + MinutesAngle_t m; + SecondsAngle_t s; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LongitudeDMS2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LongitudeDMS2; +extern asn_SEQUENCE_specifics_t asn_SPC_LongitudeDMS2_specs_1; +extern asn_TYPE_member_t asn_MBR_LongitudeDMS2_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LongitudeDMS2_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MUTCDCode.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MUTCDCode.h new file mode 100644 index 000000000..f2c7734b1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MUTCDCode.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MUTCDCode_H_ +#define _MUTCDCode_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MUTCDCode { + MUTCDCode_none = 0, + MUTCDCode_regulatory = 1, + MUTCDCode_warning = 2, + MUTCDCode_maintenance = 3, + MUTCDCode_motoristService = 4, + MUTCDCode_guide = 5, + MUTCDCode_rec = 6 + /* + * Enumeration is extensible + */ +} e_MUTCDCode; + +/* MUTCDCode */ +typedef long MUTCDCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MUTCDCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MUTCDCode; +extern const asn_INTEGER_specifics_t asn_SPC_MUTCDCode_specs_1; +asn_struct_free_f MUTCDCode_free; +asn_struct_print_f MUTCDCode_print; +asn_constr_check_f MUTCDCode_constraint; +ber_type_decoder_f MUTCDCode_decode_ber; +der_type_encoder_f MUTCDCode_encode_der; +xer_type_decoder_f MUTCDCode_decode_xer; +xer_type_encoder_f MUTCDCode_encode_xer; +oer_type_decoder_f MUTCDCode_decode_oer; +oer_type_encoder_f MUTCDCode_encode_oer; +per_type_decoder_f MUTCDCode_decode_uper; +per_type_encoder_f MUTCDCode_encode_uper; +per_type_decoder_f MUTCDCode_decode_aper; +per_type_encoder_f MUTCDCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MUTCDCode_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ManeuverAssistList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ManeuverAssistList.h new file mode 100644 index 000000000..0942e7e2e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ManeuverAssistList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ManeuverAssistList_H_ +#define _ManeuverAssistList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ConnectionManeuverAssist; + +/* ManeuverAssistList */ +typedef struct ManeuverAssistList { + A_SEQUENCE_OF(struct ConnectionManeuverAssist) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ManeuverAssistList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ManeuverAssistList; +extern asn_SET_OF_specifics_t asn_SPC_ManeuverAssistList_specs_1; +extern asn_TYPE_member_t asn_MBR_ManeuverAssistList_1[1]; +extern asn_per_constraints_t asn_PER_type_ManeuverAssistList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ConnectionManeuverAssist.h" + +#endif /* _ManeuverAssistList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MapData-addGrpC.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MapData-addGrpC.h new file mode 100644 index 000000000..00118dc4f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MapData-addGrpC.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MapData_addGrpC_H_ +#define _MapData_addGrpC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SignalHeadLocationList; + +/* MapData-addGrpC */ +typedef struct MapData_addGrpC { + struct SignalHeadLocationList *signalHeadLocations; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MapData_addGrpC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MapData_addGrpC; +extern asn_SEQUENCE_specifics_t asn_SPC_MapData_addGrpC_specs_1; +extern asn_TYPE_member_t asn_MBR_MapData_addGrpC_1[1]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "SignalHeadLocationList.h" + +#endif /* _MapData_addGrpC_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MapData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MapData.h new file mode 100644 index 000000000..ca1b5e455 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MapData.h @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MapData_H_ +#define _MapData_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MinuteOfTheYear.h" +#include "Common_MsgCount.h" +#include "LayerType.h" +#include "LayerID.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IntersectionGeometryList; +struct RoadSegmentList; +struct DataParameters; +struct RestrictionClassList; +struct Reg_MapData; + +/* MapData */ +typedef struct MapData { + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + Common_MsgCount_t msgIssueRevision; + LayerType_t *layerType; /* OPTIONAL */ + LayerID_t *layerID; /* OPTIONAL */ + struct IntersectionGeometryList *intersections; /* OPTIONAL */ + struct RoadSegmentList *roadSegments; /* OPTIONAL */ + struct DataParameters *dataParameters; /* OPTIONAL */ + struct RestrictionClassList *restrictionList; /* OPTIONAL */ + struct MapData__regional { + A_SEQUENCE_OF(struct Reg_MapData) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MapData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MapData; +extern asn_SEQUENCE_specifics_t asn_SPC_MapData_specs_1; +extern asn_TYPE_member_t asn_MBR_MapData_1[9]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IntersectionGeometryList.h" +#include "RoadSegmentList.h" +#include "DataParameters.h" +#include "RestrictionClassList.h" +#include "RegionalExtension.h" + +#endif /* _MapData_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MaxTimetoChange.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MaxTimetoChange.h new file mode 100644 index 000000000..d33a3d4b9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MaxTimetoChange.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MaxTimetoChange_H_ +#define _MaxTimetoChange_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MaxTimetoChange */ +typedef long MaxTimetoChange_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MaxTimetoChange_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MaxTimetoChange; +asn_struct_free_f MaxTimetoChange_free; +asn_struct_print_f MaxTimetoChange_print; +asn_constr_check_f MaxTimetoChange_constraint; +ber_type_decoder_f MaxTimetoChange_decode_ber; +der_type_encoder_f MaxTimetoChange_encode_der; +xer_type_decoder_f MaxTimetoChange_decode_xer; +xer_type_encoder_f MaxTimetoChange_encode_xer; +oer_type_decoder_f MaxTimetoChange_decode_oer; +oer_type_encoder_f MaxTimetoChange_encode_oer; +per_type_decoder_f MaxTimetoChange_decode_uper; +per_type_encoder_f MaxTimetoChange_encode_uper; +per_type_decoder_f MaxTimetoChange_decode_aper; +per_type_encoder_f MaxTimetoChange_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MaxTimetoChange_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MeasurementTimeOffset.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MeasurementTimeOffset.h new file mode 100644 index 000000000..59c1c0f1f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MeasurementTimeOffset.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _MeasurementTimeOffset_H_ +#define _MeasurementTimeOffset_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* MeasurementTimeOffset */ +typedef long MeasurementTimeOffset_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MeasurementTimeOffset_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementTimeOffset; +asn_struct_free_f MeasurementTimeOffset_free; +asn_struct_print_f MeasurementTimeOffset_print; +asn_constr_check_f MeasurementTimeOffset_constraint; +ber_type_decoder_f MeasurementTimeOffset_decode_ber; +der_type_encoder_f MeasurementTimeOffset_encode_der; +xer_type_decoder_f MeasurementTimeOffset_decode_xer; +xer_type_encoder_f MeasurementTimeOffset_encode_xer; +oer_type_decoder_f MeasurementTimeOffset_decode_oer; +oer_type_encoder_f MeasurementTimeOffset_encode_oer; +per_type_decoder_f MeasurementTimeOffset_decode_uper; +per_type_encoder_f MeasurementTimeOffset_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementTimeOffset_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MergeDivergeNodeAngle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MergeDivergeNodeAngle.h new file mode 100644 index 000000000..72bc26297 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MergeDivergeNodeAngle.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MergeDivergeNodeAngle_H_ +#define _MergeDivergeNodeAngle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MergeDivergeNodeAngle */ +typedef long MergeDivergeNodeAngle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MergeDivergeNodeAngle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MergeDivergeNodeAngle; +asn_struct_free_f MergeDivergeNodeAngle_free; +asn_struct_print_f MergeDivergeNodeAngle_print; +asn_constr_check_f MergeDivergeNodeAngle_constraint; +ber_type_decoder_f MergeDivergeNodeAngle_decode_ber; +der_type_encoder_f MergeDivergeNodeAngle_encode_der; +xer_type_decoder_f MergeDivergeNodeAngle_decode_xer; +xer_type_encoder_f MergeDivergeNodeAngle_encode_xer; +oer_type_decoder_f MergeDivergeNodeAngle_decode_oer; +oer_type_encoder_f MergeDivergeNodeAngle_encode_oer; +per_type_decoder_f MergeDivergeNodeAngle_decode_uper; +per_type_encoder_f MergeDivergeNodeAngle_encode_uper; +per_type_decoder_f MergeDivergeNodeAngle_decode_aper; +per_type_encoder_f MergeDivergeNodeAngle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MergeDivergeNodeAngle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MessageBLOB.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MessageBLOB.h new file mode 100644 index 000000000..701bcf3ef --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MessageBLOB.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MessageBLOB_H_ +#define _MessageBLOB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MessageBLOB */ +typedef OCTET_STRING_t MessageBLOB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MessageBLOB; +asn_struct_free_f MessageBLOB_free; +asn_struct_print_f MessageBLOB_print; +asn_constr_check_f MessageBLOB_constraint; +ber_type_decoder_f MessageBLOB_decode_ber; +der_type_encoder_f MessageBLOB_encode_der; +xer_type_decoder_f MessageBLOB_decode_xer; +xer_type_encoder_f MessageBLOB_encode_xer; +oer_type_decoder_f MessageBLOB_decode_oer; +oer_type_encoder_f MessageBLOB_encode_oer; +per_type_decoder_f MessageBLOB_decode_uper; +per_type_encoder_f MessageBLOB_encode_uper; +per_type_decoder_f MessageBLOB_decode_aper; +per_type_encoder_f MessageBLOB_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MessageBLOB_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MessageFrame.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MessageFrame.h new file mode 100644 index 000000000..23d3c764a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MessageFrame.h @@ -0,0 +1,155 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MessageFrame" + * found in "J2735-MessageFrame.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MessageFrame_H_ +#define _MessageFrame_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DSRCmsgID.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "BasicSafetyMessage.h" +#include "MapData.h" +#include "SPAT.h" +#include "CommonSafetyRequest.h" +#include "EmergencyVehicleAlert.h" +#include "IntersectionCollision.h" +#include "NMEAcorrections.h" +#include "ProbeDataManagement.h" +#include "ProbeVehicleData.h" +#include "RoadSideAlert.h" +#include "RTCMcorrections.h" +#include "SignalRequestMessage.h" +#include "SignalStatusMessage.h" +#include "TravelerInformation.h" +#include "PersonalSafetyMessage.h" +#include "TestMessage00.h" +#include "TestMessage01.h" +#include "TestMessage02.h" +#include "TestMessage03.h" +#include "TestMessage04.h" +#include "TestMessage05.h" +#include "TestMessage06.h" +#include "TestMessage07.h" +#include "TestMessage08.h" +#include "TestMessage09.h" +#include "TestMessage10.h" +#include "TestMessage11.h" +#include "TestMessage12.h" +#include "TestMessage13.h" +#include "TestMessage14.h" +#include "TestMessage15.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "SensorDataSharingMessage.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MessageFrame__value_PR { + MessageFrame__value_PR_NOTHING, /* No components present */ + MessageFrame__value_PR_BasicSafetyMessage, + MessageFrame__value_PR_MapData, + MessageFrame__value_PR_SPAT, + MessageFrame__value_PR_CommonSafetyRequest, + MessageFrame__value_PR_EmergencyVehicleAlert, + MessageFrame__value_PR_IntersectionCollision, + MessageFrame__value_PR_NMEAcorrections, + MessageFrame__value_PR_ProbeDataManagement, + MessageFrame__value_PR_ProbeVehicleData, + MessageFrame__value_PR_RoadSideAlert, + MessageFrame__value_PR_RTCMcorrections, + MessageFrame__value_PR_SignalRequestMessage, + MessageFrame__value_PR_SignalStatusMessage, + MessageFrame__value_PR_TravelerInformation, + MessageFrame__value_PR_PersonalSafetyMessage, + MessageFrame__value_PR_TestMessage00, + MessageFrame__value_PR_TestMessage01, + MessageFrame__value_PR_TestMessage02, + MessageFrame__value_PR_TestMessage03, + MessageFrame__value_PR_TestMessage04, + MessageFrame__value_PR_TestMessage05, + MessageFrame__value_PR_TestMessage06, + MessageFrame__value_PR_TestMessage07, + MessageFrame__value_PR_TestMessage08, + MessageFrame__value_PR_TestMessage09, + MessageFrame__value_PR_TestMessage10, + MessageFrame__value_PR_TestMessage11, + MessageFrame__value_PR_TestMessage12, + MessageFrame__value_PR_TestMessage13, + MessageFrame__value_PR_TestMessage14, + MessageFrame__value_PR_TestMessage15, + MessageFrame__value_PR_SensorDataSharingMessage +} MessageFrame__value_PR; + +/* MessageFrame */ +typedef struct MessageFrame { + DSRCmsgID_t messageId; + struct MessageFrame__value { + MessageFrame__value_PR present; + union MessageFrame__value_u { + BasicSafetyMessage_t BasicSafetyMessage; + MapData_t MapData; + SPAT_t SPAT; + CommonSafetyRequest_t CommonSafetyRequest; + EmergencyVehicleAlert_t EmergencyVehicleAlert; + IntersectionCollision_t IntersectionCollision; + NMEAcorrections_t NMEAcorrections; + ProbeDataManagement_t ProbeDataManagement; + ProbeVehicleData_t ProbeVehicleData; + RoadSideAlert_t RoadSideAlert; + RTCMcorrections_t RTCMcorrections; + SignalRequestMessage_t SignalRequestMessage; + SignalStatusMessage_t SignalStatusMessage; + TravelerInformation_t TravelerInformation; + PersonalSafetyMessage_t PersonalSafetyMessage; + TestMessage00_t TestMessage00; + TestMessage01_t TestMessage01; + TestMessage02_t TestMessage02; + TestMessage03_t TestMessage03; + TestMessage04_t TestMessage04; + TestMessage05_t TestMessage05; + TestMessage06_t TestMessage06; + TestMessage07_t TestMessage07; + TestMessage08_t TestMessage08; + TestMessage09_t TestMessage09; + TestMessage10_t TestMessage10; + TestMessage11_t TestMessage11; + TestMessage12_t TestMessage12; + TestMessage13_t TestMessage13; + TestMessage14_t TestMessage14; + TestMessage15_t TestMessage15; + SensorDataSharingMessage_t SensorDataSharingMessage; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MessageFrame_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MessageFrame; + +#ifdef __cplusplus +} +#endif + +#endif /* _MessageFrame_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinTimetoChange.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinTimetoChange.h new file mode 100644 index 000000000..60991334b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinTimetoChange.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MinTimetoChange_H_ +#define _MinTimetoChange_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MinTimetoChange */ +typedef long MinTimetoChange_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MinTimetoChange_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MinTimetoChange; +asn_struct_free_f MinTimetoChange_free; +asn_struct_print_f MinTimetoChange_print; +asn_constr_check_f MinTimetoChange_constraint; +ber_type_decoder_f MinTimetoChange_decode_ber; +der_type_encoder_f MinTimetoChange_encode_der; +xer_type_decoder_f MinTimetoChange_decode_xer; +xer_type_encoder_f MinTimetoChange_encode_xer; +oer_type_decoder_f MinTimetoChange_decode_oer; +oer_type_encoder_f MinTimetoChange_encode_oer; +per_type_decoder_f MinTimetoChange_decode_uper; +per_type_encoder_f MinTimetoChange_encode_uper; +per_type_decoder_f MinTimetoChange_decode_aper; +per_type_encoder_f MinTimetoChange_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MinTimetoChange_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Minute.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Minute.h new file mode 100644 index 000000000..382f04f75 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Minute.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Minute_H_ +#define _Minute_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Minute */ +typedef long Minute_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Minute_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Minute; +asn_struct_free_f Minute_free; +asn_struct_print_f Minute_print; +asn_constr_check_f Minute_constraint; +ber_type_decoder_f Minute_decode_ber; +der_type_encoder_f Minute_encode_der; +xer_type_decoder_f Minute_decode_xer; +xer_type_encoder_f Minute_encode_xer; +oer_type_decoder_f Minute_decode_oer; +oer_type_encoder_f Minute_encode_oer; +per_type_decoder_f Minute_decode_uper; +per_type_encoder_f Minute_encode_uper; +per_type_decoder_f Minute_decode_aper; +per_type_encoder_f Minute_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Minute_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinuteOfTheYear.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinuteOfTheYear.h new file mode 100644 index 000000000..cb643c7d6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinuteOfTheYear.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MinuteOfTheYear_H_ +#define _MinuteOfTheYear_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MinuteOfTheYear */ +typedef long MinuteOfTheYear_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MinuteOfTheYear_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MinuteOfTheYear; +asn_struct_free_f MinuteOfTheYear_free; +asn_struct_print_f MinuteOfTheYear_print; +asn_constr_check_f MinuteOfTheYear_constraint; +ber_type_decoder_f MinuteOfTheYear_decode_ber; +der_type_encoder_f MinuteOfTheYear_encode_der; +xer_type_decoder_f MinuteOfTheYear_decode_xer; +xer_type_encoder_f MinuteOfTheYear_encode_xer; +oer_type_decoder_f MinuteOfTheYear_decode_oer; +oer_type_encoder_f MinuteOfTheYear_encode_oer; +per_type_decoder_f MinuteOfTheYear_decode_uper; +per_type_encoder_f MinuteOfTheYear_encode_uper; +per_type_decoder_f MinuteOfTheYear_decode_aper; +per_type_encoder_f MinuteOfTheYear_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MinuteOfTheYear_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinutesAngle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinutesAngle.h new file mode 100644 index 000000000..9b425d37b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinutesAngle.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MinutesAngle_H_ +#define _MinutesAngle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MinutesAngle */ +typedef long MinutesAngle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MinutesAngle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MinutesAngle; +asn_struct_free_f MinutesAngle_free; +asn_struct_print_f MinutesAngle_print; +asn_constr_check_f MinutesAngle_constraint; +ber_type_decoder_f MinutesAngle_decode_ber; +der_type_encoder_f MinutesAngle_encode_der; +xer_type_decoder_f MinutesAngle_decode_xer; +xer_type_encoder_f MinutesAngle_encode_xer; +oer_type_decoder_f MinutesAngle_decode_oer; +oer_type_encoder_f MinutesAngle_encode_oer; +per_type_decoder_f MinutesAngle_decode_uper; +per_type_encoder_f MinutesAngle_encode_uper; +per_type_decoder_f MinutesAngle_decode_aper; +per_type_encoder_f MinutesAngle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MinutesAngle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinutesDuration.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinutesDuration.h new file mode 100644 index 000000000..0fcc11965 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MinutesDuration.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MinutesDuration_H_ +#define _MinutesDuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MinutesDuration */ +typedef long MinutesDuration_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MinutesDuration_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MinutesDuration; +asn_struct_free_f MinutesDuration_free; +asn_struct_print_f MinutesDuration_print; +asn_constr_check_f MinutesDuration_constraint; +ber_type_decoder_f MinutesDuration_decode_ber; +der_type_encoder_f MinutesDuration_encode_der; +xer_type_decoder_f MinutesDuration_decode_xer; +xer_type_encoder_f MinutesDuration_encode_xer; +oer_type_decoder_f MinutesDuration_decode_oer; +oer_type_encoder_f MinutesDuration_encode_oer; +per_type_decoder_f MinutesDuration_decode_uper; +per_type_encoder_f MinutesDuration_encode_uper; +per_type_decoder_f MinutesDuration_decode_aper; +per_type_encoder_f MinutesDuration_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MinutesDuration_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityDynamicID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityDynamicID.h new file mode 100644 index 000000000..6585d54e0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityDynamicID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityDynamicID_H_ +#define _MobilityDynamicID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityDynamicID */ +typedef IA5String_t MobilityDynamicID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MobilityDynamicID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MobilityDynamicID; +asn_struct_free_f MobilityDynamicID_free; +asn_struct_print_f MobilityDynamicID_print; +asn_constr_check_f MobilityDynamicID_constraint; +ber_type_decoder_f MobilityDynamicID_decode_ber; +der_type_encoder_f MobilityDynamicID_encode_der; +xer_type_decoder_f MobilityDynamicID_decode_xer; +xer_type_encoder_f MobilityDynamicID_encode_xer; +oer_type_decoder_f MobilityDynamicID_decode_oer; +oer_type_encoder_f MobilityDynamicID_encode_oer; +per_type_decoder_f MobilityDynamicID_decode_uper; +per_type_encoder_f MobilityDynamicID_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityDynamicID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityECEFCoordinate.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityECEFCoordinate.h new file mode 100644 index 000000000..886ddd37c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityECEFCoordinate.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityECEFCoordinate_H_ +#define _MobilityECEFCoordinate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityECEFCoordinate */ +typedef long MobilityECEFCoordinate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MobilityECEFCoordinate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MobilityECEFCoordinate; +asn_struct_free_f MobilityECEFCoordinate_free; +asn_struct_print_f MobilityECEFCoordinate_print; +asn_constr_check_f MobilityECEFCoordinate_constraint; +ber_type_decoder_f MobilityECEFCoordinate_decode_ber; +der_type_encoder_f MobilityECEFCoordinate_encode_der; +xer_type_decoder_f MobilityECEFCoordinate_decode_xer; +xer_type_encoder_f MobilityECEFCoordinate_encode_xer; +oer_type_decoder_f MobilityECEFCoordinate_decode_oer; +oer_type_encoder_f MobilityECEFCoordinate_encode_oer; +per_type_decoder_f MobilityECEFCoordinate_decode_uper; +per_type_encoder_f MobilityECEFCoordinate_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityECEFCoordinate_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityECEFOffset.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityECEFOffset.h new file mode 100644 index 000000000..abdf4de36 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityECEFOffset.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityECEFOffset_H_ +#define _MobilityECEFOffset_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityECEFOffsetCoordinate.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityECEFOffset */ +typedef struct MobilityECEFOffset { + MobilityECEFOffsetCoordinate_t offsetX; + MobilityECEFOffsetCoordinate_t offsetY; + MobilityECEFOffsetCoordinate_t offsetZ; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityECEFOffset_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityECEFOffset; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityECEFOffset_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityECEFOffset_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityECEFOffset_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityECEFOffsetCoordinate.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityECEFOffsetCoordinate.h new file mode 100644 index 000000000..0515352ed --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityECEFOffsetCoordinate.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityECEFOffsetCoordinate_H_ +#define _MobilityECEFOffsetCoordinate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityECEFOffsetCoordinate */ +typedef long MobilityECEFOffsetCoordinate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MobilityECEFOffsetCoordinate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MobilityECEFOffsetCoordinate; +asn_struct_free_f MobilityECEFOffsetCoordinate_free; +asn_struct_print_f MobilityECEFOffsetCoordinate_print; +asn_constr_check_f MobilityECEFOffsetCoordinate_constraint; +ber_type_decoder_f MobilityECEFOffsetCoordinate_decode_ber; +der_type_encoder_f MobilityECEFOffsetCoordinate_encode_der; +xer_type_decoder_f MobilityECEFOffsetCoordinate_decode_xer; +xer_type_encoder_f MobilityECEFOffsetCoordinate_encode_xer; +oer_type_decoder_f MobilityECEFOffsetCoordinate_decode_oer; +oer_type_encoder_f MobilityECEFOffsetCoordinate_encode_oer; +per_type_decoder_f MobilityECEFOffsetCoordinate_decode_uper; +per_type_encoder_f MobilityECEFOffsetCoordinate_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityECEFOffsetCoordinate_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityGUID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityGUID.h new file mode 100644 index 000000000..b95a26e13 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityGUID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityGUID_H_ +#define _MobilityGUID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityGUID */ +typedef IA5String_t MobilityGUID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MobilityGUID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MobilityGUID; +asn_struct_free_f MobilityGUID_free; +asn_struct_print_f MobilityGUID_print; +asn_constr_check_f MobilityGUID_constraint; +ber_type_decoder_f MobilityGUID_decode_ber; +der_type_encoder_f MobilityGUID_encode_der; +xer_type_decoder_f MobilityGUID_decode_xer; +xer_type_encoder_f MobilityGUID_encode_xer; +oer_type_decoder_f MobilityGUID_decode_oer; +oer_type_encoder_f MobilityGUID_encode_oer; +per_type_decoder_f MobilityGUID_decode_uper; +per_type_encoder_f MobilityGUID_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityGUID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityHeader.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityHeader.h new file mode 100644 index 000000000..7b32562ec --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityHeader.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityHeader_H_ +#define _MobilityHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityStaticID.h" +#include "MobilityDynamicID.h" +#include "MobilityGUID.h" +#include "MobilityTimestamp.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityHeader */ +typedef struct MobilityHeader { + MobilityStaticID_t hostStaticId; + MobilityStaticID_t targetStaticId; + MobilityDynamicID_t hostBSMId; + MobilityGUID_t planId; + MobilityTimestamp_t timestamp; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityHeader; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityHeader_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityHeader_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityHeader_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityLocation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityLocation.h new file mode 100644 index 000000000..f73b68e2a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityLocation.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityLocation_H_ +#define _MobilityLocation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityECEFCoordinate.h" +#include "MobilityTimestamp.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityLocation */ +typedef struct MobilityLocation { + MobilityECEFCoordinate_t ecefX; + MobilityECEFCoordinate_t ecefY; + MobilityECEFCoordinate_t ecefZ; + MobilityTimestamp_t timestamp; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityLocation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityLocation; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityLocation_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityLocation_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityLocation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityLocationOffsets.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityLocationOffsets.h new file mode 100644 index 000000000..f40add688 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityLocationOffsets.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityLocationOffsets_H_ +#define _MobilityLocationOffsets_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MobilityECEFOffset; + +/* MobilityLocationOffsets */ +typedef struct MobilityLocationOffsets { + A_SEQUENCE_OF(struct MobilityECEFOffset) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityLocationOffsets_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityLocationOffsets; +extern asn_SET_OF_specifics_t asn_SPC_MobilityLocationOffsets_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityLocationOffsets_1[1]; +extern asn_per_constraints_t asn_PER_type_MobilityLocationOffsets_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "MobilityECEFOffset.h" + +#endif /* _MobilityLocationOffsets_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityNeeds.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityNeeds.h new file mode 100644 index 000000000..4eceaa686 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityNeeds.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "../J2735_201603DA_with_PMM.ASN" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -S/home/gmb/TMX-OAM/Build/asn1c/skeletons` + */ + +#ifndef _MobilityNeeds_H_ +#define _MobilityNeeds_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityNeedsType.h" +#include "SeatCount.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityNeeds */ +typedef struct MobilityNeeds { + MobilityNeedsType_t type; + SeatCount_t count; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityNeeds_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityNeeds; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityNeeds_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityNeeds_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityNeeds_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityNeedsList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityNeedsList.h new file mode 100644 index 000000000..05421eb09 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityNeedsList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "../J2735_201603DA_with_PMM.ASN" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -S/home/gmb/TMX-OAM/Build/asn1c/skeletons` + */ + +#ifndef _MobilityNeedsList_H_ +#define _MobilityNeedsList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MobilityNeeds; + +/* MobilityNeedsList */ +typedef struct MobilityNeedsList { + A_SEQUENCE_OF(struct MobilityNeeds) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityNeedsList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityNeedsList; +extern asn_SET_OF_specifics_t asn_SPC_MobilityNeedsList_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityNeedsList_1[1]; +extern asn_per_constraints_t asn_PER_type_MobilityNeedsList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "MobilityNeeds.h" + +#endif /* _MobilityNeedsList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityNeedsType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityNeedsType.h new file mode 100644 index 000000000..9da4492ee --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityNeedsType.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "../J2735_201603DA_with_PMM.ASN" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -S/home/gmb/TMX-OAM/Build/asn1c/skeletons` + */ + +#ifndef _MobilityNeedsType_H_ +#define _MobilityNeedsType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MobilityNeedsType { + MobilityNeedsType_noSpecialNeeds = 0, + MobilityNeedsType_wheelchair = 1, + MobilityNeedsType_needsSeat = 2 +} e_MobilityNeedsType; + +/* MobilityNeedsType */ +typedef long MobilityNeedsType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MobilityNeedsType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MobilityNeedsType; +extern const asn_INTEGER_specifics_t asn_SPC_MobilityNeedsType_specs_1; +asn_struct_free_f MobilityNeedsType_free; +asn_struct_print_f MobilityNeedsType_print; +asn_constr_check_f MobilityNeedsType_constraint; +ber_type_decoder_f MobilityNeedsType_decode_ber; +der_type_encoder_f MobilityNeedsType_encode_der; +xer_type_decoder_f MobilityNeedsType_decode_xer; +xer_type_encoder_f MobilityNeedsType_encode_xer; +per_type_decoder_f MobilityNeedsType_decode_uper; +per_type_encoder_f MobilityNeedsType_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityNeedsType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityOperation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityOperation.h new file mode 100644 index 000000000..cf865e33b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityOperation.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityOperation_H_ +#define _MobilityOperation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityStrategy.h" +#include "MobilityParameters.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityOperation */ +typedef struct MobilityOperation { + MobilityStrategy_t strategy; + MobilityParameters_t operationParams; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityOperation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityOperation; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityOperation_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityOperation_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityOperation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityParameters.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityParameters.h new file mode 100644 index 000000000..7db88393d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityParameters.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityParameters_H_ +#define _MobilityParameters_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityParameters */ +typedef IA5String_t MobilityParameters_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MobilityParameters_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MobilityParameters; +asn_struct_free_f MobilityParameters_free; +asn_struct_print_f MobilityParameters_print; +asn_constr_check_f MobilityParameters_constraint; +ber_type_decoder_f MobilityParameters_decode_ber; +der_type_encoder_f MobilityParameters_encode_der; +xer_type_decoder_f MobilityParameters_decode_xer; +xer_type_encoder_f MobilityParameters_encode_xer; +oer_type_decoder_f MobilityParameters_decode_oer; +oer_type_encoder_f MobilityParameters_encode_oer; +per_type_decoder_f MobilityParameters_decode_uper; +per_type_encoder_f MobilityParameters_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityParameters_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityPath.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityPath.h new file mode 100644 index 000000000..2cab5ee68 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityPath.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityPath_H_ +#define _MobilityPath_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityLocation.h" +#include "MobilityLocationOffsets.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityPath */ +typedef struct MobilityPath { + MobilityLocation_t location; + MobilityLocationOffsets_t trajectory; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityPath_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityPath; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityPath_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityPath_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityPath_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityPlanType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityPlanType.h new file mode 100644 index 000000000..4e971e1aa --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityPlanType.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityPlanType_H_ +#define _MobilityPlanType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MobilityPlanType { + MobilityPlanType_unknown = 0, + MobilityPlanType_changingLanesToTheLeft = 1, + MobilityPlanType_changingLanesToTheRight = 2, + MobilityPlanType_joinPlatoonAtRear = 3, + MobilityPlanType_platoonFollowerJoin = 4 + /* + * Enumeration is extensible + */ +} e_MobilityPlanType; + +/* MobilityPlanType */ +typedef long MobilityPlanType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MobilityPlanType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MobilityPlanType; +extern const asn_INTEGER_specifics_t asn_SPC_MobilityPlanType_specs_1; +asn_struct_free_f MobilityPlanType_free; +asn_struct_print_f MobilityPlanType_print; +asn_constr_check_f MobilityPlanType_constraint; +ber_type_decoder_f MobilityPlanType_decode_ber; +der_type_encoder_f MobilityPlanType_encode_der; +xer_type_decoder_f MobilityPlanType_decode_xer; +xer_type_encoder_f MobilityPlanType_encode_xer; +oer_type_decoder_f MobilityPlanType_decode_oer; +oer_type_encoder_f MobilityPlanType_encode_oer; +per_type_decoder_f MobilityPlanType_decode_uper; +per_type_encoder_f MobilityPlanType_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityPlanType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityRequest.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityRequest.h new file mode 100644 index 000000000..83580ddac --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityRequest.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityRequest_H_ +#define _MobilityRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityStrategy.h" +#include "MobilityPlanType.h" +#include "MobilityUrgency.h" +#include "MobilityLocation.h" +#include "MobilityLocationOffsets.h" +#include "MobilityParameters.h" +#include "MobilityTimestamp.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MobilityLocation; +struct MobilityLocationOffsets; + +/* MobilityRequest */ +typedef struct MobilityRequest { + MobilityStrategy_t strategy; + MobilityPlanType_t planType; + MobilityUrgency_t urgency; + MobilityLocation_t location; + MobilityParameters_t strategyParams; + MobilityLocation_t trajectoryStart /* OPTIONAL */; + MobilityLocationOffsets_t trajectory /* OPTIONAL */; + MobilityTimestamp_t expiration /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityRequest_1[8]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "MobilityLocation.h" +#include "MobilityLocationOffsets.h" + +#endif /* _MobilityRequest_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityResponse.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityResponse.h new file mode 100644 index 000000000..76f7004a4 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityResponse.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityResponse_H_ +#define _MobilityResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityUrgency.h" +#include "MobilityResponseFlag.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityResponse */ +typedef struct MobilityResponse { + MobilityUrgency_t urgency; + MobilityResponseFlag_t isAccepted; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityResponse_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityResponse_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityResponseFlag.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityResponseFlag.h new file mode 100644 index 000000000..30f71521b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityResponseFlag.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityResponseFlag_H_ +#define _MobilityResponseFlag_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BOOLEAN.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityResponseFlag */ +typedef BOOLEAN_t MobilityResponseFlag_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityResponseFlag; +asn_struct_free_f MobilityResponseFlag_free; +asn_struct_print_f MobilityResponseFlag_print; +asn_constr_check_f MobilityResponseFlag_constraint; +ber_type_decoder_f MobilityResponseFlag_decode_ber; +der_type_encoder_f MobilityResponseFlag_encode_der; +xer_type_decoder_f MobilityResponseFlag_decode_xer; +xer_type_encoder_f MobilityResponseFlag_encode_xer; +oer_type_decoder_f MobilityResponseFlag_decode_oer; +oer_type_encoder_f MobilityResponseFlag_encode_oer; +per_type_decoder_f MobilityResponseFlag_decode_uper; +per_type_encoder_f MobilityResponseFlag_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityResponseFlag_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityStaticID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityStaticID.h new file mode 100644 index 000000000..74a040938 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityStaticID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityStaticID_H_ +#define _MobilityStaticID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityStaticID */ +typedef IA5String_t MobilityStaticID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MobilityStaticID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MobilityStaticID; +asn_struct_free_f MobilityStaticID_free; +asn_struct_print_f MobilityStaticID_print; +asn_constr_check_f MobilityStaticID_constraint; +ber_type_decoder_f MobilityStaticID_decode_ber; +der_type_encoder_f MobilityStaticID_encode_der; +xer_type_decoder_f MobilityStaticID_decode_xer; +xer_type_encoder_f MobilityStaticID_encode_xer; +oer_type_decoder_f MobilityStaticID_decode_oer; +oer_type_encoder_f MobilityStaticID_encode_oer; +per_type_decoder_f MobilityStaticID_decode_uper; +per_type_encoder_f MobilityStaticID_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityStaticID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityStrategy.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityStrategy.h new file mode 100644 index 000000000..e7c93479a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityStrategy.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityStrategy_H_ +#define _MobilityStrategy_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityStrategy */ +typedef IA5String_t MobilityStrategy_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MobilityStrategy_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MobilityStrategy; +asn_struct_free_f MobilityStrategy_free; +asn_struct_print_f MobilityStrategy_print; +asn_constr_check_f MobilityStrategy_constraint; +ber_type_decoder_f MobilityStrategy_decode_ber; +der_type_encoder_f MobilityStrategy_encode_der; +xer_type_decoder_f MobilityStrategy_decode_xer; +xer_type_encoder_f MobilityStrategy_encode_xer; +oer_type_decoder_f MobilityStrategy_decode_oer; +oer_type_encoder_f MobilityStrategy_encode_oer; +per_type_decoder_f MobilityStrategy_decode_uper; +per_type_encoder_f MobilityStrategy_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityStrategy_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityTimestamp.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityTimestamp.h new file mode 100644 index 000000000..17e94afb7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityTimestamp.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityTimestamp_H_ +#define _MobilityTimestamp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityTimestamp */ +typedef IA5String_t MobilityTimestamp_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MobilityTimestamp_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MobilityTimestamp; +asn_struct_free_f MobilityTimestamp_free; +asn_struct_print_f MobilityTimestamp_print; +asn_constr_check_f MobilityTimestamp_constraint; +ber_type_decoder_f MobilityTimestamp_decode_ber; +der_type_encoder_f MobilityTimestamp_encode_der; +xer_type_decoder_f MobilityTimestamp_decode_xer; +xer_type_encoder_f MobilityTimestamp_encode_xer; +oer_type_decoder_f MobilityTimestamp_decode_oer; +oer_type_encoder_f MobilityTimestamp_encode_oer; +per_type_decoder_f MobilityTimestamp_decode_uper; +per_type_encoder_f MobilityTimestamp_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityTimestamp_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityUrgency.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityUrgency.h new file mode 100644 index 000000000..eef5355ff --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MobilityUrgency.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _MobilityUrgency_H_ +#define _MobilityUrgency_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityUrgency */ +typedef long MobilityUrgency_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MobilityUrgency_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MobilityUrgency; +asn_struct_free_f MobilityUrgency_free; +asn_struct_print_f MobilityUrgency_print; +asn_constr_check_f MobilityUrgency_constraint; +ber_type_decoder_f MobilityUrgency_decode_ber; +der_type_encoder_f MobilityUrgency_encode_der; +xer_type_decoder_f MobilityUrgency_decode_xer; +xer_type_encoder_f MobilityUrgency_encode_xer; +oer_type_decoder_f MobilityUrgency_decode_oer; +oer_type_encoder_f MobilityUrgency_encode_oer; +per_type_decoder_f MobilityUrgency_decode_uper; +per_type_encoder_f MobilityUrgency_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityUrgency_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ModeOfTransportType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ModeOfTransportType.h new file mode 100644 index 000000000..8d7f72926 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ModeOfTransportType.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "../J2735_201603DA_with_PMM.ASN" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -S/home/gmb/TMX-OAM/Build/asn1c/skeletons` + */ + +#ifndef _ModeOfTransportType_H_ +#define _ModeOfTransportType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ModeOfTransportType { + ModeOfTransportType_noPreference = 0, + ModeOfTransportType_transit = 1, + ModeOfTransportType_taxi = 2, + ModeOfTransportType_rideShare = 3 +} e_ModeOfTransportType; + +/* ModeOfTransportType */ +typedef long ModeOfTransportType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ModeOfTransportType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ModeOfTransportType; +extern const asn_INTEGER_specifics_t asn_SPC_ModeOfTransportType_specs_1; +asn_struct_free_f ModeOfTransportType_free; +asn_struct_print_f ModeOfTransportType_print; +asn_constr_check_f ModeOfTransportType_constraint; +ber_type_decoder_f ModeOfTransportType_decode_ber; +der_type_encoder_f ModeOfTransportType_encode_der; +xer_type_decoder_f ModeOfTransportType_decode_xer; +xer_type_encoder_f ModeOfTransportType_encode_xer; +per_type_decoder_f ModeOfTransportType_decode_uper; +per_type_encoder_f ModeOfTransportType_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ModeOfTransportType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Month.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Month.h new file mode 100644 index 000000000..28b80a00f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Month.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Month_H_ +#define _Month_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Month */ +typedef long Month_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Month_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Month; +asn_struct_free_f Month_free; +asn_struct_print_f Month_print; +asn_constr_check_f Month_constraint; +ber_type_decoder_f Month_decode_ber; +der_type_encoder_f Month_encode_der; +xer_type_decoder_f Month_decode_xer; +xer_type_encoder_f Month_encode_xer; +oer_type_decoder_f Month_decode_oer; +oer_type_encoder_f Month_encode_oer; +per_type_decoder_f Month_decode_uper; +per_type_encoder_f Month_encode_uper; +per_type_decoder_f Month_decode_aper; +per_type_encoder_f Month_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Month_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MotorizedPropelledType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MotorizedPropelledType.h new file mode 100644 index 000000000..c3dc378cf --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MotorizedPropelledType.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MotorizedPropelledType_H_ +#define _MotorizedPropelledType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MotorizedPropelledType { + MotorizedPropelledType_unavailable = 0, + MotorizedPropelledType_otherTypes = 1, + MotorizedPropelledType_wheelChair = 2, + MotorizedPropelledType_bicycle = 3, + MotorizedPropelledType_scooter = 4, + MotorizedPropelledType_selfBalancingDevice = 5 + /* + * Enumeration is extensible + */ +} e_MotorizedPropelledType; + +/* MotorizedPropelledType */ +typedef long MotorizedPropelledType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MotorizedPropelledType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MotorizedPropelledType; +extern const asn_INTEGER_specifics_t asn_SPC_MotorizedPropelledType_specs_1; +asn_struct_free_f MotorizedPropelledType_free; +asn_struct_print_f MotorizedPropelledType_print; +asn_constr_check_f MotorizedPropelledType_constraint; +ber_type_decoder_f MotorizedPropelledType_decode_ber; +der_type_encoder_f MotorizedPropelledType_encode_der; +xer_type_decoder_f MotorizedPropelledType_decode_xer; +xer_type_encoder_f MotorizedPropelledType_encode_xer; +oer_type_decoder_f MotorizedPropelledType_decode_oer; +oer_type_encoder_f MotorizedPropelledType_encode_oer; +per_type_decoder_f MotorizedPropelledType_decode_uper; +per_type_encoder_f MotorizedPropelledType_encode_uper; +per_type_decoder_f MotorizedPropelledType_decode_aper; +per_type_encoder_f MotorizedPropelledType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MotorizedPropelledType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementEvent-addGrpB.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementEvent-addGrpB.h new file mode 100644 index 000000000..766a4be2d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementEvent-addGrpB.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MovementEvent_addGrpB_H_ +#define _MovementEvent_addGrpB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TimeRemaining.h" +#include "MinTimetoChange.h" +#include "MaxTimetoChange.h" +#include "TimeIntervalConfidence.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MovementEvent-addGrpB */ +typedef struct MovementEvent_addGrpB { + TimeRemaining_t *startTime; /* OPTIONAL */ + MinTimetoChange_t minEndTime; + MaxTimetoChange_t *maxEndTime; /* OPTIONAL */ + TimeRemaining_t *likelyTime; /* OPTIONAL */ + TimeIntervalConfidence_t *confidence; /* OPTIONAL */ + TimeRemaining_t *nextTime; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MovementEvent_addGrpB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MovementEvent_addGrpB; +extern asn_SEQUENCE_specifics_t asn_SPC_MovementEvent_addGrpB_specs_1; +extern asn_TYPE_member_t asn_MBR_MovementEvent_addGrpB_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MovementEvent_addGrpB_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementEvent.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementEvent.h new file mode 100644 index 000000000..e967b78ac --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementEvent.h @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MovementEvent_H_ +#define _MovementEvent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MovementPhaseState.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TimeChangeDetails; +struct AdvisorySpeedList; +struct Reg_MovementEvent; + +/* MovementEvent */ +typedef struct MovementEvent { + MovementPhaseState_t eventState; + struct TimeChangeDetails *timing; /* OPTIONAL */ + struct AdvisorySpeedList *speeds; /* OPTIONAL */ + struct MovementEvent__regional { + A_SEQUENCE_OF(struct Reg_MovementEvent) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MovementEvent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MovementEvent; +extern asn_SEQUENCE_specifics_t asn_SPC_MovementEvent_specs_1; +extern asn_TYPE_member_t asn_MBR_MovementEvent_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "TimeChangeDetails.h" +#include "AdvisorySpeedList.h" +#include "RegionalExtension.h" + +#endif /* _MovementEvent_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementEventList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementEventList.h new file mode 100644 index 000000000..c9202d650 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementEventList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MovementEventList_H_ +#define _MovementEventList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MovementEvent; + +/* MovementEventList */ +typedef struct MovementEventList { + A_SEQUENCE_OF(struct MovementEvent) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MovementEventList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MovementEventList; +extern asn_SET_OF_specifics_t asn_SPC_MovementEventList_specs_1; +extern asn_TYPE_member_t asn_MBR_MovementEventList_1[1]; +extern asn_per_constraints_t asn_PER_type_MovementEventList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "MovementEvent.h" + +#endif /* _MovementEventList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementList.h new file mode 100644 index 000000000..555a2f25b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MovementList_H_ +#define _MovementList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MovementState; + +/* MovementList */ +typedef struct MovementList { + A_SEQUENCE_OF(struct MovementState) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MovementList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MovementList; +extern asn_SET_OF_specifics_t asn_SPC_MovementList_specs_1; +extern asn_TYPE_member_t asn_MBR_MovementList_1[1]; +extern asn_per_constraints_t asn_PER_type_MovementList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "MovementState.h" + +#endif /* _MovementList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementPhaseState.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementPhaseState.h new file mode 100644 index 000000000..3629d1567 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementPhaseState.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MovementPhaseState_H_ +#define _MovementPhaseState_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MovementPhaseState { + MovementPhaseState_unavailable = 0, + MovementPhaseState_dark = 1, + MovementPhaseState_stop_Then_Proceed = 2, + MovementPhaseState_stop_And_Remain = 3, + MovementPhaseState_pre_Movement = 4, + MovementPhaseState_permissive_Movement_Allowed = 5, + MovementPhaseState_protected_Movement_Allowed = 6, + MovementPhaseState_permissive_clearance = 7, + MovementPhaseState_protected_clearance = 8, + MovementPhaseState_caution_Conflicting_Traffic = 9 +} e_MovementPhaseState; + +/* MovementPhaseState */ +typedef long MovementPhaseState_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MovementPhaseState_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MovementPhaseState; +extern const asn_INTEGER_specifics_t asn_SPC_MovementPhaseState_specs_1; +asn_struct_free_f MovementPhaseState_free; +asn_struct_print_f MovementPhaseState_print; +asn_constr_check_f MovementPhaseState_constraint; +ber_type_decoder_f MovementPhaseState_decode_ber; +der_type_encoder_f MovementPhaseState_encode_der; +xer_type_decoder_f MovementPhaseState_decode_xer; +xer_type_encoder_f MovementPhaseState_encode_xer; +oer_type_decoder_f MovementPhaseState_decode_oer; +oer_type_encoder_f MovementPhaseState_encode_oer; +per_type_decoder_f MovementPhaseState_decode_uper; +per_type_encoder_f MovementPhaseState_encode_uper; +per_type_decoder_f MovementPhaseState_decode_aper; +per_type_encoder_f MovementPhaseState_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MovementPhaseState_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementState.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementState.h new file mode 100644 index 000000000..6ee5462ce --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MovementState.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MovementState_H_ +#define _MovementState_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DescriptiveName.h" +#include "SignalGroupID.h" +#include "MovementEventList.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ManeuverAssistList; +struct Reg_MovementState; + +/* MovementState */ +typedef struct MovementState { + DescriptiveName_t *movementName; /* OPTIONAL */ + SignalGroupID_t signalGroup; + MovementEventList_t state_time_speed; + struct ManeuverAssistList *maneuverAssistList; /* OPTIONAL */ + struct MovementState__regional { + A_SEQUENCE_OF(struct Reg_MovementState) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MovementState_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MovementState; +extern asn_SEQUENCE_specifics_t asn_SPC_MovementState_specs_1; +extern asn_TYPE_member_t asn_MBR_MovementState_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ManeuverAssistList.h" +#include "RegionalExtension.h" + +#endif /* _MovementState_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MsgCRC.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MsgCRC.h new file mode 100644 index 000000000..7d0874fc3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MsgCRC.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MsgCRC_H_ +#define _MsgCRC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MsgCRC */ +typedef OCTET_STRING_t MsgCRC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MsgCRC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MsgCRC; +asn_struct_free_f MsgCRC_free; +asn_struct_print_f MsgCRC_print; +asn_constr_check_f MsgCRC_constraint; +ber_type_decoder_f MsgCRC_decode_ber; +der_type_encoder_f MsgCRC_encode_der; +xer_type_decoder_f MsgCRC_decode_xer; +xer_type_encoder_f MsgCRC_encode_xer; +oer_type_decoder_f MsgCRC_decode_oer; +oer_type_encoder_f MsgCRC_encode_oer; +per_type_decoder_f MsgCRC_decode_uper; +per_type_encoder_f MsgCRC_encode_uper; +per_type_decoder_f MsgCRC_decode_aper; +per_type_encoder_f MsgCRC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MsgCRC_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/MultiVehicleResponse.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MultiVehicleResponse.h new file mode 100644 index 000000000..b31c44e58 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/MultiVehicleResponse.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _MultiVehicleResponse_H_ +#define _MultiVehicleResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MultiVehicleResponse { + MultiVehicleResponse_unavailable = 0, + MultiVehicleResponse_singleVehicle = 1, + MultiVehicleResponse_multiVehicle = 2, + MultiVehicleResponse_reserved = 3 +} e_MultiVehicleResponse; + +/* MultiVehicleResponse */ +typedef long MultiVehicleResponse_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MultiVehicleResponse_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MultiVehicleResponse; +extern const asn_INTEGER_specifics_t asn_SPC_MultiVehicleResponse_specs_1; +asn_struct_free_f MultiVehicleResponse_free; +asn_struct_print_f MultiVehicleResponse_print; +asn_constr_check_f MultiVehicleResponse_constraint; +ber_type_decoder_f MultiVehicleResponse_decode_ber; +der_type_encoder_f MultiVehicleResponse_encode_der; +xer_type_decoder_f MultiVehicleResponse_decode_xer; +xer_type_encoder_f MultiVehicleResponse_encode_xer; +oer_type_decoder_f MultiVehicleResponse_decode_oer; +oer_type_encoder_f MultiVehicleResponse_encode_oer; +per_type_decoder_f MultiVehicleResponse_decode_uper; +per_type_encoder_f MultiVehicleResponse_encode_uper; +per_type_decoder_f MultiVehicleResponse_decode_aper; +per_type_encoder_f MultiVehicleResponse_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MultiVehicleResponse_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEA-MsgType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEA-MsgType.h new file mode 100644 index 000000000..3b28ad456 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEA-MsgType.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NMEAcorrections" + * found in "J2735-NMEAcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NMEA_MsgType_H_ +#define _NMEA_MsgType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NMEA-MsgType */ +typedef long NMEA_MsgType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NMEA_MsgType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NMEA_MsgType; +asn_struct_free_f NMEA_MsgType_free; +asn_struct_print_f NMEA_MsgType_print; +asn_constr_check_f NMEA_MsgType_constraint; +ber_type_decoder_f NMEA_MsgType_decode_ber; +der_type_encoder_f NMEA_MsgType_encode_der; +xer_type_decoder_f NMEA_MsgType_decode_xer; +xer_type_encoder_f NMEA_MsgType_encode_xer; +oer_type_decoder_f NMEA_MsgType_decode_oer; +oer_type_encoder_f NMEA_MsgType_encode_oer; +per_type_decoder_f NMEA_MsgType_decode_uper; +per_type_encoder_f NMEA_MsgType_encode_uper; +per_type_decoder_f NMEA_MsgType_decode_aper; +per_type_encoder_f NMEA_MsgType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NMEA_MsgType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEA-Payload.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEA-Payload.h new file mode 100644 index 000000000..946b85182 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEA-Payload.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NMEAcorrections" + * found in "J2735-NMEAcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NMEA_Payload_H_ +#define _NMEA_Payload_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NMEA-Payload */ +typedef OCTET_STRING_t NMEA_Payload_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NMEA_Payload_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NMEA_Payload; +asn_struct_free_f NMEA_Payload_free; +asn_struct_print_f NMEA_Payload_print; +asn_constr_check_f NMEA_Payload_constraint; +ber_type_decoder_f NMEA_Payload_decode_ber; +der_type_encoder_f NMEA_Payload_encode_der; +xer_type_decoder_f NMEA_Payload_decode_xer; +xer_type_encoder_f NMEA_Payload_encode_xer; +oer_type_decoder_f NMEA_Payload_decode_oer; +oer_type_encoder_f NMEA_Payload_encode_oer; +per_type_decoder_f NMEA_Payload_decode_uper; +per_type_encoder_f NMEA_Payload_encode_uper; +per_type_decoder_f NMEA_Payload_decode_aper; +per_type_encoder_f NMEA_Payload_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NMEA_Payload_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEA-Revision.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEA-Revision.h new file mode 100644 index 000000000..42760c176 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEA-Revision.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NMEAcorrections" + * found in "J2735-NMEAcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NMEA_Revision_H_ +#define _NMEA_Revision_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NMEA_Revision { + NMEA_Revision_unknown = 0, + NMEA_Revision_reserved = 1, + NMEA_Revision_rev1 = 2, + NMEA_Revision_rev2 = 3, + NMEA_Revision_rev3 = 4, + NMEA_Revision_rev4 = 5, + NMEA_Revision_rev5 = 6 + /* + * Enumeration is extensible + */ +} e_NMEA_Revision; + +/* NMEA-Revision */ +typedef long NMEA_Revision_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NMEA_Revision_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NMEA_Revision; +extern const asn_INTEGER_specifics_t asn_SPC_NMEA_Revision_specs_1; +asn_struct_free_f NMEA_Revision_free; +asn_struct_print_f NMEA_Revision_print; +asn_constr_check_f NMEA_Revision_constraint; +ber_type_decoder_f NMEA_Revision_decode_ber; +der_type_encoder_f NMEA_Revision_encode_der; +xer_type_decoder_f NMEA_Revision_decode_xer; +xer_type_encoder_f NMEA_Revision_encode_xer; +oer_type_decoder_f NMEA_Revision_decode_oer; +oer_type_encoder_f NMEA_Revision_encode_oer; +per_type_decoder_f NMEA_Revision_decode_uper; +per_type_encoder_f NMEA_Revision_encode_uper; +per_type_decoder_f NMEA_Revision_decode_aper; +per_type_encoder_f NMEA_Revision_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NMEA_Revision_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEAcorrections.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEAcorrections.h new file mode 100644 index 000000000..90f4446a9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NMEAcorrections.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NMEAcorrections" + * found in "J2735-NMEAcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NMEAcorrections_H_ +#define _NMEAcorrections_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MinuteOfTheYear.h" +#include "NMEA-Revision.h" +#include "NMEA-MsgType.h" +#include "ObjectCount.h" +#include "NMEA-Payload.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_NMEAcorrections; + +/* NMEAcorrections */ +typedef struct NMEAcorrections { + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + NMEA_Revision_t *rev; /* OPTIONAL */ + NMEA_MsgType_t *msg; /* OPTIONAL */ + ObjectCount_t *wdCount; /* OPTIONAL */ + NMEA_Payload_t payload; + struct NMEAcorrections__regional { + A_SEQUENCE_OF(struct Reg_NMEAcorrections) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NMEAcorrections_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NMEAcorrections; +extern asn_SEQUENCE_specifics_t asn_SPC_NMEAcorrections_specs_1; +extern asn_TYPE_member_t asn_MBR_NMEAcorrections_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _NMEAcorrections_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NULL.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NULL.h new file mode 100644 index 000000000..802d12c00 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NULL.h @@ -0,0 +1,45 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_NULL_H +#define ASN_TYPE_NULL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The value of the NULL type is meaningless: see BOOLEAN if you want to + * carry true/false semantics. + */ +typedef int NULL_t; + +extern asn_TYPE_descriptor_t asn_DEF_NULL; +extern asn_TYPE_operation_t asn_OP_NULL; + +asn_struct_print_f NULL_print; +asn_struct_compare_f NULL_compare; +der_type_encoder_f NULL_encode_der; +xer_type_decoder_f NULL_decode_xer; +xer_type_encoder_f NULL_encode_xer; +oer_type_decoder_f NULL_decode_oer; +oer_type_encoder_f NULL_encode_oer; +per_type_decoder_f NULL_decode_uper; +per_type_encoder_f NULL_encode_uper; +per_type_decoder_f NULL_decode_aper; +per_type_encoder_f NULL_encode_aper; +asn_random_fill_f NULL_random_fill; + +#define NULL_free BOOLEAN_free +#define NULL_decode_ber BOOLEAN_decode_ber +#define NULL_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* NULL_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NativeEnumerated.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NativeEnumerated.h new file mode 100644 index 000000000..0c711e3fe --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NativeEnumerated.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard ENUMERATED in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeEnumerated_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeEnumerated_H_ +#define _NativeEnumerated_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated; +extern asn_TYPE_operation_t asn_OP_NativeEnumerated; + +#define NativeEnumerated_free NativeInteger_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define NativeEnumerated_print NativeInteger_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define NativeEnumerated_compare NativeInteger_compare + +#define NativeEnumerated_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define NativeEnumerated_decode_ber NativeInteger_decode_ber +#define NativeEnumerated_encode_der NativeInteger_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define NativeEnumerated_decode_xer NativeInteger_decode_xer +xer_type_encoder_f NativeEnumerated_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f NativeEnumerated_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f NativeEnumerated_decode_oer; +oer_type_encoder_f NativeEnumerated_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f NativeEnumerated_decode_uper; +per_type_encoder_f NativeEnumerated_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f NativeEnumerated_decode_aper; +per_type_encoder_f NativeEnumerated_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +#define NativeEnumerated_random_fill NativeInteger_random_fill +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +int NativeEnumerated__compar_value2enum( + const void *ap, + const void *bp); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeEnumerated_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NativeInteger.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NativeInteger.h new file mode 100644 index 000000000..3a47c11a0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NativeInteger.h @@ -0,0 +1,71 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard INTEGER in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeInteger_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeInteger_H_ +#define _NativeInteger_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeInteger; +extern asn_TYPE_operation_t asn_OP_NativeInteger; + +asn_struct_free_f NativeInteger_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f NativeInteger_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f NativeInteger_compare; + +#define NativeInteger_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f NativeInteger_decode_ber; +der_type_encoder_f NativeInteger_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f NativeInteger_decode_xer; +xer_type_encoder_f NativeInteger_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f NativeInteger_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f NativeInteger_decode_oer; +oer_type_encoder_f NativeInteger_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f NativeInteger_decode_uper; +per_type_encoder_f NativeInteger_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f NativeInteger_decode_aper; +per_type_encoder_f NativeInteger_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f NativeInteger_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeInteger_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NativeReal.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NativeReal.h new file mode 100644 index 000000000..cfdd1bd1c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NativeReal.h @@ -0,0 +1,39 @@ +/*- + * Copyright (c) 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard REAL in that it is modelled using + * the fixed machine type (double), so it can hold only values of + * limited precision. There is no explicit type (i.e., NativeReal_t). + * Use of this type is normally enabled by -fnative-types. + */ +#ifndef ASN_TYPE_NativeReal_H +#define ASN_TYPE_NativeReal_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeReal; +extern asn_TYPE_operation_t asn_OP_NativeReal; + +asn_struct_free_f NativeReal_free; +asn_struct_print_f NativeReal_print; +asn_struct_compare_f NativeReal_compare; +ber_type_decoder_f NativeReal_decode_ber; +der_type_encoder_f NativeReal_encode_der; +xer_type_decoder_f NativeReal_decode_xer; +xer_type_encoder_f NativeReal_encode_xer; +per_type_decoder_f NativeReal_decode_uper; +per_type_encoder_f NativeReal_encode_uper; + +#define NativeReal_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_TYPE_NativeReal_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-24B.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-24B.h new file mode 100644 index 000000000..2dad39ac8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-24B.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_LL_24B_H_ +#define _Node_LL_24B_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OffsetLL-B12.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-LL-24B */ +typedef struct Node_LL_24B { + OffsetLL_B12_t lon; + OffsetLL_B12_t lat; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_LL_24B_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_LL_24B; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_LL_24B_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_LL_24B_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_LL_24B_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-28B.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-28B.h new file mode 100644 index 000000000..f23a5bb84 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-28B.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_LL_28B_H_ +#define _Node_LL_28B_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OffsetLL-B14.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-LL-28B */ +typedef struct Node_LL_28B { + OffsetLL_B14_t lon; + OffsetLL_B14_t lat; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_LL_28B_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_LL_28B; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_LL_28B_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_LL_28B_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_LL_28B_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-32B.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-32B.h new file mode 100644 index 000000000..5f443b473 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-32B.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_LL_32B_H_ +#define _Node_LL_32B_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OffsetLL-B16.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-LL-32B */ +typedef struct Node_LL_32B { + OffsetLL_B16_t lon; + OffsetLL_B16_t lat; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_LL_32B_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_LL_32B; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_LL_32B_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_LL_32B_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_LL_32B_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-36B.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-36B.h new file mode 100644 index 000000000..b6e5b4abe --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-36B.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_LL_36B_H_ +#define _Node_LL_36B_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OffsetLL-B18.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-LL-36B */ +typedef struct Node_LL_36B { + OffsetLL_B18_t lon; + OffsetLL_B18_t lat; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_LL_36B_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_LL_36B; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_LL_36B_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_LL_36B_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_LL_36B_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-44B.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-44B.h new file mode 100644 index 000000000..1fad1f5e6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-44B.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_LL_44B_H_ +#define _Node_LL_44B_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OffsetLL-B22.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-LL-44B */ +typedef struct Node_LL_44B { + OffsetLL_B22_t lon; + OffsetLL_B22_t lat; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_LL_44B_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_LL_44B; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_LL_44B_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_LL_44B_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_LL_44B_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-48B.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-48B.h new file mode 100644 index 000000000..96711285e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LL-48B.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_LL_48B_H_ +#define _Node_LL_48B_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OffsetLL-B24.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-LL-48B */ +typedef struct Node_LL_48B { + OffsetLL_B24_t lon; + OffsetLL_B24_t lat; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_LL_48B_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_LL_48B; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_LL_48B_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_LL_48B_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_LL_48B_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LLdms-48b.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LLdms-48b.h new file mode 100644 index 000000000..71c4dccbb --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LLdms-48b.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_LLdms_48b_H_ +#define _Node_LLdms_48b_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LongitudeDMS.h" +#include "LatitudeDMS.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-LLdms-48b */ +typedef struct Node_LLdms_48b { + LongitudeDMS_t lon; + LatitudeDMS_t lat; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_LLdms_48b_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_LLdms_48b; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_LLdms_48b_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_LLdms_48b_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_LLdms_48b_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LLdms-80b.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LLdms-80b.h new file mode 100644 index 000000000..bd912250f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LLdms-80b.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_LLdms_80b_H_ +#define _Node_LLdms_80b_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LongitudeDMS2.h" +#include "LatitudeDMS2.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-LLdms-80b */ +typedef struct Node_LLdms_80b { + LongitudeDMS2_t lon; + LatitudeDMS2_t lat; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_LLdms_80b_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_LLdms_80b; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_LLdms_80b_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_LLdms_80b_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_LLdms_80b_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LLmD-64b.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LLmD-64b.h new file mode 100644 index 000000000..e2a74e001 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-LLmD-64b.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_LLmD_64b_H_ +#define _Node_LLmD_64b_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Longitude.h" +#include "Latitude.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-LLmD-64b */ +typedef struct Node_LLmD_64b { + Longitude_t lon; + Latitude_t lat; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_LLmD_64b_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_LLmD_64b; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_LLmD_64b_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_LLmD_64b_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_LLmD_64b_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-20b.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-20b.h new file mode 100644 index 000000000..85d6e513d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-20b.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_XY_20b_H_ +#define _Node_XY_20b_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Offset-B10.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-XY-20b */ +typedef struct Node_XY_20b { + Offset_B10_t x; + Offset_B10_t y; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_XY_20b_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_XY_20b; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_XY_20b_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_XY_20b_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_XY_20b_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-22b.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-22b.h new file mode 100644 index 000000000..ba830da94 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-22b.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_XY_22b_H_ +#define _Node_XY_22b_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Offset-B11.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-XY-22b */ +typedef struct Node_XY_22b { + Offset_B11_t x; + Offset_B11_t y; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_XY_22b_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_XY_22b; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_XY_22b_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_XY_22b_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_XY_22b_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-24b.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-24b.h new file mode 100644 index 000000000..cda708ed7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-24b.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_XY_24b_H_ +#define _Node_XY_24b_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Offset-B12.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-XY-24b */ +typedef struct Node_XY_24b { + Offset_B12_t x; + Offset_B12_t y; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_XY_24b_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_XY_24b; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_XY_24b_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_XY_24b_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_XY_24b_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-26b.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-26b.h new file mode 100644 index 000000000..5ba69d1c0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-26b.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_XY_26b_H_ +#define _Node_XY_26b_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Offset-B13.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-XY-26b */ +typedef struct Node_XY_26b { + Offset_B13_t x; + Offset_B13_t y; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_XY_26b_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_XY_26b; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_XY_26b_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_XY_26b_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_XY_26b_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-28b.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-28b.h new file mode 100644 index 000000000..a2ae20f98 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-28b.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_XY_28b_H_ +#define _Node_XY_28b_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Offset-B14.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-XY-28b */ +typedef struct Node_XY_28b { + Offset_B14_t x; + Offset_B14_t y; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_XY_28b_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_XY_28b; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_XY_28b_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_XY_28b_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_XY_28b_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-32b.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-32b.h new file mode 100644 index 000000000..4b4548ad9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Node-XY-32b.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Node_XY_32b_H_ +#define _Node_XY_32b_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Offset-B16.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Node-XY-32b */ +typedef struct Node_XY_32b { + Offset_B16_t x; + Offset_B16_t y; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Node_XY_32b_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Node_XY_32b; +extern asn_SEQUENCE_specifics_t asn_SPC_Node_XY_32b_specs_1; +extern asn_TYPE_member_t asn_MBR_Node_XY_32b_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Node_XY_32b_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeLL.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeLL.h new file mode 100644 index 000000000..78047e26c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeLL.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeAttributeLL_H_ +#define _NodeAttributeLL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NodeAttributeLL { + NodeAttributeLL_reserved = 0, + NodeAttributeLL_stopLine = 1, + NodeAttributeLL_roundedCapStyleA = 2, + NodeAttributeLL_roundedCapStyleB = 3, + NodeAttributeLL_mergePoint = 4, + NodeAttributeLL_divergePoint = 5, + NodeAttributeLL_downstreamStopLine = 6, + NodeAttributeLL_downstreamStartNode = 7, + NodeAttributeLL_closedToTraffic = 8, + NodeAttributeLL_safeIsland = 9, + NodeAttributeLL_curbPresentAtStepOff = 10, + NodeAttributeLL_hydrantPresent = 11 + /* + * Enumeration is extensible + */ +} e_NodeAttributeLL; + +/* NodeAttributeLL */ +typedef long NodeAttributeLL_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NodeAttributeLL_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NodeAttributeLL; +extern const asn_INTEGER_specifics_t asn_SPC_NodeAttributeLL_specs_1; +asn_struct_free_f NodeAttributeLL_free; +asn_struct_print_f NodeAttributeLL_print; +asn_constr_check_f NodeAttributeLL_constraint; +ber_type_decoder_f NodeAttributeLL_decode_ber; +der_type_encoder_f NodeAttributeLL_encode_der; +xer_type_decoder_f NodeAttributeLL_decode_xer; +xer_type_encoder_f NodeAttributeLL_encode_xer; +oer_type_decoder_f NodeAttributeLL_decode_oer; +oer_type_encoder_f NodeAttributeLL_encode_oer; +per_type_decoder_f NodeAttributeLL_decode_uper; +per_type_encoder_f NodeAttributeLL_encode_uper; +per_type_decoder_f NodeAttributeLL_decode_aper; +per_type_encoder_f NodeAttributeLL_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NodeAttributeLL_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeLLList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeLLList.h new file mode 100644 index 000000000..853fe4362 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeLLList.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeAttributeLLList_H_ +#define _NodeAttributeLLList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NodeAttributeLL.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NodeAttributeLLList */ +typedef struct NodeAttributeLLList { + A_SEQUENCE_OF(NodeAttributeLL_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeAttributeLLList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeAttributeLLList; +extern asn_SET_OF_specifics_t asn_SPC_NodeAttributeLLList_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeAttributeLLList_1[1]; +extern asn_per_constraints_t asn_PER_type_NodeAttributeLLList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _NodeAttributeLLList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeSetLL.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeSetLL.h new file mode 100644 index 000000000..9a34a63ac --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeSetLL.h @@ -0,0 +1,69 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeAttributeSetLL_H_ +#define _NodeAttributeSetLL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Offset-B10.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NodeAttributeLLList; +struct SegmentAttributeLLList; +struct LaneDataAttributeList; +struct Reg_NodeAttributeSetLL; + +/* NodeAttributeSetLL */ +typedef struct NodeAttributeSetLL { + struct NodeAttributeLLList *localNode; /* OPTIONAL */ + struct SegmentAttributeLLList *disabled; /* OPTIONAL */ + struct SegmentAttributeLLList *enabled; /* OPTIONAL */ + struct LaneDataAttributeList *data; /* OPTIONAL */ + Offset_B10_t *dWidth; /* OPTIONAL */ + Offset_B10_t *dElevation; /* OPTIONAL */ + struct NodeAttributeSetLL__regional { + A_SEQUENCE_OF(struct Reg_NodeAttributeSetLL) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeAttributeSetLL_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeAttributeSetLL; +extern asn_SEQUENCE_specifics_t asn_SPC_NodeAttributeSetLL_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeAttributeSetLL_1[7]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "NodeAttributeLLList.h" +#include "SegmentAttributeLLList.h" +#include "LaneDataAttributeList.h" +#include "RegionalExtension.h" + +#endif /* _NodeAttributeSetLL_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeSetXY.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeSetXY.h new file mode 100644 index 000000000..6bf8c0a9b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeSetXY.h @@ -0,0 +1,69 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeAttributeSetXY_H_ +#define _NodeAttributeSetXY_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Offset-B10.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NodeAttributeXYList; +struct SegmentAttributeXYList; +struct LaneDataAttributeList; +struct Reg_NodeAttributeSetXY; + +/* NodeAttributeSetXY */ +typedef struct NodeAttributeSetXY { + struct NodeAttributeXYList *localNode; /* OPTIONAL */ + struct SegmentAttributeXYList *disabled; /* OPTIONAL */ + struct SegmentAttributeXYList *enabled; /* OPTIONAL */ + struct LaneDataAttributeList *data; /* OPTIONAL */ + Offset_B10_t *dWidth; /* OPTIONAL */ + Offset_B10_t *dElevation; /* OPTIONAL */ + struct NodeAttributeSetXY__regional { + A_SEQUENCE_OF(struct Reg_NodeAttributeSetXY) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeAttributeSetXY_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeAttributeSetXY; +extern asn_SEQUENCE_specifics_t asn_SPC_NodeAttributeSetXY_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeAttributeSetXY_1[7]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "NodeAttributeXYList.h" +#include "SegmentAttributeXYList.h" +#include "LaneDataAttributeList.h" +#include "RegionalExtension.h" + +#endif /* _NodeAttributeSetXY_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeXY.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeXY.h new file mode 100644 index 000000000..8700f6028 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeXY.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeAttributeXY_H_ +#define _NodeAttributeXY_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NodeAttributeXY { + NodeAttributeXY_reserved = 0, + NodeAttributeXY_stopLine = 1, + NodeAttributeXY_roundedCapStyleA = 2, + NodeAttributeXY_roundedCapStyleB = 3, + NodeAttributeXY_mergePoint = 4, + NodeAttributeXY_divergePoint = 5, + NodeAttributeXY_downstreamStopLine = 6, + NodeAttributeXY_downstreamStartNode = 7, + NodeAttributeXY_closedToTraffic = 8, + NodeAttributeXY_safeIsland = 9, + NodeAttributeXY_curbPresentAtStepOff = 10, + NodeAttributeXY_hydrantPresent = 11 + /* + * Enumeration is extensible + */ +} e_NodeAttributeXY; + +/* NodeAttributeXY */ +typedef long NodeAttributeXY_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NodeAttributeXY_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NodeAttributeXY; +extern const asn_INTEGER_specifics_t asn_SPC_NodeAttributeXY_specs_1; +asn_struct_free_f NodeAttributeXY_free; +asn_struct_print_f NodeAttributeXY_print; +asn_constr_check_f NodeAttributeXY_constraint; +ber_type_decoder_f NodeAttributeXY_decode_ber; +der_type_encoder_f NodeAttributeXY_encode_der; +xer_type_decoder_f NodeAttributeXY_decode_xer; +xer_type_encoder_f NodeAttributeXY_encode_xer; +oer_type_decoder_f NodeAttributeXY_decode_oer; +oer_type_encoder_f NodeAttributeXY_encode_oer; +per_type_decoder_f NodeAttributeXY_decode_uper; +per_type_encoder_f NodeAttributeXY_encode_uper; +per_type_decoder_f NodeAttributeXY_decode_aper; +per_type_encoder_f NodeAttributeXY_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NodeAttributeXY_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeXYList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeXYList.h new file mode 100644 index 000000000..3f20b00a7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeAttributeXYList.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeAttributeXYList_H_ +#define _NodeAttributeXYList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NodeAttributeXY.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NodeAttributeXYList */ +typedef struct NodeAttributeXYList { + A_SEQUENCE_OF(NodeAttributeXY_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeAttributeXYList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeAttributeXYList; +extern asn_SET_OF_specifics_t asn_SPC_NodeAttributeXYList_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeAttributeXYList_1[1]; +extern asn_per_constraints_t asn_PER_type_NodeAttributeXYList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _NodeAttributeXYList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeLL.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeLL.h new file mode 100644 index 000000000..7b935c04c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeLL.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeLL_H_ +#define _NodeLL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NodeOffsetPointLL.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NodeAttributeSetLL; + +/* NodeLL */ +typedef struct NodeLL { + NodeOffsetPointLL_t delta; + struct NodeAttributeSetLL *attributes; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeLL_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeLL; +extern asn_SEQUENCE_specifics_t asn_SPC_NodeLL_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeLL_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "NodeAttributeSetLL.h" + +#endif /* _NodeLL_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeListLL.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeListLL.h new file mode 100644 index 000000000..72fd0510a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeListLL.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeListLL_H_ +#define _NodeListLL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NodeSetLL.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NodeListLL_PR { + NodeListLL_PR_NOTHING, /* No components present */ + NodeListLL_PR_nodes + /* Extensions may appear below */ + +} NodeListLL_PR; + +/* NodeListLL */ +typedef struct NodeListLL { + NodeListLL_PR present; + union NodeListLL_u { + NodeSetLL_t nodes; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeListLL_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeListLL; +extern asn_CHOICE_specifics_t asn_SPC_NodeListLL_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeListLL_1[1]; +extern asn_per_constraints_t asn_PER_type_NodeListLL_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _NodeListLL_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeListXY.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeListXY.h new file mode 100644 index 000000000..862ebe8d3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeListXY.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeListXY_H_ +#define _NodeListXY_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NodeSetXY.h" +#include "ComputedLane.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NodeListXY_PR { + NodeListXY_PR_NOTHING, /* No components present */ + NodeListXY_PR_nodes, + NodeListXY_PR_computed + /* Extensions may appear below */ + +} NodeListXY_PR; + +/* NodeListXY */ +typedef struct NodeListXY { + NodeListXY_PR present; + union NodeListXY_u { + NodeSetXY_t nodes; + ComputedLane_t computed; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeListXY_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeListXY; +extern asn_CHOICE_specifics_t asn_SPC_NodeListXY_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeListXY_1[2]; +extern asn_per_constraints_t asn_PER_type_NodeListXY_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _NodeListXY_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeOffsetPointLL.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeOffsetPointLL.h new file mode 100644 index 000000000..925232db3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeOffsetPointLL.h @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeOffsetPointLL_H_ +#define _NodeOffsetPointLL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Node-LL-24B.h" +#include "Node-LL-28B.h" +#include "Node-LL-32B.h" +#include "Node-LL-36B.h" +#include "Node-LL-44B.h" +#include "Node-LL-48B.h" +#include "Node-LLmD-64b.h" +#include "RegionalExtension.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NodeOffsetPointLL_PR { + NodeOffsetPointLL_PR_NOTHING, /* No components present */ + NodeOffsetPointLL_PR_node_LL1, + NodeOffsetPointLL_PR_node_LL2, + NodeOffsetPointLL_PR_node_LL3, + NodeOffsetPointLL_PR_node_LL4, + NodeOffsetPointLL_PR_node_LL5, + NodeOffsetPointLL_PR_node_LL6, + NodeOffsetPointLL_PR_node_LatLon, + NodeOffsetPointLL_PR_regional +} NodeOffsetPointLL_PR; + +/* NodeOffsetPointLL */ +typedef struct NodeOffsetPointLL { + NodeOffsetPointLL_PR present; + union NodeOffsetPointLL_u { + Node_LL_24B_t node_LL1; + Node_LL_28B_t node_LL2; + Node_LL_32B_t node_LL3; + Node_LL_36B_t node_LL4; + Node_LL_44B_t node_LL5; + Node_LL_48B_t node_LL6; + Node_LLmD_64b_t node_LatLon; + Reg_NodeOffsetPointLL_t regional; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeOffsetPointLL_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeOffsetPointLL; +extern asn_CHOICE_specifics_t asn_SPC_NodeOffsetPointLL_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeOffsetPointLL_1[8]; +extern asn_per_constraints_t asn_PER_type_NodeOffsetPointLL_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _NodeOffsetPointLL_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeOffsetPointXY-addGrpB.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeOffsetPointXY-addGrpB.h new file mode 100644 index 000000000..a8b9b8978 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeOffsetPointXY-addGrpB.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeOffsetPointXY_addGrpB_H_ +#define _NodeOffsetPointXY_addGrpB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Node-LLdms-48b.h" +#include "Node-LLdms-80b.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NodeOffsetPointXY_addGrpB_PR { + NodeOffsetPointXY_addGrpB_PR_NOTHING, /* No components present */ + NodeOffsetPointXY_addGrpB_PR_posA, + NodeOffsetPointXY_addGrpB_PR_posB + /* Extensions may appear below */ + +} NodeOffsetPointXY_addGrpB_PR; + +/* NodeOffsetPointXY-addGrpB */ +typedef struct NodeOffsetPointXY_addGrpB { + NodeOffsetPointXY_addGrpB_PR present; + union NodeOffsetPointXY_addGrpB_u { + Node_LLdms_48b_t posA; + Node_LLdms_80b_t posB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeOffsetPointXY_addGrpB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeOffsetPointXY_addGrpB; +extern asn_CHOICE_specifics_t asn_SPC_NodeOffsetPointXY_addGrpB_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeOffsetPointXY_addGrpB_1[2]; +extern asn_per_constraints_t asn_PER_type_NodeOffsetPointXY_addGrpB_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _NodeOffsetPointXY_addGrpB_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeOffsetPointXY.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeOffsetPointXY.h new file mode 100644 index 000000000..9bef93794 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeOffsetPointXY.h @@ -0,0 +1,85 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeOffsetPointXY_H_ +#define _NodeOffsetPointXY_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Node-XY-20b.h" +#include "Node-XY-22b.h" +#include "Node-XY-24b.h" +#include "Node-XY-26b.h" +#include "Node-XY-28b.h" +#include "Node-XY-32b.h" +#include "Node-LLmD-64b.h" +#include "constr_CHOICE.h" +#include "asn_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_NodeOffsetPointXY; + +/* Dependencies */ +typedef enum NodeOffsetPointXY_PR { + NodeOffsetPointXY_PR_NOTHING, /* No components present */ + NodeOffsetPointXY_PR_node_XY1, + NodeOffsetPointXY_PR_node_XY2, + NodeOffsetPointXY_PR_node_XY3, + NodeOffsetPointXY_PR_node_XY4, + NodeOffsetPointXY_PR_node_XY5, + NodeOffsetPointXY_PR_node_XY6, + NodeOffsetPointXY_PR_node_LatLon, + NodeOffsetPointXY_PR_regional +} NodeOffsetPointXY_PR; + +/* NodeOffsetPointXY */ +typedef struct NodeOffsetPointXY { + NodeOffsetPointXY_PR present; + union NodeOffsetPointXY_u { + Node_XY_20b_t node_XY1; + Node_XY_22b_t node_XY2; + Node_XY_24b_t node_XY3; + Node_XY_26b_t node_XY4; + Node_XY_28b_t node_XY5; + Node_XY_32b_t node_XY6; + Node_LLmD_64b_t node_LatLon; + // Reg_NodeOffsetPointXY_t regional; + + struct NodeOffsetPointXY__regional { + A_SEQUENCE_OF(struct Reg_NodeOffsetPointXY) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeOffsetPointXY_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeOffsetPointXY; +extern asn_CHOICE_specifics_t asn_SPC_NodeOffsetPointXY_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeOffsetPointXY_1[8]; +extern asn_per_constraints_t asn_PER_type_NodeOffsetPointXY_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _NodeOffsetPointXY_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeSetLL.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeSetLL.h new file mode 100644 index 000000000..8c2f7153b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeSetLL.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeSetLL_H_ +#define _NodeSetLL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NodeLL; + +/* NodeSetLL */ +typedef struct NodeSetLL { + A_SEQUENCE_OF(struct NodeLL) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeSetLL_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeSetLL; +extern asn_SET_OF_specifics_t asn_SPC_NodeSetLL_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeSetLL_1[1]; +extern asn_per_constraints_t asn_PER_type_NodeSetLL_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "NodeLL.h" + +#endif /* _NodeSetLL_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeSetXY.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeSetXY.h new file mode 100644 index 000000000..d20f27978 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeSetXY.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeSetXY_H_ +#define _NodeSetXY_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NodeXY; + +/* NodeSetXY */ +typedef struct NodeSetXY { + A_SEQUENCE_OF(struct NodeXY) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeSetXY_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeSetXY; +extern asn_SET_OF_specifics_t asn_SPC_NodeSetXY_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeSetXY_1[1]; +extern asn_per_constraints_t asn_PER_type_NodeSetXY_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "NodeXY.h" + +#endif /* _NodeSetXY_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeXY.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeXY.h new file mode 100644 index 000000000..8b861a7f8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NodeXY.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NodeXY_H_ +#define _NodeXY_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NodeOffsetPointXY.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NodeAttributeSetXY; + +/* NodeXY */ +typedef struct NodeXY { + NodeOffsetPointXY_t delta; + struct NodeAttributeSetXY *attributes; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NodeXY_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NodeXY; +extern asn_SEQUENCE_specifics_t asn_SPC_NodeXY_specs_1; +extern asn_TYPE_member_t asn_MBR_NodeXY_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "NodeAttributeSetXY.h" + +#endif /* _NodeXY_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NumberOfParticipantsInCluster.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NumberOfParticipantsInCluster.h new file mode 100644 index 000000000..1a8dc200a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NumberOfParticipantsInCluster.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _NumberOfParticipantsInCluster_H_ +#define _NumberOfParticipantsInCluster_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NumberOfParticipantsInCluster { + NumberOfParticipantsInCluster_unavailable = 0, + NumberOfParticipantsInCluster_small = 1, + NumberOfParticipantsInCluster_medium = 2, + NumberOfParticipantsInCluster_large = 3 + /* + * Enumeration is extensible + */ +} e_NumberOfParticipantsInCluster; + +/* NumberOfParticipantsInCluster */ +typedef long NumberOfParticipantsInCluster_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NumberOfParticipantsInCluster_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NumberOfParticipantsInCluster; +extern const asn_INTEGER_specifics_t asn_SPC_NumberOfParticipantsInCluster_specs_1; +asn_struct_free_f NumberOfParticipantsInCluster_free; +asn_struct_print_f NumberOfParticipantsInCluster_print; +asn_constr_check_f NumberOfParticipantsInCluster_constraint; +ber_type_decoder_f NumberOfParticipantsInCluster_decode_ber; +der_type_encoder_f NumberOfParticipantsInCluster_encode_der; +xer_type_decoder_f NumberOfParticipantsInCluster_decode_xer; +xer_type_encoder_f NumberOfParticipantsInCluster_encode_xer; +oer_type_decoder_f NumberOfParticipantsInCluster_decode_oer; +oer_type_encoder_f NumberOfParticipantsInCluster_encode_oer; +per_type_decoder_f NumberOfParticipantsInCluster_decode_uper; +per_type_encoder_f NumberOfParticipantsInCluster_encode_uper; +per_type_decoder_f NumberOfParticipantsInCluster_decode_aper; +per_type_encoder_f NumberOfParticipantsInCluster_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NumberOfParticipantsInCluster_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/NumericString.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NumericString.h new file mode 100644 index 000000000..8e4f7ec9d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/NumericString.h @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _NumericString_H_ +#define _NumericString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t NumericString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_NumericString; +extern asn_TYPE_operation_t asn_OP_NumericString; + +asn_constr_check_f NumericString_constraint; + +#define NumericString_free OCTET_STRING_free +#define NumericString_print OCTET_STRING_print_utf8 +#define NumericString_compare OCTET_STRING_compare +#define NumericString_decode_ber OCTET_STRING_decode_ber +#define NumericString_encode_der OCTET_STRING_encode_der +#define NumericString_decode_xer OCTET_STRING_decode_xer_utf8 +#define NumericString_encode_xer OCTET_STRING_encode_xer_utf8 +#define NumericString_decode_uper OCTET_STRING_decode_uper +#define NumericString_encode_uper OCTET_STRING_encode_uper + +#ifdef __cplusplus +} +#endif + +#endif /* _NumericString_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OBJECT_IDENTIFIER.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OBJECT_IDENTIFIER.h new file mode 100644 index 000000000..f878055c6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OBJECT_IDENTIFIER.h @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OBJECT_IDENTIFIER_H_ +#define _OBJECT_IDENTIFIER_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint32_t asn_oid_arc_t; +#define ASN_OID_ARC_MAX (~((asn_oid_arc_t)0)) + +typedef ASN__PRIMITIVE_TYPE_t OBJECT_IDENTIFIER_t; + +extern asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER; +extern asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER; + +ssize_t OBJECT_IDENTIFIER__dump_body(const OBJECT_IDENTIFIER_t *st, + asn_app_consume_bytes_f *cb, + void *app_key); + +#define OBJECT_IDENTIFIER_free ASN__PRIMITIVE_TYPE_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f OBJECT_IDENTIFIER_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define OBJECT_IDENTIFIER_compare OCTET_STRING_compare + +asn_constr_check_f OBJECT_IDENTIFIER_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_ber ber_decode_primitive +#define OBJECT_IDENTIFIER_encode_der der_encode_primitive +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f OBJECT_IDENTIFIER_decode_xer; +xer_type_encoder_f OBJECT_IDENTIFIER_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f OBJECT_IDENTIFIER_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_oer oer_decode_primitive +#define OBJECT_IDENTIFIER_encode_oer oer_encode_primitive +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_uper OCTET_STRING_decode_uper +#define OBJECT_IDENTIFIER_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_aper OCTET_STRING_decode_aper +#define OBJECT_IDENTIFIER_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f OBJECT_IDENTIFIER_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +/********************************** + * Some handy conversion routines * + **********************************/ + +/* + * This function fills an (arcs) array with OBJECT IDENTIFIER arcs + * up to specified (arc_slots) elements. + * + * EXAMPLE: + * void print_arcs(OBJECT_IDENTIFIER_t *oid) { + * asn_oid_arc_t fixed_arcs[10]; // Try with fixed space first + * asn_oid_arc_t *arcs = fixed_arcs; + * size_t arc_slots = sizeof(fixed_arcs)/sizeof(fixed_arcs[0]); // 10 + * ssize_t count; // Real number of arcs. + * int i; + * + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * // If necessary, reallocate arcs array and try again. + * if(count > arc_slots) { + * arc_slots = count; + * arcs = malloc(sizeof(asn_oid_arc_t) * arc_slots); + * if(!arcs) return; + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * assert(count == arc_slots); + * } + * + * // Print the contents of the arcs array. + * for(i = 0; i < count; i++) + * printf("%"PRIu32"\n", arcs[i]); + * + * // Avoid memory leak. + * if(arcs != fixed_arcs) free(arcs); + * } + * + * RETURN VALUES: + * -1/EINVAL: Invalid arguments (oid is missing) + * -1/ERANGE: One or more arcs have value out of array cell type range. + * >=0: Number of arcs contained in the OBJECT IDENTIFIER + * + * WARNING: The function always returns the actual number of arcs, + * even if there is no sufficient (arc_slots) provided. + */ +ssize_t OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *oid, + asn_oid_arc_t *arcs, size_t arc_slots); + +/* + * This functions initializes the OBJECT IDENTIFIER object with + * the given set of arcs. + * The minimum of two arcs must be present; some restrictions apply. + * RETURN VALUES: + * -1/EINVAL: Invalid arguments + * -1/ERANGE: The first two arcs do not conform to ASN.1 restrictions. + * -1/ENOMEM: Memory allocation failed + * 0: The object was initialized with new arcs. + */ +int OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid, + const asn_oid_arc_t *arcs, size_t arcs_count); + + +/* + * Parse the OBJECT IDENTIFIER textual representation ("1.3.6.1.4.1.9363"). + * No arc can exceed the (0..ASN_OID_ARC_MAX, which is the same as UINT32_MAX). + * This function is not specific to OBJECT IDENTIFIER, it may be used to parse + * the RELATIVE-OID data, or any other data consisting of dot-separated + * series of numeric values. + * + * If (oid_txt_length == -1), the strlen() will be invoked to determine the + * size of the (oid_text) string. + * + * After return, the optional (opt_oid_text_end) is set to the character after + * the last parsed one. (opt_oid_text_end) is never less than (oid_text). + * + * RETURN VALUES: + * -1: Parse error. + * >= 0: Number of arcs contained in the OBJECT IDENTIFIER. + * + * WARNING: The function always returns the real number of arcs, + * even if there is no sufficient (arc_slots) provided. + * This is useful for (arc_slots) value estimation. + */ +ssize_t OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, + ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end); + +/* + * Internal functions. + * Used by RELATIVE-OID implementation in particular. + */ + +/* + * Retrieve a single arc of size from the (arcbuf) buffer. + * RETURN VALUES: + * -1: Failed to retrieve the value from the (arcbuf). + * >0: Number of bytes consumed from the (arcbuf), <= (arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, + size_t arcbuf_len, + asn_oid_arc_t *ret_value); + +/* + * Write the unterminated arc value into the (arcbuf) which has the size at + * least (arcbuf_len). + * RETURN VALUES: + * -1: (arcbuf_len) size is not sufficient to write the value. + * : Number of bytes appended to the arcbuf (<= arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t arc_value); + +#ifdef __cplusplus +} +#endif + +#endif /* _OBJECT_IDENTIFIER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OCTET_STRING.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OCTET_STRING.h new file mode 100644 index 000000000..b1ace1409 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OCTET_STRING.h @@ -0,0 +1,165 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OCTET_STRING_H_ +#define _OCTET_STRING_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct OCTET_STRING { + uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ + size_t size; /* Size of the buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} OCTET_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; +extern asn_TYPE_operation_t asn_OP_OCTET_STRING; + +asn_struct_free_f OCTET_STRING_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f OCTET_STRING_print; +asn_struct_print_f OCTET_STRING_print_utf8; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f OCTET_STRING_compare; + +#define OCTET_STRING_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f OCTET_STRING_decode_ber; +der_type_encoder_f OCTET_STRING_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ +xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ +xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ +xer_type_encoder_f OCTET_STRING_encode_xer; +xer_type_encoder_f OCTET_STRING_encode_xer_utf8; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f OCTET_STRING_encode_jer; +jer_type_encoder_f OCTET_STRING_encode_jer_utf8; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f OCTET_STRING_decode_oer; +oer_type_encoder_f OCTET_STRING_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f OCTET_STRING_decode_uper; +per_type_encoder_f OCTET_STRING_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f OCTET_STRING_decode_aper; +per_type_encoder_f OCTET_STRING_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f OCTET_STRING_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +int OCTET_STRING_per_get_characters( + asn_per_data_t *po, + uint8_t *buf, + size_t units, + unsigned int bpc, + unsigned int unit_bits, + long lb, + long ub, + const asn_per_constraints_t *pc); + +int OCTET_STRING_per_put_characters( + asn_per_outp_t *po, + const uint8_t *buf, + size_t units, + unsigned int bpc, + unsigned int unit_bits, + long lb, + long ub, + const asn_per_constraints_t *pc); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +/****************************** + * Handy conversion routines. * + ******************************/ + +/* + * This function clears the previous value of the OCTET STRING (if any) + * and then allocates a new memory with the specified content (str/size). + * If size = -1, the size of the original string will be determined + * using strlen(str). + * If str equals to NULL, the function will silently clear the + * current contents of the OCTET STRING. + * Returns 0 if it was possible to perform operation, -1 otherwise. + */ +int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); + +/* Handy conversion from the C string into the OCTET STRING. */ +#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) + +/* + * Allocate and fill the new OCTET STRING and return a pointer to the newly + * allocated object. NULL is permitted in str: the function will just allocate + * empty OCTET STRING. + */ +OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, + const char *str, int size); + +/**************************** + * Internally useful stuff. * + ****************************/ + +typedef struct asn_OCTET_STRING_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the structure */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + enum asn_OS_Subvariant { + ASN_OSUBV_ANY, /* The open type (ANY) */ + ASN_OSUBV_BIT, /* BIT STRING */ + ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ + ASN_OSUBV_U16, /* 16-bit character (BMPString) */ + ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ + } subvariant; +} asn_OCTET_STRING_specifics_t; + +extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs; + +size_t OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *, + size_t max_length); + +#if !defined(ASN_DISABLE_BER_SUPPORT) +struct _stack_el { + ber_tlv_len_t left; /* What's left to read (or -1) */ + ber_tlv_len_t got; /* What was actually processed */ + unsigned cont_level; /* Depth of subcontainment */ + int want_nulls; /* Want null "end of content" octets? */ + int bits_chopped; /* Flag in BIT STRING mode */ + ber_tlv_tag_t tag; /* For debugging purposes */ + struct _stack_el *prev; + struct _stack_el *next; +}; +struct _stack { + struct _stack_el *tail; + struct _stack_el *cur_ptr; +}; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _OCTET_STRING_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OPEN_TYPE.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OPEN_TYPE.h new file mode 100644 index 000000000..5e979773e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OPEN_TYPE.h @@ -0,0 +1,117 @@ +/*- + * Copyright (c) 2017-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_OPEN_TYPE_H +#define ASN_OPEN_TYPE_H + +#include +///////////#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Decode an Open Type which is potentially constraiend + * by the other members of the parent structure. + */ + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#define OPEN_TYPE_free CHOICE_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define OPEN_TYPE_print CHOICE_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define OPEN_TYPE_compare CHOICE_compare + +#define OPEN_TYPE_constraint CHOICE_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +asn_dec_rval_t OPEN_TYPE_ber_get( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); +#define OPEN_TYPE_decode_ber NULL +#define OPEN_TYPE_encode_der CHOICE_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +asn_dec_rval_t OPEN_TYPE_xer_get( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); +#define OPEN_TYPE_decode_xer NULL +#define OPEN_TYPE_encode_xer CHOICE_encode_xer +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define OPEN_TYPE_encode_jer CHOICE_encode_jer +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +asn_dec_rval_t OPEN_TYPE_oer_get( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + asn_TYPE_member_t *element, const void *ptr, + size_t size); +#define OPEN_TYPE_decode_oer NULL +#define OPEN_TYPE_encode_oer CHOICE_encode_oer +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +asn_dec_rval_t OPEN_TYPE_uper_get( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); +#define OPEN_TYPE_decode_uper NULL +asn_enc_rval_t OPEN_TYPE_encode_uper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +asn_dec_rval_t OPEN_TYPE_aper_get( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); +#define OPEN_TYPE_decode_aper NULL +asn_enc_rval_t OPEN_TYPE_encode_aper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +int OPEN_TYPE_aper_is_unknown_type( + const asn_TYPE_descriptor_t *td, + void *sptr, + const asn_TYPE_member_t *elm); + +asn_dec_rval_t OPEN_TYPE_aper_unknown_type_discard_bytes( + asn_per_data_t *pd); +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_OPEN_TYPE; + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_OPEN_TYPE_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectCount.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectCount.h new file mode 100644 index 000000000..06b418f96 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectCount.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NMEAcorrections" + * found in "J2735-NMEAcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ObjectCount_H_ +#define _ObjectCount_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ObjectCount */ +typedef long ObjectCount_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ObjectCount_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ObjectCount; +asn_struct_free_f ObjectCount_free; +asn_struct_print_f ObjectCount_print; +asn_constr_check_f ObjectCount_constraint; +ber_type_decoder_f ObjectCount_decode_ber; +der_type_encoder_f ObjectCount_encode_der; +xer_type_decoder_f ObjectCount_decode_xer; +xer_type_encoder_f ObjectCount_encode_xer; +oer_type_decoder_f ObjectCount_decode_oer; +oer_type_encoder_f ObjectCount_encode_oer; +per_type_decoder_f ObjectCount_decode_uper; +per_type_encoder_f ObjectCount_encode_uper; +per_type_decoder_f ObjectCount_decode_aper; +per_type_encoder_f ObjectCount_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectCount_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectDescriptor.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectDescriptor.h new file mode 100644 index 000000000..852c45d03 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectDescriptor.h @@ -0,0 +1,54 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _ObjectDescriptor_H_ +#define _ObjectDescriptor_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef GraphicString_t ObjectDescriptor_t; /* Implemented via GraphicString */ + +extern asn_TYPE_descriptor_t asn_DEF_ObjectDescriptor; +extern asn_TYPE_operation_t asn_OP_ObjectDescriptor; + +#define ObjectDescriptor_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define ObjectDescriptor_print OCTET_STRING_print_utf8 +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define ObjectDescriptor_constraint asn_generic_unknown_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define ObjectDescriptor_decode_ber OCTET_STRING_decode_ber +#define ObjectDescriptor_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define ObjectDescriptor_decode_xer OCTET_STRING_decode_xer_utf8 +#define ObjectDescriptor_encode_xer OCTET_STRING_encode_xer_utf8 +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define ObjectDescriptor_encode_jer OCTET_STRING_encode_jer_utf8 +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define ObjectDescriptor_decode_uper OCTET_STRING_decode_uper +#define ObjectDescriptor_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define ObjectDescriptor_decode_aper OCTET_STRING_decode_aper +#define ObjectDescriptor_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectDescriptor_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectDistance.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectDistance.h new file mode 100644 index 000000000..db97608e2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectDistance.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _ObjectDistance_H_ +#define _ObjectDistance_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ObjectDistance */ +typedef long ObjectDistance_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ObjectDistance_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ObjectDistance; +asn_struct_free_f ObjectDistance_free; +asn_struct_print_f ObjectDistance_print; +asn_constr_check_f ObjectDistance_constraint; +ber_type_decoder_f ObjectDistance_decode_ber; +der_type_encoder_f ObjectDistance_encode_der; +xer_type_decoder_f ObjectDistance_decode_xer; +xer_type_encoder_f ObjectDistance_encode_xer; +oer_type_decoder_f ObjectDistance_decode_oer; +oer_type_encoder_f ObjectDistance_encode_oer; +per_type_decoder_f ObjectDistance_decode_uper; +per_type_encoder_f ObjectDistance_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectDistance_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectID.h new file mode 100644 index 000000000..3b0a53b78 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _ObjectID_H_ +#define _ObjectID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ObjectID */ +typedef long ObjectID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ObjectID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ObjectID; +asn_struct_free_f ObjectID_free; +asn_struct_print_f ObjectID_print; +asn_constr_check_f ObjectID_constraint; +ber_type_decoder_f ObjectID_decode_ber; +der_type_encoder_f ObjectID_encode_der; +xer_type_decoder_f ObjectID_decode_xer; +xer_type_encoder_f ObjectID_encode_xer; +oer_type_decoder_f ObjectID_decode_oer; +oer_type_encoder_f ObjectID_encode_oer; +per_type_decoder_f ObjectID_decode_uper; +per_type_encoder_f ObjectID_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectID_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectType.h new file mode 100644 index 000000000..52837430b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObjectType.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _ObjectType_H_ +#define _ObjectType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ObjectType { + ObjectType_unknown = 0, + ObjectType_vehicle = 1, + ObjectType_vru = 2, + ObjectType_animal = 3 + /* + * Enumeration is extensible + */ +} e_ObjectType; + +/* ObjectType */ +typedef long ObjectType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ObjectType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ObjectType; +extern const asn_INTEGER_specifics_t asn_SPC_ObjectType_specs_1; +asn_struct_free_f ObjectType_free; +asn_struct_print_f ObjectType_print; +asn_constr_check_f ObjectType_constraint; +ber_type_decoder_f ObjectType_decode_ber; +der_type_encoder_f ObjectType_encode_der; +xer_type_decoder_f ObjectType_decode_xer; +xer_type_encoder_f ObjectType_encode_xer; +oer_type_decoder_f ObjectType_decode_oer; +oer_type_encoder_f ObjectType_encode_oer; +per_type_decoder_f ObjectType_decode_uper; +per_type_encoder_f ObjectType_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectType_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleDetection.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleDetection.h new file mode 100644 index 000000000..325ba8eb1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleDetection.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ObstacleDetection_H_ +#define _ObstacleDetection_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ObstacleDistance.h" +#include "ObstacleDirection.h" +#include "ITIScodes.h" +#include "GenericLocations.h" +#include "DDateTime.h" +#include "VerticalAccelerationThreshold.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ObstacleDetection */ +typedef struct ObstacleDetection { + ObstacleDistance_t obDist; + ObstacleDirection_t obDirect; + ITIScodes_t *description; /* OPTIONAL */ + GenericLocations_t *locationDetails; /* OPTIONAL */ + DDateTime_t dateTime; + VerticalAccelerationThreshold_t *vertEvent; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ObstacleDetection_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ObstacleDetection; +extern asn_SEQUENCE_specifics_t asn_SPC_ObstacleDetection_specs_1; +extern asn_TYPE_member_t asn_MBR_ObstacleDetection_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObstacleDetection_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleDirection.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleDirection.h new file mode 100644 index 000000000..f7bf28af8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleDirection.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ObstacleDirection_H_ +#define _ObstacleDirection_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Common_Angle.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ObstacleDirection */ +typedef Common_Angle_t ObstacleDirection_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ObstacleDirection_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ObstacleDirection; +asn_struct_free_f ObstacleDirection_free; +asn_struct_print_f ObstacleDirection_print; +asn_constr_check_f ObstacleDirection_constraint; +ber_type_decoder_f ObstacleDirection_decode_ber; +der_type_encoder_f ObstacleDirection_encode_der; +xer_type_decoder_f ObstacleDirection_decode_xer; +xer_type_encoder_f ObstacleDirection_encode_xer; +oer_type_decoder_f ObstacleDirection_decode_oer; +oer_type_encoder_f ObstacleDirection_encode_oer; +per_type_decoder_f ObstacleDirection_decode_uper; +per_type_encoder_f ObstacleDirection_encode_uper; +per_type_decoder_f ObstacleDirection_decode_aper; +per_type_encoder_f ObstacleDirection_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObstacleDirection_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleDistance.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleDistance.h new file mode 100644 index 000000000..85fa24c62 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleDistance.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ObstacleDistance_H_ +#define _ObstacleDistance_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ObstacleDistance */ +typedef long ObstacleDistance_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ObstacleDistance_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ObstacleDistance; +asn_struct_free_f ObstacleDistance_free; +asn_struct_print_f ObstacleDistance_print; +asn_constr_check_f ObstacleDistance_constraint; +ber_type_decoder_f ObstacleDistance_decode_ber; +der_type_encoder_f ObstacleDistance_encode_der; +xer_type_decoder_f ObstacleDistance_decode_xer; +xer_type_encoder_f ObstacleDistance_encode_xer; +oer_type_decoder_f ObstacleDistance_decode_oer; +oer_type_encoder_f ObstacleDistance_encode_oer; +per_type_decoder_f ObstacleDistance_decode_uper; +per_type_encoder_f ObstacleDistance_encode_uper; +per_type_decoder_f ObstacleDistance_decode_aper; +per_type_encoder_f ObstacleDistance_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObstacleDistance_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleSize.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleSize.h new file mode 100644 index 000000000..12206d92c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleSize.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _ObstacleSize_H_ +#define _ObstacleSize_H_ + + +#include + +/* Including external dependencies */ +#include "SizeValue.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ObstacleSize */ +typedef struct ObstacleSize { + SizeValue_t width; + SizeValue_t length; + SizeValue_t *height /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ObstacleSize_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ObstacleSize; +extern asn_SEQUENCE_specifics_t asn_SPC_ObstacleSize_specs_1; +extern asn_TYPE_member_t asn_MBR_ObstacleSize_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObstacleSize_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleSizeConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleSizeConfidence.h new file mode 100644 index 000000000..1ef36fbc5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ObstacleSizeConfidence.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _ObstacleSizeConfidence_H_ +#define _ObstacleSizeConfidence_H_ + + +#include + +/* Including external dependencies */ +#include "SizeValueConfidence.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ObstacleSizeConfidence */ +typedef struct ObstacleSizeConfidence { + SizeValueConfidence_t widthConfidence; + SizeValueConfidence_t lengthConfidence; + SizeValueConfidence_t *heightConfidence /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ObstacleSizeConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ObstacleSizeConfidence; +extern asn_SEQUENCE_specifics_t asn_SPC_ObstacleSizeConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_ObstacleSizeConfidence_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObstacleSizeConfidence_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B09.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B09.h new file mode 100644 index 000000000..1fd4cfa19 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B09.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Offset_B09_H_ +#define _Offset_B09_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Offset-B09 */ +typedef long Offset_B09_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Offset_B09_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Offset_B09; +asn_struct_free_f Offset_B09_free; +asn_struct_print_f Offset_B09_print; +asn_constr_check_f Offset_B09_constraint; +ber_type_decoder_f Offset_B09_decode_ber; +der_type_encoder_f Offset_B09_encode_der; +xer_type_decoder_f Offset_B09_decode_xer; +xer_type_encoder_f Offset_B09_encode_xer; +oer_type_decoder_f Offset_B09_decode_oer; +oer_type_encoder_f Offset_B09_encode_oer; +per_type_decoder_f Offset_B09_decode_uper; +per_type_encoder_f Offset_B09_encode_uper; +per_type_decoder_f Offset_B09_decode_aper; +per_type_encoder_f Offset_B09_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Offset_B09_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B10.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B10.h new file mode 100644 index 000000000..8b828ce2a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B10.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Offset_B10_H_ +#define _Offset_B10_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Offset-B10 */ +typedef long Offset_B10_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Offset_B10_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Offset_B10; +asn_struct_free_f Offset_B10_free; +asn_struct_print_f Offset_B10_print; +asn_constr_check_f Offset_B10_constraint; +ber_type_decoder_f Offset_B10_decode_ber; +der_type_encoder_f Offset_B10_encode_der; +xer_type_decoder_f Offset_B10_decode_xer; +xer_type_encoder_f Offset_B10_encode_xer; +oer_type_decoder_f Offset_B10_decode_oer; +oer_type_encoder_f Offset_B10_encode_oer; +per_type_decoder_f Offset_B10_decode_uper; +per_type_encoder_f Offset_B10_encode_uper; +per_type_decoder_f Offset_B10_decode_aper; +per_type_encoder_f Offset_B10_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Offset_B10_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B11.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B11.h new file mode 100644 index 000000000..8e805dc13 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B11.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Offset_B11_H_ +#define _Offset_B11_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Offset-B11 */ +typedef long Offset_B11_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Offset_B11_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Offset_B11; +asn_struct_free_f Offset_B11_free; +asn_struct_print_f Offset_B11_print; +asn_constr_check_f Offset_B11_constraint; +ber_type_decoder_f Offset_B11_decode_ber; +der_type_encoder_f Offset_B11_encode_der; +xer_type_decoder_f Offset_B11_decode_xer; +xer_type_encoder_f Offset_B11_encode_xer; +oer_type_decoder_f Offset_B11_decode_oer; +oer_type_encoder_f Offset_B11_encode_oer; +per_type_decoder_f Offset_B11_decode_uper; +per_type_encoder_f Offset_B11_encode_uper; +per_type_decoder_f Offset_B11_decode_aper; +per_type_encoder_f Offset_B11_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Offset_B11_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B12.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B12.h new file mode 100644 index 000000000..fa58a1572 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B12.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Offset_B12_H_ +#define _Offset_B12_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Offset-B12 */ +typedef long Offset_B12_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Offset_B12_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Offset_B12; +asn_struct_free_f Offset_B12_free; +asn_struct_print_f Offset_B12_print; +asn_constr_check_f Offset_B12_constraint; +ber_type_decoder_f Offset_B12_decode_ber; +der_type_encoder_f Offset_B12_encode_der; +xer_type_decoder_f Offset_B12_decode_xer; +xer_type_encoder_f Offset_B12_encode_xer; +oer_type_decoder_f Offset_B12_decode_oer; +oer_type_encoder_f Offset_B12_encode_oer; +per_type_decoder_f Offset_B12_decode_uper; +per_type_encoder_f Offset_B12_encode_uper; +per_type_decoder_f Offset_B12_decode_aper; +per_type_encoder_f Offset_B12_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Offset_B12_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B13.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B13.h new file mode 100644 index 000000000..b2e214ef7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B13.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Offset_B13_H_ +#define _Offset_B13_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Offset-B13 */ +typedef long Offset_B13_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Offset_B13_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Offset_B13; +asn_struct_free_f Offset_B13_free; +asn_struct_print_f Offset_B13_print; +asn_constr_check_f Offset_B13_constraint; +ber_type_decoder_f Offset_B13_decode_ber; +der_type_encoder_f Offset_B13_encode_der; +xer_type_decoder_f Offset_B13_decode_xer; +xer_type_encoder_f Offset_B13_encode_xer; +oer_type_decoder_f Offset_B13_decode_oer; +oer_type_encoder_f Offset_B13_encode_oer; +per_type_decoder_f Offset_B13_decode_uper; +per_type_encoder_f Offset_B13_encode_uper; +per_type_decoder_f Offset_B13_decode_aper; +per_type_encoder_f Offset_B13_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Offset_B13_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B14.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B14.h new file mode 100644 index 000000000..9b000f191 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B14.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Offset_B14_H_ +#define _Offset_B14_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Offset-B14 */ +typedef long Offset_B14_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Offset_B14_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Offset_B14; +asn_struct_free_f Offset_B14_free; +asn_struct_print_f Offset_B14_print; +asn_constr_check_f Offset_B14_constraint; +ber_type_decoder_f Offset_B14_decode_ber; +der_type_encoder_f Offset_B14_encode_der; +xer_type_decoder_f Offset_B14_decode_xer; +xer_type_encoder_f Offset_B14_encode_xer; +oer_type_decoder_f Offset_B14_decode_oer; +oer_type_encoder_f Offset_B14_encode_oer; +per_type_decoder_f Offset_B14_decode_uper; +per_type_encoder_f Offset_B14_encode_uper; +per_type_decoder_f Offset_B14_decode_aper; +per_type_encoder_f Offset_B14_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Offset_B14_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B16.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B16.h new file mode 100644 index 000000000..f1344730e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Offset-B16.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Offset_B16_H_ +#define _Offset_B16_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Offset-B16 */ +typedef long Offset_B16_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Offset_B16_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Offset_B16; +asn_struct_free_f Offset_B16_free; +asn_struct_print_f Offset_B16_print; +asn_constr_check_f Offset_B16_constraint; +ber_type_decoder_f Offset_B16_decode_ber; +der_type_encoder_f Offset_B16_encode_der; +xer_type_decoder_f Offset_B16_decode_xer; +xer_type_encoder_f Offset_B16_encode_xer; +oer_type_decoder_f Offset_B16_decode_oer; +oer_type_encoder_f Offset_B16_encode_oer; +per_type_decoder_f Offset_B16_decode_uper; +per_type_encoder_f Offset_B16_encode_uper; +per_type_decoder_f Offset_B16_decode_aper; +per_type_encoder_f Offset_B16_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Offset_B16_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B12.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B12.h new file mode 100644 index 000000000..b0334e3b2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B12.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _OffsetLL_B12_H_ +#define _OffsetLL_B12_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* OffsetLL-B12 */ +typedef long OffsetLL_B12_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_OffsetLL_B12_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_OffsetLL_B12; +asn_struct_free_f OffsetLL_B12_free; +asn_struct_print_f OffsetLL_B12_print; +asn_constr_check_f OffsetLL_B12_constraint; +ber_type_decoder_f OffsetLL_B12_decode_ber; +der_type_encoder_f OffsetLL_B12_encode_der; +xer_type_decoder_f OffsetLL_B12_decode_xer; +xer_type_encoder_f OffsetLL_B12_encode_xer; +oer_type_decoder_f OffsetLL_B12_decode_oer; +oer_type_encoder_f OffsetLL_B12_encode_oer; +per_type_decoder_f OffsetLL_B12_decode_uper; +per_type_encoder_f OffsetLL_B12_encode_uper; +per_type_decoder_f OffsetLL_B12_decode_aper; +per_type_encoder_f OffsetLL_B12_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OffsetLL_B12_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B14.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B14.h new file mode 100644 index 000000000..2ac620338 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B14.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _OffsetLL_B14_H_ +#define _OffsetLL_B14_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* OffsetLL-B14 */ +typedef long OffsetLL_B14_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_OffsetLL_B14_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_OffsetLL_B14; +asn_struct_free_f OffsetLL_B14_free; +asn_struct_print_f OffsetLL_B14_print; +asn_constr_check_f OffsetLL_B14_constraint; +ber_type_decoder_f OffsetLL_B14_decode_ber; +der_type_encoder_f OffsetLL_B14_encode_der; +xer_type_decoder_f OffsetLL_B14_decode_xer; +xer_type_encoder_f OffsetLL_B14_encode_xer; +oer_type_decoder_f OffsetLL_B14_decode_oer; +oer_type_encoder_f OffsetLL_B14_encode_oer; +per_type_decoder_f OffsetLL_B14_decode_uper; +per_type_encoder_f OffsetLL_B14_encode_uper; +per_type_decoder_f OffsetLL_B14_decode_aper; +per_type_encoder_f OffsetLL_B14_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OffsetLL_B14_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B16.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B16.h new file mode 100644 index 000000000..6f3593d37 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B16.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _OffsetLL_B16_H_ +#define _OffsetLL_B16_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* OffsetLL-B16 */ +typedef long OffsetLL_B16_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_OffsetLL_B16_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_OffsetLL_B16; +asn_struct_free_f OffsetLL_B16_free; +asn_struct_print_f OffsetLL_B16_print; +asn_constr_check_f OffsetLL_B16_constraint; +ber_type_decoder_f OffsetLL_B16_decode_ber; +der_type_encoder_f OffsetLL_B16_encode_der; +xer_type_decoder_f OffsetLL_B16_decode_xer; +xer_type_encoder_f OffsetLL_B16_encode_xer; +oer_type_decoder_f OffsetLL_B16_decode_oer; +oer_type_encoder_f OffsetLL_B16_encode_oer; +per_type_decoder_f OffsetLL_B16_decode_uper; +per_type_encoder_f OffsetLL_B16_encode_uper; +per_type_decoder_f OffsetLL_B16_decode_aper; +per_type_encoder_f OffsetLL_B16_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OffsetLL_B16_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B18.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B18.h new file mode 100644 index 000000000..5364df222 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B18.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _OffsetLL_B18_H_ +#define _OffsetLL_B18_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* OffsetLL-B18 */ +typedef long OffsetLL_B18_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_OffsetLL_B18_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_OffsetLL_B18; +asn_struct_free_f OffsetLL_B18_free; +asn_struct_print_f OffsetLL_B18_print; +asn_constr_check_f OffsetLL_B18_constraint; +ber_type_decoder_f OffsetLL_B18_decode_ber; +der_type_encoder_f OffsetLL_B18_encode_der; +xer_type_decoder_f OffsetLL_B18_decode_xer; +xer_type_encoder_f OffsetLL_B18_encode_xer; +oer_type_decoder_f OffsetLL_B18_decode_oer; +oer_type_encoder_f OffsetLL_B18_encode_oer; +per_type_decoder_f OffsetLL_B18_decode_uper; +per_type_encoder_f OffsetLL_B18_encode_uper; +per_type_decoder_f OffsetLL_B18_decode_aper; +per_type_encoder_f OffsetLL_B18_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OffsetLL_B18_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B22.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B22.h new file mode 100644 index 000000000..33f18dbcf --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B22.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _OffsetLL_B22_H_ +#define _OffsetLL_B22_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* OffsetLL-B22 */ +typedef long OffsetLL_B22_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_OffsetLL_B22_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_OffsetLL_B22; +asn_struct_free_f OffsetLL_B22_free; +asn_struct_print_f OffsetLL_B22_print; +asn_constr_check_f OffsetLL_B22_constraint; +ber_type_decoder_f OffsetLL_B22_decode_ber; +der_type_encoder_f OffsetLL_B22_encode_der; +xer_type_decoder_f OffsetLL_B22_decode_xer; +xer_type_encoder_f OffsetLL_B22_encode_xer; +oer_type_decoder_f OffsetLL_B22_decode_oer; +oer_type_encoder_f OffsetLL_B22_encode_oer; +per_type_decoder_f OffsetLL_B22_decode_uper; +per_type_encoder_f OffsetLL_B22_encode_uper; +per_type_decoder_f OffsetLL_B22_decode_aper; +per_type_encoder_f OffsetLL_B22_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OffsetLL_B22_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B24.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B24.h new file mode 100644 index 000000000..5858ff9cf --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetLL-B24.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _OffsetLL_B24_H_ +#define _OffsetLL_B24_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* OffsetLL-B24 */ +typedef long OffsetLL_B24_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_OffsetLL_B24_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_OffsetLL_B24; +asn_struct_free_f OffsetLL_B24_free; +asn_struct_print_f OffsetLL_B24_print; +asn_constr_check_f OffsetLL_B24_constraint; +ber_type_decoder_f OffsetLL_B24_decode_ber; +der_type_encoder_f OffsetLL_B24_encode_der; +xer_type_decoder_f OffsetLL_B24_decode_xer; +xer_type_encoder_f OffsetLL_B24_encode_xer; +oer_type_decoder_f OffsetLL_B24_decode_oer; +oer_type_encoder_f OffsetLL_B24_encode_oer; +per_type_decoder_f OffsetLL_B24_decode_uper; +per_type_encoder_f OffsetLL_B24_encode_uper; +per_type_decoder_f OffsetLL_B24_decode_aper; +per_type_encoder_f OffsetLL_B24_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OffsetLL_B24_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetPoint.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetPoint.h new file mode 100644 index 000000000..d46ced7dc --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetPoint.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _OffsetPoint_H_ +#define _OffsetPoint_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* OffsetPoint */ +typedef struct OffsetPoint { + long deltax; + long deltay; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} OffsetPoint_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_OffsetPoint; +extern asn_SEQUENCE_specifics_t asn_SPC_OffsetPoint_specs_1; +extern asn_TYPE_member_t asn_MBR_OffsetPoint_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _OffsetPoint_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetSystem.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetSystem.h new file mode 100644 index 000000000..a23e021a9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OffsetSystem.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _OffsetSystem_H_ +#define _OffsetSystem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Zoom.h" +#include "NodeListXY.h" +#include "NodeListLL.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum OffsetSystem__offset_PR { + OffsetSystem__offset_PR_NOTHING, /* No components present */ + OffsetSystem__offset_PR_xy, + OffsetSystem__offset_PR_ll +} OffsetSystem__offset_PR; + +/* OffsetSystem */ +typedef struct OffsetSystem { + Zoom_t *scale; /* OPTIONAL */ + struct OffsetSystem__offset { + OffsetSystem__offset_PR present; + union OffsetSystem__offset_u { + NodeListXY_t xy; + NodeListLL_t ll; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } offset; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} OffsetSystem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_OffsetSystem; +extern asn_SEQUENCE_specifics_t asn_SPC_OffsetSystem_specs_1; +extern asn_TYPE_member_t asn_MBR_OffsetSystem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _OffsetSystem_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/OverlayLaneList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OverlayLaneList.h new file mode 100644 index 000000000..5ca16f612 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/OverlayLaneList.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _OverlayLaneList_H_ +#define _OverlayLaneList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LaneID.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* OverlayLaneList */ +typedef struct OverlayLaneList { + A_SEQUENCE_OF(LaneID_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} OverlayLaneList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_OverlayLaneList; +extern asn_SET_OF_specifics_t asn_SPC_OverlayLaneList_specs_1; +extern asn_TYPE_member_t asn_MBR_OverlayLaneList_1[1]; +extern asn_per_constraints_t asn_PER_type_OverlayLaneList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _OverlayLaneList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PartII-Id.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PartII-Id.h new file mode 100644 index 000000000..212c80708 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PartII-Id.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PartII_Id_H_ +#define _PartII_Id_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PartII-Id */ +typedef long PartII_Id_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PartII_Id_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PartII_Id; +asn_struct_free_f PartII_Id_free; +asn_struct_print_f PartII_Id_print; +asn_constr_check_f PartII_Id_constraint; +ber_type_decoder_f PartII_Id_decode_ber; +der_type_encoder_f PartII_Id_encode_der; +xer_type_decoder_f PartII_Id_decode_xer; +xer_type_encoder_f PartII_Id_encode_xer; +oer_type_decoder_f PartII_Id_decode_oer; +oer_type_encoder_f PartII_Id_encode_oer; +per_type_decoder_f PartII_Id_decode_uper; +per_type_encoder_f PartII_Id_encode_uper; +per_type_decoder_f PartII_Id_decode_aper; +per_type_encoder_f PartII_Id_encode_aper; +#define PartII_Id_vehicleSafetyExt ((PartII_Id_t)0) +#define PartII_Id_specialVehicleExt ((PartII_Id_t)1) +#define PartII_Id_supplementalVehicleExt ((PartII_Id_t)2) + +#ifdef __cplusplus +} +#endif + +#endif /* _PartII_Id_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PartIIcontent.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PartIIcontent.h new file mode 100644 index 000000000..2c61e5bc9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PartIIcontent.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PartIIcontent_H_ +#define _PartIIcontent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PartII-Id.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "VehicleSafetyExtensions.h" +#include "SpecialVehicleExtensions.h" +#include "SupplementalVehicleExtensions.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BSMpartIIExtension__partII_Value_PR { + BSMpartIIExtension__partII_Value_PR_NOTHING, /* No components present */ + BSMpartIIExtension__partII_Value_PR_VehicleSafetyExtensions, + BSMpartIIExtension__partII_Value_PR_SpecialVehicleExtensions, + BSMpartIIExtension__partII_Value_PR_SupplementalVehicleExtensions +} BSMpartIIExtension__partII_Value_PR; + +/* PartIIcontent */ +typedef struct BSMpartIIExtension { + PartII_Id_t partII_Id; + struct BSMpartIIExtension__partII_Value { + BSMpartIIExtension__partII_Value_PR present; + union BSMpartIIExtension__partII_Value_u { + VehicleSafetyExtensions_t VehicleSafetyExtensions; + SpecialVehicleExtensions_t SpecialVehicleExtensions; + SupplementalVehicleExtensions_t SupplementalVehicleExtensions; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } partII_Value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BSMpartIIExtension_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BSMpartIIExtension; +extern asn_SEQUENCE_specifics_t asn_SPC_BSMpartIIExtension_specs_1; +extern asn_TYPE_member_t asn_MBR_BSMpartIIExtension_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PartIIcontent_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathHistory.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathHistory.h new file mode 100644 index 000000000..3a0ab5c85 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathHistory.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PathHistory_H_ +#define _PathHistory_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GNSSstatus.h" +#include "PathHistoryPointList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct FullPositionVector; + +/* PathHistory */ +typedef struct PathHistory { + struct FullPositionVector *initialPosition; /* OPTIONAL */ + GNSSstatus_t *currGNSSstatus; /* OPTIONAL */ + PathHistoryPointList_t crumbData; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PathHistory_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PathHistory; +extern asn_SEQUENCE_specifics_t asn_SPC_PathHistory_specs_1; +extern asn_TYPE_member_t asn_MBR_PathHistory_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "FullPositionVector.h" + +#endif /* _PathHistory_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathHistoryPoint.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathHistoryPoint.h new file mode 100644 index 000000000..1ebe75688 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathHistoryPoint.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PathHistoryPoint_H_ +#define _PathHistoryPoint_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OffsetLL-B18.h" +#include "VertOffset-B12.h" +#include "TimeOffset.h" +#include "Speed.h" +#include "CoarseHeading.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PositionalAccuracy; + +/* PathHistoryPoint */ +typedef struct PathHistoryPoint { + OffsetLL_B18_t latOffset; + OffsetLL_B18_t lonOffset; + VertOffset_B12_t elevationOffset; + TimeOffset_t timeOffset; + Speed_t *speed; /* OPTIONAL */ + struct PositionalAccuracy *posAccuracy; /* OPTIONAL */ + CoarseHeading_t *heading; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PathHistoryPoint_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PathHistoryPoint; +extern asn_SEQUENCE_specifics_t asn_SPC_PathHistoryPoint_specs_1; +extern asn_TYPE_member_t asn_MBR_PathHistoryPoint_1[7]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "PositionalAccuracy.h" + +#endif /* _PathHistoryPoint_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathHistoryPointList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathHistoryPointList.h new file mode 100644 index 000000000..3ff9075a7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathHistoryPointList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PathHistoryPointList_H_ +#define _PathHistoryPointList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PathHistoryPoint; + +/* PathHistoryPointList */ +typedef struct PathHistoryPointList { + A_SEQUENCE_OF(struct PathHistoryPoint) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PathHistoryPointList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PathHistoryPointList; +extern asn_SET_OF_specifics_t asn_SPC_PathHistoryPointList_specs_1; +extern asn_TYPE_member_t asn_MBR_PathHistoryPointList_1[1]; +extern asn_per_constraints_t asn_PER_type_PathHistoryPointList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "PathHistoryPoint.h" + +#endif /* _PathHistoryPointList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathNode.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathNode.h new file mode 100644 index 000000000..8f92a2e4e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathNode.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _PathNode_H_ +#define _PathNode_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PathNode */ +typedef struct PathNode { + long x; + long y; + long *z; /* OPTIONAL */ + long *width; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PathNode_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PathNode; +extern asn_SEQUENCE_specifics_t asn_SPC_PathNode_specs_1; +extern asn_TYPE_member_t asn_MBR_PathNode_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PathNode_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathPrediction.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathPrediction.h new file mode 100644 index 000000000..f69743977 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PathPrediction.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PathPrediction_H_ +#define _PathPrediction_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RadiusOfCurvature.h" +#include "Confidence.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PathPrediction */ +typedef struct PathPrediction { + RadiusOfCurvature_t radiusOfCurve; + Confidence_t confidence; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PathPrediction_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PathPrediction; +extern asn_SEQUENCE_specifics_t asn_SPC_PathPrediction_specs_1; +extern asn_TYPE_member_t asn_MBR_PathPrediction_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PathPrediction_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PayloadData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PayloadData.h new file mode 100644 index 000000000..4cbabaaa0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PayloadData.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PayloadData_H_ +#define _PayloadData_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PayloadData */ +typedef OCTET_STRING_t PayloadData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PayloadData; +asn_struct_free_f PayloadData_free; +asn_struct_print_f PayloadData_print; +asn_constr_check_f PayloadData_constraint; +ber_type_decoder_f PayloadData_decode_ber; +der_type_encoder_f PayloadData_encode_der; +xer_type_decoder_f PayloadData_decode_xer; +xer_type_encoder_f PayloadData_encode_xer; +oer_type_decoder_f PayloadData_decode_oer; +oer_type_encoder_f PayloadData_encode_oer; +per_type_decoder_f PayloadData_decode_uper; +per_type_encoder_f PayloadData_encode_uper; +per_type_decoder_f PayloadData_decode_aper; +per_type_encoder_f PayloadData_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PayloadData_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PedestrianBicycleDetect.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PedestrianBicycleDetect.h new file mode 100644 index 000000000..4709d218d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PedestrianBicycleDetect.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PedestrianBicycleDetect_H_ +#define _PedestrianBicycleDetect_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BOOLEAN.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PedestrianBicycleDetect */ +typedef BOOLEAN_t PedestrianBicycleDetect_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PedestrianBicycleDetect; +asn_struct_free_f PedestrianBicycleDetect_free; +asn_struct_print_f PedestrianBicycleDetect_print; +asn_constr_check_f PedestrianBicycleDetect_constraint; +ber_type_decoder_f PedestrianBicycleDetect_decode_ber; +der_type_encoder_f PedestrianBicycleDetect_encode_der; +xer_type_decoder_f PedestrianBicycleDetect_decode_xer; +xer_type_encoder_f PedestrianBicycleDetect_encode_xer; +oer_type_decoder_f PedestrianBicycleDetect_decode_oer; +oer_type_encoder_f PedestrianBicycleDetect_encode_oer; +per_type_decoder_f PedestrianBicycleDetect_decode_uper; +per_type_encoder_f PedestrianBicycleDetect_encode_uper; +per_type_decoder_f PedestrianBicycleDetect_decode_aper; +per_type_encoder_f PedestrianBicycleDetect_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PedestrianBicycleDetect_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalAssistive.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalAssistive.h new file mode 100644 index 000000000..b7c9e6da9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalAssistive.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PersonalAssistive_H_ +#define _PersonalAssistive_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PersonalAssistive { + PersonalAssistive_unavailable = 0, + PersonalAssistive_otherType = 1, + PersonalAssistive_vision = 2, + PersonalAssistive_hearing = 3, + PersonalAssistive_movement = 4, + PersonalAssistive_cognition = 5 +} e_PersonalAssistive; + +/* PersonalAssistive */ +typedef BIT_STRING_t PersonalAssistive_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PersonalAssistive_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PersonalAssistive; +asn_struct_free_f PersonalAssistive_free; +asn_struct_print_f PersonalAssistive_print; +asn_constr_check_f PersonalAssistive_constraint; +ber_type_decoder_f PersonalAssistive_decode_ber; +der_type_encoder_f PersonalAssistive_encode_der; +xer_type_decoder_f PersonalAssistive_decode_xer; +xer_type_encoder_f PersonalAssistive_encode_xer; +oer_type_decoder_f PersonalAssistive_decode_oer; +oer_type_encoder_f PersonalAssistive_encode_oer; +per_type_decoder_f PersonalAssistive_decode_uper; +per_type_encoder_f PersonalAssistive_encode_uper; +per_type_decoder_f PersonalAssistive_decode_aper; +per_type_encoder_f PersonalAssistive_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PersonalAssistive_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalClusterRadius.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalClusterRadius.h new file mode 100644 index 000000000..c3c021192 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalClusterRadius.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PersonalClusterRadius_H_ +#define _PersonalClusterRadius_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PersonalClusterRadius */ +typedef long PersonalClusterRadius_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PersonalClusterRadius_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PersonalClusterRadius; +asn_struct_free_f PersonalClusterRadius_free; +asn_struct_print_f PersonalClusterRadius_print; +asn_constr_check_f PersonalClusterRadius_constraint; +ber_type_decoder_f PersonalClusterRadius_decode_ber; +der_type_encoder_f PersonalClusterRadius_encode_der; +xer_type_decoder_f PersonalClusterRadius_decode_xer; +xer_type_encoder_f PersonalClusterRadius_encode_xer; +oer_type_decoder_f PersonalClusterRadius_decode_oer; +oer_type_encoder_f PersonalClusterRadius_encode_oer; +per_type_decoder_f PersonalClusterRadius_decode_uper; +per_type_encoder_f PersonalClusterRadius_encode_uper; +per_type_decoder_f PersonalClusterRadius_decode_aper; +per_type_encoder_f PersonalClusterRadius_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PersonalClusterRadius_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalCrossingInProgress.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalCrossingInProgress.h new file mode 100644 index 000000000..39e6dc155 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalCrossingInProgress.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PersonalCrossingInProgress_H_ +#define _PersonalCrossingInProgress_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BOOLEAN.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PersonalCrossingInProgress */ +typedef BOOLEAN_t PersonalCrossingInProgress_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PersonalCrossingInProgress; +asn_struct_free_f PersonalCrossingInProgress_free; +asn_struct_print_f PersonalCrossingInProgress_print; +asn_constr_check_f PersonalCrossingInProgress_constraint; +ber_type_decoder_f PersonalCrossingInProgress_decode_ber; +der_type_encoder_f PersonalCrossingInProgress_encode_der; +xer_type_decoder_f PersonalCrossingInProgress_decode_xer; +xer_type_encoder_f PersonalCrossingInProgress_encode_xer; +oer_type_decoder_f PersonalCrossingInProgress_decode_oer; +oer_type_encoder_f PersonalCrossingInProgress_encode_oer; +per_type_decoder_f PersonalCrossingInProgress_decode_uper; +per_type_encoder_f PersonalCrossingInProgress_encode_uper; +per_type_decoder_f PersonalCrossingInProgress_decode_aper; +per_type_encoder_f PersonalCrossingInProgress_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PersonalCrossingInProgress_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalCrossingRequest.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalCrossingRequest.h new file mode 100644 index 000000000..ce9aa6d4f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalCrossingRequest.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PersonalCrossingRequest_H_ +#define _PersonalCrossingRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BOOLEAN.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PersonalCrossingRequest */ +typedef BOOLEAN_t PersonalCrossingRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PersonalCrossingRequest; +asn_struct_free_f PersonalCrossingRequest_free; +asn_struct_print_f PersonalCrossingRequest_print; +asn_constr_check_f PersonalCrossingRequest_constraint; +ber_type_decoder_f PersonalCrossingRequest_decode_ber; +der_type_encoder_f PersonalCrossingRequest_encode_der; +xer_type_decoder_f PersonalCrossingRequest_decode_xer; +xer_type_encoder_f PersonalCrossingRequest_encode_xer; +oer_type_decoder_f PersonalCrossingRequest_decode_oer; +oer_type_encoder_f PersonalCrossingRequest_encode_oer; +per_type_decoder_f PersonalCrossingRequest_decode_uper; +per_type_encoder_f PersonalCrossingRequest_encode_uper; +per_type_decoder_f PersonalCrossingRequest_decode_aper; +per_type_encoder_f PersonalCrossingRequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PersonalCrossingRequest_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalDeviceUsageState.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalDeviceUsageState.h new file mode 100644 index 000000000..e791603a8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalDeviceUsageState.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PersonalDeviceUsageState_H_ +#define _PersonalDeviceUsageState_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PersonalDeviceUsageState { + PersonalDeviceUsageState_unavailable = 0, + PersonalDeviceUsageState_other = 1, + PersonalDeviceUsageState_idle = 2, + PersonalDeviceUsageState_listeningToAudio = 3, + PersonalDeviceUsageState_typing = 4, + PersonalDeviceUsageState_calling = 5, + PersonalDeviceUsageState_playingGames = 6, + PersonalDeviceUsageState_reading = 7, + PersonalDeviceUsageState_viewing = 8 +} e_PersonalDeviceUsageState; + +/* PersonalDeviceUsageState */ +typedef BIT_STRING_t PersonalDeviceUsageState_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PersonalDeviceUsageState_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PersonalDeviceUsageState; +asn_struct_free_f PersonalDeviceUsageState_free; +asn_struct_print_f PersonalDeviceUsageState_print; +asn_constr_check_f PersonalDeviceUsageState_constraint; +ber_type_decoder_f PersonalDeviceUsageState_decode_ber; +der_type_encoder_f PersonalDeviceUsageState_encode_der; +xer_type_decoder_f PersonalDeviceUsageState_decode_xer; +xer_type_encoder_f PersonalDeviceUsageState_encode_xer; +oer_type_decoder_f PersonalDeviceUsageState_decode_oer; +oer_type_encoder_f PersonalDeviceUsageState_encode_oer; +per_type_decoder_f PersonalDeviceUsageState_decode_uper; +per_type_encoder_f PersonalDeviceUsageState_encode_uper; +per_type_decoder_f PersonalDeviceUsageState_decode_aper; +per_type_encoder_f PersonalDeviceUsageState_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PersonalDeviceUsageState_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalDeviceUserType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalDeviceUserType.h new file mode 100644 index 000000000..6bb0defbc --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalDeviceUserType.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PersonalDeviceUserType_H_ +#define _PersonalDeviceUserType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PersonalDeviceUserType { + PersonalDeviceUserType_unavailable = 0, + PersonalDeviceUserType_aPEDESTRIAN = 1, + PersonalDeviceUserType_aPEDALCYCLIST = 2, + PersonalDeviceUserType_aPUBLICSAFETYWORKER = 3, + PersonalDeviceUserType_anANIMAL = 4 + /* + * Enumeration is extensible + */ +} e_PersonalDeviceUserType; + +/* PersonalDeviceUserType */ +typedef long PersonalDeviceUserType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PersonalDeviceUserType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PersonalDeviceUserType; +extern const asn_INTEGER_specifics_t asn_SPC_PersonalDeviceUserType_specs_1; +asn_struct_free_f PersonalDeviceUserType_free; +asn_struct_print_f PersonalDeviceUserType_print; +asn_constr_check_f PersonalDeviceUserType_constraint; +ber_type_decoder_f PersonalDeviceUserType_decode_ber; +der_type_encoder_f PersonalDeviceUserType_encode_der; +xer_type_decoder_f PersonalDeviceUserType_decode_xer; +xer_type_encoder_f PersonalDeviceUserType_encode_xer; +oer_type_decoder_f PersonalDeviceUserType_decode_oer; +oer_type_encoder_f PersonalDeviceUserType_encode_oer; +per_type_decoder_f PersonalDeviceUserType_decode_uper; +per_type_encoder_f PersonalDeviceUserType_encode_uper; +per_type_decoder_f PersonalDeviceUserType_decode_aper; +per_type_encoder_f PersonalDeviceUserType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PersonalDeviceUserType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalMobilityMessage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalMobilityMessage.h new file mode 100644 index 000000000..5a1c80e51 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalMobilityMessage.h @@ -0,0 +1,85 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "../J2735_201603DA_with_PMM.ASN" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -S/home/gmb/TMX-OAM/Build/asn1c/skeletons` + */ + +#ifndef _PersonalMobilityMessage_H_ +#define _PersonalMobilityMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UUIDType.h" +#include "RequestID.h" +#include "MinuteOfTheYear.h" +#include "PersonalMobilityMessageStatusType.h" +#include "Position3D.h" +#include "ModeOfTransportType.h" +#include "EstimatedTimeType.h" +#include "DSRCEquippedType.h" +#include "VehicleDescriptionType.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PositionalAccuracy; +struct DFullTime; +struct DestinationType; +struct MobilityNeedsList; +struct RegionalExtension; + +/* PersonalMobilityMessage */ +typedef struct PersonalMobilityMessage { + UUIDType_t groupId; + RequestID_t requestId; + MinuteOfTheYear_t *timeStamp /* OPTIONAL */; + PersonalMobilityMessageStatusType_t status; + Position3D_t position; + struct PositionalAccuracy *accuracy /* OPTIONAL */; + struct DFullTime *requestDate /* OPTIONAL */; + struct DFullTime *pickupDate /* OPTIONAL */; + struct DestinationType *destination /* OPTIONAL */; + struct MobilityNeedsList *mobilityNeeds /* OPTIONAL */; + ModeOfTransportType_t *modeOfTransport /* OPTIONAL */; + EstimatedTimeType_t *eta /* OPTIONAL */; + DSRCEquippedType_t *isDSRCEquipped /* OPTIONAL */; + VehicleDescriptionType_t *vehicleDesc /* OPTIONAL */; + struct PersonalMobilityMessage__regional { + A_SEQUENCE_OF(struct RegionalExtension) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PersonalMobilityMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PersonalMobilityMessage; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "PositionalAccuracy.h" +#include "DFullTime.h" +#include "DestinationType.h" +#include "MobilityNeedsList.h" +#include "RegionalExtension.h" + +#endif /* _PersonalMobilityMessage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalMobilityMessageStatusType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalMobilityMessageStatusType.h new file mode 100644 index 000000000..2821b8fcc --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalMobilityMessageStatusType.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "../J2735_201603DA_with_PMM.ASN" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -S/home/gmb/TMX-OAM/Build/asn1c/skeletons` + */ + +#ifndef _PersonalMobilityMessageStatusType_H_ +#define _PersonalMobilityMessageStatusType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PersonalMobilityMessageStatusType { + PersonalMobilityMessageStatusType_new = 0, + PersonalMobilityMessageStatusType_update = 1, + PersonalMobilityMessageStatusType_response = 2, + PersonalMobilityMessageStatusType_arrival = 3, + PersonalMobilityMessageStatusType_completed = 4 +} e_PersonalMobilityMessageStatusType; + +/* PersonalMobilityMessageStatusType */ +typedef long PersonalMobilityMessageStatusType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PersonalMobilityMessageStatusType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PersonalMobilityMessageStatusType; +extern const asn_INTEGER_specifics_t asn_SPC_PersonalMobilityMessageStatusType_specs_1; +asn_struct_free_f PersonalMobilityMessageStatusType_free; +asn_struct_print_f PersonalMobilityMessageStatusType_print; +asn_constr_check_f PersonalMobilityMessageStatusType_constraint; +ber_type_decoder_f PersonalMobilityMessageStatusType_decode_ber; +der_type_encoder_f PersonalMobilityMessageStatusType_encode_der; +xer_type_decoder_f PersonalMobilityMessageStatusType_decode_xer; +xer_type_encoder_f PersonalMobilityMessageStatusType_encode_xer; +per_type_decoder_f PersonalMobilityMessageStatusType_decode_uper; +per_type_encoder_f PersonalMobilityMessageStatusType_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PersonalMobilityMessageStatusType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalSafetyMessage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalSafetyMessage.h new file mode 100644 index 000000000..e9d07290d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PersonalSafetyMessage.h @@ -0,0 +1,110 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PersonalSafetyMessage_H_ +#define _PersonalSafetyMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PersonalDeviceUserType.h" +#include "DSecond.h" +#include "Common_MsgCount.h" +#include "TemporaryID.h" +#include "Position3D.h" +#include "PositionalAccuracy.h" +#include "Velocity.h" +#include "Heading.h" +#include "PersonalDeviceUsageState.h" +#include "PersonalCrossingRequest.h" +#include "PersonalCrossingInProgress.h" +#include "NumberOfParticipantsInCluster.h" +#include "PersonalClusterRadius.h" +#include "PublicSafetyEventResponderWorkerType.h" +#include "PublicSafetyAndRoadWorkerActivity.h" +#include "PublicSafetyDirectingTrafficSubType.h" +#include "PersonalAssistive.h" +#include "UserSizeAndBehaviour.h" +#include "Attachment.h" +#include "AttachmentRadius.h" +#include "AnimalType.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct AccelerationSet4Way; +struct PathHistory; +struct PathPrediction; +struct PropelledInformation; +struct Reg_PersonalSafetyMessage; + +/* PersonalSafetyMessage */ +typedef struct PersonalSafetyMessage { + PersonalDeviceUserType_t basicType; + DSecond_t secMark; + Common_MsgCount_t msgCnt; + TemporaryID_t id; + Position3D_t position; + PositionalAccuracy_t accuracy; + Velocity_t speed; + Heading_t heading; + struct AccelerationSet4Way *accelSet; /* OPTIONAL */ + struct PathHistory *pathHistory; /* OPTIONAL */ + struct PathPrediction *pathPrediction; /* OPTIONAL */ + struct PropelledInformation *propulsion; /* OPTIONAL */ + PersonalDeviceUsageState_t *useState; /* OPTIONAL */ + PersonalCrossingRequest_t *crossRequest; /* OPTIONAL */ + PersonalCrossingInProgress_t *crossState; /* OPTIONAL */ + NumberOfParticipantsInCluster_t *clusterSize; /* OPTIONAL */ + PersonalClusterRadius_t *clusterRadius; /* OPTIONAL */ + PublicSafetyEventResponderWorkerType_t *eventResponderType; /* OPTIONAL */ + PublicSafetyAndRoadWorkerActivity_t *activityType; /* OPTIONAL */ + PublicSafetyDirectingTrafficSubType_t *activitySubType; /* OPTIONAL */ + PersonalAssistive_t *assistType; /* OPTIONAL */ + UserSizeAndBehaviour_t *sizing; /* OPTIONAL */ + Attachment_t *attachment; /* OPTIONAL */ + AttachmentRadius_t *attachmentRadius; /* OPTIONAL */ + AnimalType_t *animalType; /* OPTIONAL */ + struct PersonalSafetyMessage__regional { + A_SEQUENCE_OF(struct Reg_PersonalSafetyMessage) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PersonalSafetyMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PersonalSafetyMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_PersonalSafetyMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_PersonalSafetyMessage_1[26]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "AccelerationSet4Way.h" +#include "PathHistory.h" +#include "PathPrediction.h" +#include "PropelledInformation.h" +#include "RegionalExtension.h" + +#endif /* _PersonalSafetyMessage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PitchDetected.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PitchDetected.h new file mode 100644 index 000000000..a028235b2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PitchDetected.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _PitchDetected_H_ +#define _PitchDetected_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PitchDetected */ +typedef long PitchDetected_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PitchDetected_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PitchDetected; +asn_struct_free_f PitchDetected_free; +asn_struct_print_f PitchDetected_print; +asn_constr_check_f PitchDetected_constraint; +ber_type_decoder_f PitchDetected_decode_ber; +der_type_encoder_f PitchDetected_encode_der; +xer_type_decoder_f PitchDetected_decode_xer; +xer_type_encoder_f PitchDetected_encode_xer; +oer_type_decoder_f PitchDetected_decode_oer; +oer_type_encoder_f PitchDetected_encode_oer; +per_type_decoder_f PitchDetected_decode_uper; +per_type_encoder_f PitchDetected_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PitchDetected_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PitchRate.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PitchRate.h new file mode 100644 index 000000000..145045cd2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PitchRate.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _PitchRate_H_ +#define _PitchRate_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PitchRate */ +typedef long PitchRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PitchRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PitchRate; +asn_struct_free_f PitchRate_free; +asn_struct_print_f PitchRate_print; +asn_constr_check_f PitchRate_constraint; +ber_type_decoder_f PitchRate_decode_ber; +der_type_encoder_f PitchRate_encode_der; +xer_type_decoder_f PitchRate_decode_xer; +xer_type_encoder_f PitchRate_encode_xer; +oer_type_decoder_f PitchRate_decode_oer; +oer_type_encoder_f PitchRate_encode_oer; +per_type_decoder_f PitchRate_decode_uper; +per_type_encoder_f PitchRate_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PitchRate_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PitchRateConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PitchRateConfidence.h new file mode 100644 index 000000000..df6f4e7a0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PitchRateConfidence.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _PitchRateConfidence_H_ +#define _PitchRateConfidence_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PitchRateConfidence { + PitchRateConfidence_unavailable = 0, + PitchRateConfidence_degSec_100_00 = 1, + PitchRateConfidence_degSec_010_00 = 2, + PitchRateConfidence_degSec_005_00 = 3, + PitchRateConfidence_degSec_001_00 = 4, + PitchRateConfidence_degSec_000_10 = 5, + PitchRateConfidence_degSec_000_05 = 6, + PitchRateConfidence_degSec_000_01 = 7 +} e_PitchRateConfidence; + +/* PitchRateConfidence */ +typedef long PitchRateConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PitchRateConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PitchRateConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_PitchRateConfidence_specs_1; +asn_struct_free_f PitchRateConfidence_free; +asn_struct_print_f PitchRateConfidence_print; +asn_constr_check_f PitchRateConfidence_constraint; +ber_type_decoder_f PitchRateConfidence_decode_ber; +der_type_encoder_f PitchRateConfidence_encode_der; +xer_type_decoder_f PitchRateConfidence_decode_xer; +xer_type_encoder_f PitchRateConfidence_encode_xer; +oer_type_decoder_f PitchRateConfidence_decode_oer; +oer_type_encoder_f PitchRateConfidence_encode_oer; +per_type_decoder_f PitchRateConfidence_decode_uper; +per_type_encoder_f PitchRateConfidence_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PitchRateConfidence_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PivotPointDescription.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PivotPointDescription.h new file mode 100644 index 000000000..d33758d4c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PivotPointDescription.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PivotPointDescription_H_ +#define _PivotPointDescription_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Offset-B11.h" +#include "Common_Angle.h" +#include "PivotingAllowed.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PivotPointDescription */ +typedef struct PivotPointDescription { + Offset_B11_t pivotOffset; + Common_Angle_t pivotAngle; + PivotingAllowed_t pivots; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PivotPointDescription_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PivotPointDescription; +extern asn_SEQUENCE_specifics_t asn_SPC_PivotPointDescription_specs_1; +extern asn_TYPE_member_t asn_MBR_PivotPointDescription_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PivotPointDescription_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PivotingAllowed.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PivotingAllowed.h new file mode 100644 index 000000000..397559051 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PivotingAllowed.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PivotingAllowed_H_ +#define _PivotingAllowed_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BOOLEAN.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PivotingAllowed */ +typedef BOOLEAN_t PivotingAllowed_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PivotingAllowed; +asn_struct_free_f PivotingAllowed_free; +asn_struct_print_f PivotingAllowed_print; +asn_constr_check_f PivotingAllowed_constraint; +ber_type_decoder_f PivotingAllowed_decode_ber; +der_type_encoder_f PivotingAllowed_encode_der; +xer_type_decoder_f PivotingAllowed_decode_xer; +xer_type_encoder_f PivotingAllowed_encode_xer; +oer_type_decoder_f PivotingAllowed_decode_oer; +oer_type_encoder_f PivotingAllowed_encode_oer; +per_type_decoder_f PivotingAllowed_decode_uper; +per_type_encoder_f PivotingAllowed_encode_uper; +per_type_decoder_f PivotingAllowed_decode_aper; +per_type_encoder_f PivotingAllowed_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PivotingAllowed_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Point.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Point.h new file mode 100644 index 000000000..9b6129097 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Point.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _Point_H_ +#define _Point_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Point */ +typedef struct Point { + long x; + long y; + long *z; /* OPTIONAL */ + long width; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Point_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Point; +extern asn_SEQUENCE_specifics_t asn_SPC_Point_specs_1; +extern asn_TYPE_member_t asn_MBR_Point_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Point_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D-addGrpB.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D-addGrpB.h new file mode 100644 index 000000000..5df1831eb --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D-addGrpB.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Position3D_addGrpB_H_ +#define _Position3D_addGrpB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LatitudeDMS2.h" +#include "LongitudeDMS2.h" +#include "AddGrpB_Elevation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Position3D-addGrpB */ +typedef struct Position3D_addGrpB { + LatitudeDMS2_t latitude; + LongitudeDMS2_t longitude; + AddGrpB_Elevation_t elevation; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Position3D_addGrpB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Position3D_addGrpB; +extern asn_SEQUENCE_specifics_t asn_SPC_Position3D_addGrpB_specs_1; +extern asn_TYPE_member_t asn_MBR_Position3D_addGrpB_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Position3D_addGrpB_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D-addGrpC.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D-addGrpC.h new file mode 100644 index 000000000..1f5a04ae0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D-addGrpC.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Position3D_addGrpC_H_ +#define _Position3D_addGrpC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Altitude.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Position3D-addGrpC */ +typedef struct Position3D_addGrpC { + Altitude_t altitude; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Position3D_addGrpC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Position3D_addGrpC; +extern asn_SEQUENCE_specifics_t asn_SPC_Position3D_addGrpC_specs_1; +extern asn_TYPE_member_t asn_MBR_Position3D_addGrpC_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Position3D_addGrpC_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D-addGrpCarma.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D-addGrpCarma.h new file mode 100644 index 000000000..e7b1000a5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D-addGrpCarma.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpCarma" + * found in "J2735_201603_2022-11-21.asn" + * `asn1c -fcompound-names -D ../include/generated/` + */ + +#ifndef _Position3D_addGrpCarma_H_ +#define _Position3D_addGrpCarma_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Latitude.h" +#include "Longitude.h" +#include "Common_Elevation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Position3D-addGrpCarma */ +typedef struct Position3D_addGrpCarma { + Latitude_t lat; + Longitude_t Long; + Common_Elevation_t *elevation; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Position3D_addGrpCarma_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Position3D_addGrpCarma; +extern asn_SEQUENCE_specifics_t asn_SPC_Position3D_addGrpCarma_specs_1; +extern asn_TYPE_member_t asn_MBR_Position3D_addGrpCarma_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Position3D_addGrpCarma_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D.h new file mode 100644 index 000000000..ce16960bd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Position3D.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Position3D_H_ +#define _Position3D_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Latitude.h" +#include "Longitude.h" +#include "Common_Elevation.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_Position3D; + +/* Position3D */ +typedef struct Position3D { + Latitude_t lat; + Longitude_t Long; + Common_Elevation_t *elevation; /* OPTIONAL */ + struct Position3D__regional { + A_SEQUENCE_OF(struct Reg_Position3D) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Position3D_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Position3D; +extern asn_SEQUENCE_specifics_t asn_SPC_Position3D_specs_1; +extern asn_TYPE_member_t asn_MBR_Position3D_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _Position3D_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionConfidence.h new file mode 100644 index 000000000..d9383248f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionConfidence.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PositionConfidence_H_ +#define _PositionConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PositionConfidence { + PositionConfidence_unavailable = 0, + PositionConfidence_a500m = 1, + PositionConfidence_a200m = 2, + PositionConfidence_a100m = 3, + PositionConfidence_a50m = 4, + PositionConfidence_a20m = 5, + PositionConfidence_a10m = 6, + PositionConfidence_a5m = 7, + PositionConfidence_a2m = 8, + PositionConfidence_a1m = 9, + PositionConfidence_a50cm = 10, + PositionConfidence_a20cm = 11, + PositionConfidence_a10cm = 12, + PositionConfidence_a5cm = 13, + PositionConfidence_a2cm = 14, + PositionConfidence_a1cm = 15 +} e_PositionConfidence; + +/* PositionConfidence */ +typedef long PositionConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PositionConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PositionConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_PositionConfidence_specs_1; +asn_struct_free_f PositionConfidence_free; +asn_struct_print_f PositionConfidence_print; +asn_constr_check_f PositionConfidence_constraint; +ber_type_decoder_f PositionConfidence_decode_ber; +der_type_encoder_f PositionConfidence_encode_der; +xer_type_decoder_f PositionConfidence_decode_xer; +xer_type_encoder_f PositionConfidence_encode_xer; +oer_type_decoder_f PositionConfidence_decode_oer; +oer_type_encoder_f PositionConfidence_encode_oer; +per_type_decoder_f PositionConfidence_decode_uper; +per_type_encoder_f PositionConfidence_encode_uper; +per_type_decoder_f PositionConfidence_decode_aper; +per_type_encoder_f PositionConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PositionConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionConfidenceSet.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionConfidenceSet.h new file mode 100644 index 000000000..2f89bddbf --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionConfidenceSet.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PositionConfidenceSet_H_ +#define _PositionConfidenceSet_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PositionConfidence.h" +#include "ElevationConfidence.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PositionConfidenceSet */ +typedef struct PositionConfidenceSet { + PositionConfidence_t pos; + ElevationConfidence_t elevation; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PositionConfidenceSet_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PositionConfidenceSet; +extern asn_SEQUENCE_specifics_t asn_SPC_PositionConfidenceSet_specs_1; +extern asn_TYPE_member_t asn_MBR_PositionConfidenceSet_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PositionConfidenceSet_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionOffsetXYZ.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionOffsetXYZ.h new file mode 100644 index 000000000..9a9890818 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionOffsetXYZ.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _PositionOffsetXYZ_H_ +#define _PositionOffsetXYZ_H_ + + +#include + +/* Including external dependencies */ +#include "ObjectDistance.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PositionOffsetXYZ */ +typedef struct PositionOffsetXYZ { + ObjectDistance_t offsetX; + ObjectDistance_t offsetY; + ObjectDistance_t *offsetZ /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PositionOffsetXYZ_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PositionOffsetXYZ; +extern asn_SEQUENCE_specifics_t asn_SPC_PositionOffsetXYZ_specs_1; +extern asn_TYPE_member_t asn_MBR_PositionOffsetXYZ_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PositionOffsetXYZ_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionalAccuracy.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionalAccuracy.h new file mode 100644 index 000000000..8a1d39569 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PositionalAccuracy.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PositionalAccuracy_H_ +#define _PositionalAccuracy_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SemiMajorAxisAccuracy.h" +#include "SemiMinorAxisAccuracy.h" +#include "SemiMajorAxisOrientation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PositionalAccuracy */ +typedef struct PositionalAccuracy { + SemiMajorAxisAccuracy_t semiMajor; + SemiMinorAxisAccuracy_t semiMinor; + SemiMajorAxisOrientation_t orientation; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PositionalAccuracy_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PositionalAccuracy; +extern asn_SEQUENCE_specifics_t asn_SPC_PositionalAccuracy_specs_1; +extern asn_TYPE_member_t asn_MBR_PositionalAccuracy_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PositionalAccuracy_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PreemptPriorityList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PreemptPriorityList.h new file mode 100644 index 000000000..93d2f6353 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PreemptPriorityList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PreemptPriorityList_H_ +#define _PreemptPriorityList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SignalControlZone; + +/* PreemptPriorityList */ +typedef struct PreemptPriorityList { + A_SEQUENCE_OF(struct SignalControlZone) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PreemptPriorityList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PreemptPriorityList; +extern asn_SET_OF_specifics_t asn_SPC_PreemptPriorityList_specs_1; +extern asn_TYPE_member_t asn_MBR_PreemptPriorityList_1[1]; +extern asn_per_constraints_t asn_PER_type_PreemptPriorityList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "SignalControlZone.h" + +#endif /* _PreemptPriorityList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrintableString.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrintableString.h new file mode 100644 index 000000000..d7889445b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrintableString.h @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PrintableString_H_ +#define _PrintableString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t PrintableString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_PrintableString; +extern asn_TYPE_operation_t asn_OP_PrintableString; + +asn_constr_check_f PrintableString_constraint; + +#define PrintableString_free OCTET_STRING_free +#define PrintableString_print OCTET_STRING_print_utf8 +#define PrintableString_compare OCTET_STRING_compare +#define PrintableString_decode_ber OCTET_STRING_decode_ber +#define PrintableString_encode_der OCTET_STRING_encode_der +#define PrintableString_decode_xer OCTET_STRING_decode_xer_utf8 +#define PrintableString_encode_xer OCTET_STRING_encode_xer_utf8 +#define PrintableString_decode_uper OCTET_STRING_decode_uper +#define PrintableString_encode_uper OCTET_STRING_encode_uper + +#ifdef __cplusplus +} +#endif + +#endif /* _PrintableString_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrioritizationResponse.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrioritizationResponse.h new file mode 100644 index 000000000..41c76cc6c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrioritizationResponse.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PrioritizationResponse_H_ +#define _PrioritizationResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "StationID.h" +#include "PrioritizationResponseStatus.h" +#include "SignalGroupID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PrioritizationResponse */ +typedef struct PrioritizationResponse { + StationID_t stationID; + PrioritizationResponseStatus_t priorState; + SignalGroupID_t signalGroup; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrioritizationResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrioritizationResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_PrioritizationResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_PrioritizationResponse_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrioritizationResponse_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrioritizationResponseList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrioritizationResponseList.h new file mode 100644 index 000000000..e139e3fdd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrioritizationResponseList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PrioritizationResponseList_H_ +#define _PrioritizationResponseList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PrioritizationResponse; + +/* PrioritizationResponseList */ +typedef struct PrioritizationResponseList { + A_SEQUENCE_OF(struct PrioritizationResponse) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrioritizationResponseList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrioritizationResponseList; +extern asn_SET_OF_specifics_t asn_SPC_PrioritizationResponseList_specs_1; +extern asn_TYPE_member_t asn_MBR_PrioritizationResponseList_1[1]; +extern asn_per_constraints_t asn_PER_type_PrioritizationResponseList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "PrioritizationResponse.h" + +#endif /* _PrioritizationResponseList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrioritizationResponseStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrioritizationResponseStatus.h new file mode 100644 index 000000000..d1a287025 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrioritizationResponseStatus.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PrioritizationResponseStatus_H_ +#define _PrioritizationResponseStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PrioritizationResponseStatus { + PrioritizationResponseStatus_unknown = 0, + PrioritizationResponseStatus_requested = 1, + PrioritizationResponseStatus_processing = 2, + PrioritizationResponseStatus_watchOtherTraffic = 3, + PrioritizationResponseStatus_granted = 4, + PrioritizationResponseStatus_rejected = 5, + PrioritizationResponseStatus_maxPresence = 6, + PrioritizationResponseStatus_reserviceLocked = 7 + /* + * Enumeration is extensible + */ +} e_PrioritizationResponseStatus; + +/* PrioritizationResponseStatus */ +typedef long PrioritizationResponseStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PrioritizationResponseStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PrioritizationResponseStatus; +extern const asn_INTEGER_specifics_t asn_SPC_PrioritizationResponseStatus_specs_1; +asn_struct_free_f PrioritizationResponseStatus_free; +asn_struct_print_f PrioritizationResponseStatus_print; +asn_constr_check_f PrioritizationResponseStatus_constraint; +ber_type_decoder_f PrioritizationResponseStatus_decode_ber; +der_type_encoder_f PrioritizationResponseStatus_encode_der; +xer_type_decoder_f PrioritizationResponseStatus_decode_xer; +xer_type_encoder_f PrioritizationResponseStatus_encode_xer; +oer_type_decoder_f PrioritizationResponseStatus_decode_oer; +oer_type_encoder_f PrioritizationResponseStatus_encode_oer; +per_type_decoder_f PrioritizationResponseStatus_decode_uper; +per_type_encoder_f PrioritizationResponseStatus_encode_uper; +per_type_decoder_f PrioritizationResponseStatus_decode_aper; +per_type_encoder_f PrioritizationResponseStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrioritizationResponseStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Priority.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Priority.h new file mode 100644 index 000000000..46141efc5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Priority.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Priority_H_ +#define _Priority_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Priority */ +typedef OCTET_STRING_t Priority_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Priority_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Priority; +asn_struct_free_f Priority_free; +asn_struct_print_f Priority_print; +asn_constr_check_f Priority_constraint; +ber_type_decoder_f Priority_decode_ber; +der_type_encoder_f Priority_encode_der; +xer_type_decoder_f Priority_decode_xer; +xer_type_encoder_f Priority_encode_xer; +oer_type_decoder_f Priority_decode_oer; +oer_type_encoder_f Priority_encode_oer; +per_type_decoder_f Priority_decode_uper; +per_type_encoder_f Priority_encode_uper; +per_type_decoder_f Priority_decode_aper; +per_type_encoder_f Priority_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Priority_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PriorityRequestType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PriorityRequestType.h new file mode 100644 index 000000000..9e118527f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PriorityRequestType.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PriorityRequestType_H_ +#define _PriorityRequestType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PriorityRequestType { + PriorityRequestType_priorityRequestTypeReserved = 0, + PriorityRequestType_priorityRequest = 1, + PriorityRequestType_priorityRequestUpdate = 2, + PriorityRequestType_priorityCancellation = 3 + /* + * Enumeration is extensible + */ +} e_PriorityRequestType; + +/* PriorityRequestType */ +typedef long PriorityRequestType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PriorityRequestType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PriorityRequestType; +extern const asn_INTEGER_specifics_t asn_SPC_PriorityRequestType_specs_1; +asn_struct_free_f PriorityRequestType_free; +asn_struct_print_f PriorityRequestType_print; +asn_constr_check_f PriorityRequestType_constraint; +ber_type_decoder_f PriorityRequestType_decode_ber; +der_type_encoder_f PriorityRequestType_encode_der; +xer_type_decoder_f PriorityRequestType_decode_xer; +xer_type_encoder_f PriorityRequestType_encode_xer; +oer_type_decoder_f PriorityRequestType_decode_oer; +oer_type_encoder_f PriorityRequestType_encode_oer; +per_type_decoder_f PriorityRequestType_decode_uper; +per_type_encoder_f PriorityRequestType_encode_uper; +per_type_decoder_f PriorityRequestType_decode_aper; +per_type_encoder_f PriorityRequestType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PriorityRequestType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrivilegedEventFlags.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrivilegedEventFlags.h new file mode 100644 index 000000000..e202a0ae4 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrivilegedEventFlags.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PrivilegedEventFlags_H_ +#define _PrivilegedEventFlags_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PrivilegedEventFlags { + PrivilegedEventFlags_peUnavailable = 0, + PrivilegedEventFlags_peEmergencyResponse = 1, + PrivilegedEventFlags_peEmergencyLightsActive = 2, + PrivilegedEventFlags_peEmergencySoundActive = 3, + PrivilegedEventFlags_peNonEmergencyLightsActive = 4, + PrivilegedEventFlags_peNonEmergencySoundActive = 5 +} e_PrivilegedEventFlags; + +/* PrivilegedEventFlags */ +typedef BIT_STRING_t PrivilegedEventFlags_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PrivilegedEventFlags_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PrivilegedEventFlags; +asn_struct_free_f PrivilegedEventFlags_free; +asn_struct_print_f PrivilegedEventFlags_print; +asn_constr_check_f PrivilegedEventFlags_constraint; +ber_type_decoder_f PrivilegedEventFlags_decode_ber; +der_type_encoder_f PrivilegedEventFlags_encode_der; +xer_type_decoder_f PrivilegedEventFlags_decode_xer; +xer_type_encoder_f PrivilegedEventFlags_encode_xer; +oer_type_decoder_f PrivilegedEventFlags_decode_oer; +oer_type_encoder_f PrivilegedEventFlags_encode_oer; +per_type_decoder_f PrivilegedEventFlags_decode_uper; +per_type_encoder_f PrivilegedEventFlags_encode_uper; +per_type_decoder_f PrivilegedEventFlags_decode_aper; +per_type_encoder_f PrivilegedEventFlags_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivilegedEventFlags_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrivilegedEvents.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrivilegedEvents.h new file mode 100644 index 000000000..5471e64f7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PrivilegedEvents.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PrivilegedEvents_H_ +#define _PrivilegedEvents_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SSPindex.h" +#include "PrivilegedEventFlags.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PrivilegedEvents */ +typedef struct PrivilegedEvents { + SSPindex_t notUsed; + PrivilegedEventFlags_t event; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivilegedEvents_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivilegedEvents; +extern asn_SEQUENCE_specifics_t asn_SPC_PrivilegedEvents_specs_1; +extern asn_TYPE_member_t asn_MBR_PrivilegedEvents_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivilegedEvents_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ProbeDataManagement.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ProbeDataManagement.h new file mode 100644 index 000000000..8d134f116 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ProbeDataManagement.h @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ProbeDataManagement_H_ +#define _ProbeDataManagement_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MinuteOfTheYear.h" +#include "Sample.h" +#include "HeadingSlice.h" +#include "SecondOfTime.h" +#include "TermTime.h" +#include "TermDistance.h" +#include "constr_CHOICE.h" +#include "SnapshotTime.h" +#include "SnapshotDistance.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ProbeDataManagement__term_PR { + ProbeDataManagement__term_PR_NOTHING, /* No components present */ + ProbeDataManagement__term_PR_termtime, + ProbeDataManagement__term_PR_termDistance +} ProbeDataManagement__term_PR; +typedef enum ProbeDataManagement__snapshot_PR { + ProbeDataManagement__snapshot_PR_NOTHING, /* No components present */ + ProbeDataManagement__snapshot_PR_snapshotTime, + ProbeDataManagement__snapshot_PR_snapshotDistance +} ProbeDataManagement__snapshot_PR; + +/* Forward declarations */ +struct VehicleStatusRequestList; +struct Reg_ProbeDataManagement; + +/* ProbeDataManagement */ +typedef struct ProbeDataManagement { + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + Sample_t sample; + HeadingSlice_t directions; + struct ProbeDataManagement__term { + ProbeDataManagement__term_PR present; + union ProbeDataManagement__term_u { + TermTime_t termtime; + TermDistance_t termDistance; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } term; + struct ProbeDataManagement__snapshot { + ProbeDataManagement__snapshot_PR present; + union ProbeDataManagement__snapshot_u { + SnapshotTime_t snapshotTime; + SnapshotDistance_t snapshotDistance; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } snapshot; + SecondOfTime_t txInterval; + struct VehicleStatusRequestList *dataElements; /* OPTIONAL */ + struct ProbeDataManagement__regional { + A_SEQUENCE_OF(struct Reg_ProbeDataManagement) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProbeDataManagement_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProbeDataManagement; +extern asn_SEQUENCE_specifics_t asn_SPC_ProbeDataManagement_specs_1; +extern asn_TYPE_member_t asn_MBR_ProbeDataManagement_1[8]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "VehicleStatusRequestList.h" +#include "RegionalExtension.h" + +#endif /* _ProbeDataManagement_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ProbeSegmentNumber.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ProbeSegmentNumber.h new file mode 100644 index 000000000..80dfd91ab --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ProbeSegmentNumber.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ProbeSegmentNumber_H_ +#define _ProbeSegmentNumber_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProbeSegmentNumber */ +typedef long ProbeSegmentNumber_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProbeSegmentNumber_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProbeSegmentNumber; +asn_struct_free_f ProbeSegmentNumber_free; +asn_struct_print_f ProbeSegmentNumber_print; +asn_constr_check_f ProbeSegmentNumber_constraint; +ber_type_decoder_f ProbeSegmentNumber_decode_ber; +der_type_encoder_f ProbeSegmentNumber_encode_der; +xer_type_decoder_f ProbeSegmentNumber_decode_xer; +xer_type_encoder_f ProbeSegmentNumber_encode_xer; +oer_type_decoder_f ProbeSegmentNumber_decode_oer; +oer_type_encoder_f ProbeSegmentNumber_encode_oer; +per_type_decoder_f ProbeSegmentNumber_decode_uper; +per_type_encoder_f ProbeSegmentNumber_encode_uper; +per_type_decoder_f ProbeSegmentNumber_decode_aper; +per_type_encoder_f ProbeSegmentNumber_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProbeSegmentNumber_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ProbeVehicleData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ProbeVehicleData.h new file mode 100644 index 000000000..2146e6505 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ProbeVehicleData.h @@ -0,0 +1,75 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ProbeVehicleData_H_ +#define _ProbeVehicleData_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MinuteOfTheYear.h" +#include "ProbeSegmentNumber.h" +#include "FullPositionVector.h" +#include "VehicleClassification.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct VehicleIdent; +struct Snapshot; +struct Reg_ProbeVehicleData; + +/* ProbeVehicleData */ +typedef struct ProbeVehicleData { + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + ProbeSegmentNumber_t *segNum; /* OPTIONAL */ + struct VehicleIdent *probeID; /* OPTIONAL */ + FullPositionVector_t startVector; + VehicleClassification_t vehicleType; + struct ProbeVehicleData__snapshots { + A_SEQUENCE_OF(struct Snapshot) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } snapshots; + struct ProbeVehicleData__regional { + A_SEQUENCE_OF(struct Reg_ProbeVehicleData) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProbeVehicleData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProbeVehicleData; +extern asn_SEQUENCE_specifics_t asn_SPC_ProbeVehicleData_specs_1; +extern asn_TYPE_member_t asn_MBR_ProbeVehicleData_1[7]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "VehicleIdent.h" +#include "Snapshot.h" +#include "RegionalExtension.h" + +#endif /* _ProbeVehicleData_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PropelledInformation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PropelledInformation.h new file mode 100644 index 000000000..d13726d35 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PropelledInformation.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PropelledInformation_H_ +#define _PropelledInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "HumanPropelledType.h" +#include "AnimalPropelledType.h" +#include "MotorizedPropelledType.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PropelledInformation_PR { + PropelledInformation_PR_NOTHING, /* No components present */ + PropelledInformation_PR_human, + PropelledInformation_PR_animal, + PropelledInformation_PR_motor + /* Extensions may appear below */ + +} PropelledInformation_PR; + +/* PropelledInformation */ +typedef struct PropelledInformation { + PropelledInformation_PR present; + union PropelledInformation_u { + HumanPropelledType_t human; + AnimalPropelledType_t animal; + MotorizedPropelledType_t motor; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PropelledInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PropelledInformation; +extern asn_CHOICE_specifics_t asn_SPC_PropelledInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_PropelledInformation_1[3]; +extern asn_per_constraints_t asn_PER_type_PropelledInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _PropelledInformation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PublicSafetyAndRoadWorkerActivity.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PublicSafetyAndRoadWorkerActivity.h new file mode 100644 index 000000000..25b8847a3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PublicSafetyAndRoadWorkerActivity.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PublicSafetyAndRoadWorkerActivity_H_ +#define _PublicSafetyAndRoadWorkerActivity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PublicSafetyAndRoadWorkerActivity { + PublicSafetyAndRoadWorkerActivity_unavailable = 0, + PublicSafetyAndRoadWorkerActivity_workingOnRoad = 1, + PublicSafetyAndRoadWorkerActivity_settingUpClosures = 2, + PublicSafetyAndRoadWorkerActivity_respondingToEvents = 3, + PublicSafetyAndRoadWorkerActivity_directingTraffic = 4, + PublicSafetyAndRoadWorkerActivity_otherActivities = 5 +} e_PublicSafetyAndRoadWorkerActivity; + +/* PublicSafetyAndRoadWorkerActivity */ +typedef BIT_STRING_t PublicSafetyAndRoadWorkerActivity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PublicSafetyAndRoadWorkerActivity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PublicSafetyAndRoadWorkerActivity; +asn_struct_free_f PublicSafetyAndRoadWorkerActivity_free; +asn_struct_print_f PublicSafetyAndRoadWorkerActivity_print; +asn_constr_check_f PublicSafetyAndRoadWorkerActivity_constraint; +ber_type_decoder_f PublicSafetyAndRoadWorkerActivity_decode_ber; +der_type_encoder_f PublicSafetyAndRoadWorkerActivity_encode_der; +xer_type_decoder_f PublicSafetyAndRoadWorkerActivity_decode_xer; +xer_type_encoder_f PublicSafetyAndRoadWorkerActivity_encode_xer; +oer_type_decoder_f PublicSafetyAndRoadWorkerActivity_decode_oer; +oer_type_encoder_f PublicSafetyAndRoadWorkerActivity_encode_oer; +per_type_decoder_f PublicSafetyAndRoadWorkerActivity_decode_uper; +per_type_encoder_f PublicSafetyAndRoadWorkerActivity_encode_uper; +per_type_decoder_f PublicSafetyAndRoadWorkerActivity_decode_aper; +per_type_encoder_f PublicSafetyAndRoadWorkerActivity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PublicSafetyAndRoadWorkerActivity_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PublicSafetyDirectingTrafficSubType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PublicSafetyDirectingTrafficSubType.h new file mode 100644 index 000000000..361d3ebca --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PublicSafetyDirectingTrafficSubType.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PublicSafetyDirectingTrafficSubType_H_ +#define _PublicSafetyDirectingTrafficSubType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PublicSafetyDirectingTrafficSubType { + PublicSafetyDirectingTrafficSubType_unavailable = 0, + PublicSafetyDirectingTrafficSubType_policeAndTrafficOfficers = 1, + PublicSafetyDirectingTrafficSubType_trafficControlPersons = 2, + PublicSafetyDirectingTrafficSubType_railroadCrossingGuards = 3, + PublicSafetyDirectingTrafficSubType_civilDefenseNationalGuardMilitaryPolice = 4, + PublicSafetyDirectingTrafficSubType_emergencyOrganizationPersonnel = 5, + PublicSafetyDirectingTrafficSubType_highwayServiceVehiclePersonnel = 6 +} e_PublicSafetyDirectingTrafficSubType; + +/* PublicSafetyDirectingTrafficSubType */ +typedef BIT_STRING_t PublicSafetyDirectingTrafficSubType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PublicSafetyDirectingTrafficSubType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PublicSafetyDirectingTrafficSubType; +asn_struct_free_f PublicSafetyDirectingTrafficSubType_free; +asn_struct_print_f PublicSafetyDirectingTrafficSubType_print; +asn_constr_check_f PublicSafetyDirectingTrafficSubType_constraint; +ber_type_decoder_f PublicSafetyDirectingTrafficSubType_decode_ber; +der_type_encoder_f PublicSafetyDirectingTrafficSubType_encode_der; +xer_type_decoder_f PublicSafetyDirectingTrafficSubType_decode_xer; +xer_type_encoder_f PublicSafetyDirectingTrafficSubType_encode_xer; +oer_type_decoder_f PublicSafetyDirectingTrafficSubType_decode_oer; +oer_type_encoder_f PublicSafetyDirectingTrafficSubType_encode_oer; +per_type_decoder_f PublicSafetyDirectingTrafficSubType_decode_uper; +per_type_encoder_f PublicSafetyDirectingTrafficSubType_encode_uper; +per_type_decoder_f PublicSafetyDirectingTrafficSubType_decode_aper; +per_type_encoder_f PublicSafetyDirectingTrafficSubType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PublicSafetyDirectingTrafficSubType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/PublicSafetyEventResponderWorkerType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PublicSafetyEventResponderWorkerType.h new file mode 100644 index 000000000..03f5c20af --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/PublicSafetyEventResponderWorkerType.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _PublicSafetyEventResponderWorkerType_H_ +#define _PublicSafetyEventResponderWorkerType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PublicSafetyEventResponderWorkerType { + PublicSafetyEventResponderWorkerType_unavailable = 0, + PublicSafetyEventResponderWorkerType_towOperater = 1, + PublicSafetyEventResponderWorkerType_fireAndEMSWorker = 2, + PublicSafetyEventResponderWorkerType_aDOTWorker = 3, + PublicSafetyEventResponderWorkerType_lawEnforcement = 4, + PublicSafetyEventResponderWorkerType_hazmatResponder = 5, + PublicSafetyEventResponderWorkerType_animalControlWorker = 6, + PublicSafetyEventResponderWorkerType_otherPersonnel = 7 + /* + * Enumeration is extensible + */ +} e_PublicSafetyEventResponderWorkerType; + +/* PublicSafetyEventResponderWorkerType */ +typedef long PublicSafetyEventResponderWorkerType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PublicSafetyEventResponderWorkerType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PublicSafetyEventResponderWorkerType; +extern const asn_INTEGER_specifics_t asn_SPC_PublicSafetyEventResponderWorkerType_specs_1; +asn_struct_free_f PublicSafetyEventResponderWorkerType_free; +asn_struct_print_f PublicSafetyEventResponderWorkerType_print; +asn_constr_check_f PublicSafetyEventResponderWorkerType_constraint; +ber_type_decoder_f PublicSafetyEventResponderWorkerType_decode_ber; +der_type_encoder_f PublicSafetyEventResponderWorkerType_encode_der; +xer_type_decoder_f PublicSafetyEventResponderWorkerType_decode_xer; +xer_type_encoder_f PublicSafetyEventResponderWorkerType_encode_xer; +oer_type_decoder_f PublicSafetyEventResponderWorkerType_decode_oer; +oer_type_encoder_f PublicSafetyEventResponderWorkerType_encode_oer; +per_type_decoder_f PublicSafetyEventResponderWorkerType_decode_uper; +per_type_encoder_f PublicSafetyEventResponderWorkerType_encode_uper; +per_type_decoder_f PublicSafetyEventResponderWorkerType_decode_aper; +per_type_encoder_f PublicSafetyEventResponderWorkerType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PublicSafetyEventResponderWorkerType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/REAL.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/REAL.h new file mode 100644 index 000000000..8bc06230a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/REAL.h @@ -0,0 +1,51 @@ +/*- + * Copyright (c) 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_REAL_H +#define ASN_TYPE_REAL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ASN__PRIMITIVE_TYPE_t REAL_t; + +extern asn_TYPE_descriptor_t asn_DEF_REAL; +extern asn_TYPE_operation_t asn_OP_REAL; + +asn_struct_print_f REAL_print; +asn_struct_compare_f REAL_compare; +xer_type_decoder_f REAL_decode_xer; +xer_type_encoder_f REAL_encode_xer; +per_type_decoder_f REAL_decode_uper; +per_type_encoder_f REAL_encode_uper; + +#define REAL_free ASN__PRIMITIVE_TYPE_free, +#define REAL_constraint asn_generic_no_constraint +#define REAL_decode_ber ber_decode_primitive +#define REAL_encode_der der_encode_primitive + +/*********************************** + * Some handy conversion routines. * + ***********************************/ + +ssize_t REAL__dump(double d, int canonical, asn_app_consume_bytes_f *cb, void *app_key); + +/* + * Convert between native double type and REAL representation (DER). + * RETURN VALUES: + * 0: Value converted successfully + * -1: An error occured while converting the value: invalid format. + */ +int asn_REAL2double(const REAL_t *real_ptr, double *d); +int asn_double2REAL(REAL_t *real_ptr, double d); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_TYPE_REAL_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RELATIVE-OID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RELATIVE-OID.h new file mode 100644 index 000000000..4a73d2787 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RELATIVE-OID.h @@ -0,0 +1,48 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _RELATIVE_OID_H_ +#define _RELATIVE_OID_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Implemented via OBJECT IDENTIFIER */ +typedef OBJECT_IDENTIFIER_t RELATIVE_OID_t; + +extern asn_TYPE_descriptor_t asn_DEF_RELATIVE_OID; +extern asn_TYPE_operation_t asn_OP_RELATIVE_OID; + +asn_struct_print_f RELATIVE_OID_print; +xer_type_decoder_f RELATIVE_OID_decode_xer; +xer_type_encoder_f RELATIVE_OID_encode_xer; + +#define RELATIVE_OID_free ASN__PRIMITIVE_TYPE_free +#define RELATIVE_OID_compare OCTET_STRING_compare +#define RELATIVE_OID_constraint asn_generic_no_constraint +#define RELATIVE_OID_decode_ber ber_decode_primitive +#define RELATIVE_OID_encode_der der_encode_primitive +#define RELATIVE_OID_decode_uper OCTET_STRING_decode_uper +#define RELATIVE_OID_encode_uper OCTET_STRING_encode_uper + +/********************************** + * Some handy conversion routines * + **********************************/ + +/* See OBJECT_IDENTIFIER_get_arcs() function in OBJECT_IDENTIFIER.h */ +int RELATIVE_OID_get_arcs(const RELATIVE_OID_t *_roid, + void *arcs, unsigned int arc_type_size, unsigned int arc_slots); + +/* See OBJECT_IDENTIFIER_set_arcs() function in OBJECT_IDENTIFIER.h */ +int RELATIVE_OID_set_arcs(RELATIVE_OID_t *_roid, + void *arcs, unsigned int arc_type_size, unsigned int arcs_slots); + +#ifdef __cplusplus +} +#endif + +#endif /* _RELATIVE_OID_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCM-Revision.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCM-Revision.h new file mode 100644 index 000000000..fe4f08554 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCM-Revision.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "RTCMcorrections" + * found in "J2735-RTCMcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RTCM_Revision_H_ +#define _RTCM_Revision_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RTCM_Revision { + RTCM_Revision_unknown = 0, + RTCM_Revision_rtcmRev2 = 1, + RTCM_Revision_rtcmRev3 = 2, + RTCM_Revision_reserved = 3 + /* + * Enumeration is extensible + */ +} e_RTCM_Revision; + +/* RTCM-Revision */ +typedef long RTCM_Revision_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RTCM_Revision_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RTCM_Revision; +extern const asn_INTEGER_specifics_t asn_SPC_RTCM_Revision_specs_1; +asn_struct_free_f RTCM_Revision_free; +asn_struct_print_f RTCM_Revision_print; +asn_constr_check_f RTCM_Revision_constraint; +ber_type_decoder_f RTCM_Revision_decode_ber; +der_type_encoder_f RTCM_Revision_encode_der; +xer_type_decoder_f RTCM_Revision_decode_xer; +xer_type_encoder_f RTCM_Revision_encode_xer; +oer_type_decoder_f RTCM_Revision_decode_oer; +oer_type_encoder_f RTCM_Revision_encode_oer; +per_type_decoder_f RTCM_Revision_decode_uper; +per_type_encoder_f RTCM_Revision_encode_uper; +per_type_decoder_f RTCM_Revision_decode_aper; +per_type_encoder_f RTCM_Revision_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RTCM_Revision_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMPackage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMPackage.h new file mode 100644 index 000000000..f79705d20 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMPackage.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RTCMPackage_H_ +#define _RTCMPackage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RTCMmessageList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RTCMheader; + +/* RTCMPackage */ +typedef struct RTCMPackage { + struct RTCMheader *rtcmHeader; /* OPTIONAL */ + RTCMmessageList_t msgs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RTCMPackage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RTCMPackage; +extern asn_SEQUENCE_specifics_t asn_SPC_RTCMPackage_specs_1; +extern asn_TYPE_member_t asn_MBR_RTCMPackage_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RTCMheader.h" + +#endif /* _RTCMPackage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMcorrections.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMcorrections.h new file mode 100644 index 000000000..7a4fa90c6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMcorrections.h @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "RTCMcorrections" + * found in "J2735-RTCMcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RTCMcorrections_H_ +#define _RTCMcorrections_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Common_MsgCount.h" +#include "RTCM-Revision.h" +#include "MinuteOfTheYear.h" +#include "RTCMmessageList.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct FullPositionVector; +struct RTCMheader; +struct Reg_RTCMcorrections; + +/* RTCMcorrections */ +typedef struct RTCMcorrections { + Common_MsgCount_t msgCnt; + RTCM_Revision_t rev; + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + struct FullPositionVector *anchorPoint; /* OPTIONAL */ + struct RTCMheader *rtcmHeader; /* OPTIONAL */ + RTCMmessageList_t msgs; + struct RTCMcorrections__regional { + A_SEQUENCE_OF(struct Reg_RTCMcorrections) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RTCMcorrections_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RTCMcorrections; +extern asn_SEQUENCE_specifics_t asn_SPC_RTCMcorrections_specs_1; +extern asn_TYPE_member_t asn_MBR_RTCMcorrections_1[7]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "FullPositionVector.h" +#include "RTCMheader.h" +#include "RegionalExtension.h" + +#endif /* _RTCMcorrections_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMheader.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMheader.h new file mode 100644 index 000000000..c5255f4ff --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMheader.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RTCMheader_H_ +#define _RTCMheader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GNSSstatus.h" +#include "AntennaOffsetSet.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RTCMheader */ +typedef struct RTCMheader { + GNSSstatus_t status; + AntennaOffsetSet_t offsetSet; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RTCMheader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RTCMheader; +extern asn_SEQUENCE_specifics_t asn_SPC_RTCMheader_specs_1; +extern asn_TYPE_member_t asn_MBR_RTCMheader_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RTCMheader_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMmessage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMmessage.h new file mode 100644 index 000000000..4d10ea089 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMmessage.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RTCMmessage_H_ +#define _RTCMmessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RTCMmessage */ +typedef OCTET_STRING_t RTCMmessage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RTCMmessage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RTCMmessage; +asn_struct_free_f RTCMmessage_free; +asn_struct_print_f RTCMmessage_print; +asn_constr_check_f RTCMmessage_constraint; +ber_type_decoder_f RTCMmessage_decode_ber; +der_type_encoder_f RTCMmessage_encode_der; +xer_type_decoder_f RTCMmessage_decode_xer; +xer_type_encoder_f RTCMmessage_encode_xer; +oer_type_decoder_f RTCMmessage_decode_oer; +oer_type_encoder_f RTCMmessage_encode_oer; +per_type_decoder_f RTCMmessage_decode_uper; +per_type_encoder_f RTCMmessage_encode_uper; +per_type_decoder_f RTCMmessage_decode_aper; +per_type_encoder_f RTCMmessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RTCMmessage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMmessageList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMmessageList.h new file mode 100644 index 000000000..626d787b3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RTCMmessageList.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RTCMmessageList_H_ +#define _RTCMmessageList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RTCMmessage.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RTCMmessageList */ +typedef struct RTCMmessageList { + A_SEQUENCE_OF(RTCMmessage_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RTCMmessageList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RTCMmessageList; +extern asn_SET_OF_specifics_t asn_SPC_RTCMmessageList_specs_1; +extern asn_TYPE_member_t asn_MBR_RTCMmessageList_1[1]; +extern asn_per_constraints_t asn_PER_type_RTCMmessageList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RTCMmessageList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Radius-B12.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Radius-B12.h new file mode 100644 index 000000000..12b3c76b5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Radius-B12.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Radius_B12_H_ +#define _Radius_B12_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Radius-B12 */ +typedef long Radius_B12_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Radius_B12_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Radius_B12; +asn_struct_free_f Radius_B12_free; +asn_struct_print_f Radius_B12_print; +asn_constr_check_f Radius_B12_constraint; +ber_type_decoder_f Radius_B12_decode_ber; +der_type_encoder_f Radius_B12_encode_der; +xer_type_decoder_f Radius_B12_decode_xer; +xer_type_encoder_f Radius_B12_encode_xer; +oer_type_decoder_f Radius_B12_decode_oer; +oer_type_encoder_f Radius_B12_encode_oer; +per_type_decoder_f Radius_B12_decode_uper; +per_type_encoder_f Radius_B12_encode_uper; +per_type_decoder_f Radius_B12_decode_aper; +per_type_encoder_f Radius_B12_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Radius_B12_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RadiusOfCurvature.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RadiusOfCurvature.h new file mode 100644 index 000000000..992c89baa --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RadiusOfCurvature.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RadiusOfCurvature_H_ +#define _RadiusOfCurvature_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RadiusOfCurvature */ +typedef long RadiusOfCurvature_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RadiusOfCurvature_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RadiusOfCurvature; +asn_struct_free_f RadiusOfCurvature_free; +asn_struct_print_f RadiusOfCurvature_print; +asn_constr_check_f RadiusOfCurvature_constraint; +ber_type_decoder_f RadiusOfCurvature_decode_ber; +der_type_encoder_f RadiusOfCurvature_encode_der; +xer_type_decoder_f RadiusOfCurvature_decode_xer; +xer_type_encoder_f RadiusOfCurvature_encode_xer; +oer_type_decoder_f RadiusOfCurvature_decode_oer; +oer_type_encoder_f RadiusOfCurvature_encode_oer; +per_type_decoder_f RadiusOfCurvature_decode_uper; +per_type_encoder_f RadiusOfCurvature_encode_uper; +per_type_decoder_f RadiusOfCurvature_decode_aper; +per_type_encoder_f RadiusOfCurvature_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RadiusOfCurvature_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RainSensor.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RainSensor.h new file mode 100644 index 000000000..de512e106 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RainSensor.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RainSensor_H_ +#define _RainSensor_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RainSensor { + RainSensor_none = 0, + RainSensor_lightMist = 1, + RainSensor_heavyMist = 2, + RainSensor_lightRainOrDrizzle = 3, + RainSensor_rain = 4, + RainSensor_moderateRain = 5, + RainSensor_heavyRain = 6, + RainSensor_heavyDownpour = 7 +} e_RainSensor; + +/* RainSensor */ +typedef long RainSensor_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RainSensor_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RainSensor; +extern const asn_INTEGER_specifics_t asn_SPC_RainSensor_specs_1; +asn_struct_free_f RainSensor_free; +asn_struct_print_f RainSensor_print; +asn_constr_check_f RainSensor_constraint; +ber_type_decoder_f RainSensor_decode_ber; +der_type_encoder_f RainSensor_encode_der; +xer_type_decoder_f RainSensor_decode_xer; +xer_type_encoder_f RainSensor_encode_xer; +oer_type_decoder_f RainSensor_decode_oer; +oer_type_encoder_f RainSensor_encode_oer; +per_type_decoder_f RainSensor_decode_uper; +per_type_encoder_f RainSensor_encode_uper; +per_type_decoder_f RainSensor_decode_aper; +per_type_encoder_f RainSensor_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RainSensor_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionId.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionId.h new file mode 100644 index 000000000..84cb6ce59 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionId.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RegionId_H_ +#define _RegionId_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RegionId */ +typedef long RegionId_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RegionId_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RegionId; +asn_struct_free_f RegionId_free; +asn_struct_print_f RegionId_print; +asn_constr_check_f RegionId_constraint; +ber_type_decoder_f RegionId_decode_ber; +der_type_encoder_f RegionId_encode_der; +xer_type_decoder_f RegionId_decode_xer; +xer_type_encoder_f RegionId_encode_xer; +oer_type_decoder_f RegionId_decode_oer; +oer_type_encoder_f RegionId_encode_oer; +per_type_decoder_f RegionId_decode_uper; +per_type_encoder_f RegionId_encode_uper; +per_type_decoder_f RegionId_decode_aper; +per_type_encoder_f RegionId_encode_aper; +#define RegionId_noRegion ((RegionId_t)0) +#define RegionId_addGrpA ((RegionId_t)1) +#define RegionId_addGrpB ((RegionId_t)2) +#define RegionId_addGrpC ((RegionId_t)3) + +#ifdef __cplusplus +} +#endif + +#endif /* _RegionId_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionList.h new file mode 100644 index 000000000..a5153c196 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RegionList_H_ +#define _RegionList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RegionOffsets; + +/* RegionList */ +typedef struct RegionList { + A_SEQUENCE_OF(struct RegionOffsets) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RegionList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RegionList; +extern asn_SET_OF_specifics_t asn_SPC_RegionList_specs_1; +extern asn_TYPE_member_t asn_MBR_RegionList_1[1]; +extern asn_per_constraints_t asn_PER_type_RegionList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionOffsets.h" + +#endif /* _RegionList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionOffsets.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionOffsets.h new file mode 100644 index 000000000..8b112508c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionOffsets.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RegionOffsets_H_ +#define _RegionOffsets_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OffsetLL-B16.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RegionOffsets */ +typedef struct RegionOffsets { + OffsetLL_B16_t xOffset; + OffsetLL_B16_t yOffset; + OffsetLL_B16_t *zOffset; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RegionOffsets_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RegionOffsets; +extern asn_SEQUENCE_specifics_t asn_SPC_RegionOffsets_specs_1; +extern asn_TYPE_member_t asn_MBR_RegionOffsets_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RegionOffsets_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionPointSet.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionPointSet.h new file mode 100644 index 000000000..447ac99ee --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionPointSet.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RegionPointSet_H_ +#define _RegionPointSet_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Zoom.h" +#include "RegionList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Position3D; + +/* RegionPointSet */ +typedef struct RegionPointSet { + struct Position3D *anchor; /* OPTIONAL */ + Zoom_t *scale; /* OPTIONAL */ + RegionList_t nodeList; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RegionPointSet_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RegionPointSet; +extern asn_SEQUENCE_specifics_t asn_SPC_RegionPointSet_specs_1; +extern asn_TYPE_member_t asn_MBR_RegionPointSet_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Position3D.h" + +#endif /* _RegionPointSet_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionalExtension.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionalExtension.h new file mode 100644 index 000000000..e45c08795 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegionalExtension.h @@ -0,0 +1,1340 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RegionalExtension_H_ +#define _RegionalExtension_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RegionId.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "LaneDataAttribute-addGrpB.h" +#include "NodeOffsetPointXY-addGrpB.h" +#include "Position3D-addGrpB.h" +#include "Position3D-addGrpC.h" +#include "MapData-addGrpC.h" +#include "RestrictionUserType-addGrpC.h" +#include "ConnectionManeuverAssist-addGrpC.h" +#include "IntersectionState-addGrpC.h" +#include "MovementEvent-addGrpB.h" +#include "BasicSafetyMessage-addGrpCarma.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Reg_BasicSafetyMessage__regExtValue_PR { + Reg_BasicSafetyMessage__regExtValue_PR_NOTHING, /* No components present */ + Reg_BasicSafetyMessage__regExtValue_PR_BasicSafetyMessage_addGrpCarma +} Reg_BasicSafetyMessage__regExtValue_PR; +typedef enum Reg_EventDescription__regExtValue_PR { + Reg_EventDescription__regExtValue_PR_NOTHING /* No components present */ + +} Reg_EventDescription__regExtValue_PR; +typedef enum Reg_SupplementalVehicleExtensions__regExtValue_PR { + Reg_SupplementalVehicleExtensions__regExtValue_PR_NOTHING /* No components present */ + +} Reg_SupplementalVehicleExtensions__regExtValue_PR; +typedef enum Reg_ComputedLane__regExtValue_PR { + Reg_ComputedLane__regExtValue_PR_NOTHING /* No components present */ + +} Reg_ComputedLane__regExtValue_PR; +typedef enum Reg_LaneDataAttribute__regExtValue_PR { + Reg_LaneDataAttribute__regExtValue_PR_NOTHING, /* No components present */ + Reg_LaneDataAttribute__regExtValue_PR_LaneDataAttribute_addGrpB +} Reg_LaneDataAttribute__regExtValue_PR; +typedef enum Reg_NodeAttributeSetXY__regExtValue_PR { + Reg_NodeAttributeSetXY__regExtValue_PR_NOTHING /* No components present */ + +} Reg_NodeAttributeSetXY__regExtValue_PR; +typedef enum Reg_NodeOffsetPointXY__regExtValue_PR { + Reg_NodeOffsetPointXY__regExtValue_PR_NOTHING, /* No components present */ + Reg_NodeOffsetPointXY__regExtValue_PR_NodeOffsetPointXY_addGrpB +} Reg_NodeOffsetPointXY__regExtValue_PR; +typedef enum Reg_Position3D__regExtValue_PR { + Reg_Position3D__regExtValue_PR_NOTHING, /* No components present */ + Reg_Position3D__regExtValue_PR_Position3D_addGrpB, + Reg_Position3D__regExtValue_PR_Position3D_addGrpC +} Reg_Position3D__regExtValue_PR; +typedef enum Reg_RequestorType__regExtValue_PR { + Reg_RequestorType__regExtValue_PR_NOTHING /* No components present */ + +} Reg_RequestorType__regExtValue_PR; +typedef enum Reg_VehicleClassification__regExtValue_PR { + Reg_VehicleClassification__regExtValue_PR_NOTHING /* No components present */ + +} Reg_VehicleClassification__regExtValue_PR; +typedef enum Reg_VerticalOffset__regExtValue_PR { + Reg_VerticalOffset__regExtValue_PR_NOTHING /* No components present */ + +} Reg_VerticalOffset__regExtValue_PR; +typedef enum Reg_CommonSafetyRequest__regExtValue_PR { + Reg_CommonSafetyRequest__regExtValue_PR_NOTHING /* No components present */ + +} Reg_CommonSafetyRequest__regExtValue_PR; +typedef enum Reg_EmergencyVehicleAlert__regExtValue_PR { + Reg_EmergencyVehicleAlert__regExtValue_PR_NOTHING /* No components present */ + +} Reg_EmergencyVehicleAlert__regExtValue_PR; +typedef enum Reg_IntersectionCollision__regExtValue_PR { + Reg_IntersectionCollision__regExtValue_PR_NOTHING /* No components present */ + +} Reg_IntersectionCollision__regExtValue_PR; +typedef enum Reg_MapData__regExtValue_PR { + Reg_MapData__regExtValue_PR_NOTHING, /* No components present */ + Reg_MapData__regExtValue_PR_MapData_addGrpC +} Reg_MapData__regExtValue_PR; +typedef enum Reg_GenericLane__regExtValue_PR { + Reg_GenericLane__regExtValue_PR_NOTHING /* No components present */ + +} Reg_GenericLane__regExtValue_PR; +typedef enum Reg_IntersectionGeometry__regExtValue_PR { + Reg_IntersectionGeometry__regExtValue_PR_NOTHING /* No components present */ + +} Reg_IntersectionGeometry__regExtValue_PR; +typedef enum Reg_LaneAttributes__regExtValue_PR { + Reg_LaneAttributes__regExtValue_PR_NOTHING /* No components present */ + +} Reg_LaneAttributes__regExtValue_PR; +typedef enum Reg_SignalControlZone__regExtValue_PR { + Reg_SignalControlZone__regExtValue_PR_NOTHING /* No components present */ + +} Reg_SignalControlZone__regExtValue_PR; +typedef enum Reg_RestrictionUserType__regExtValue_PR { + Reg_RestrictionUserType__regExtValue_PR_NOTHING, /* No components present */ + Reg_RestrictionUserType__regExtValue_PR_RestrictionUserType_addGrpC +} Reg_RestrictionUserType__regExtValue_PR; +typedef enum Reg_RoadSegment__regExtValue_PR { + Reg_RoadSegment__regExtValue_PR_NOTHING /* No components present */ + +} Reg_RoadSegment__regExtValue_PR; +typedef enum Reg_NMEAcorrections__regExtValue_PR { + Reg_NMEAcorrections__regExtValue_PR_NOTHING /* No components present */ + +} Reg_NMEAcorrections__regExtValue_PR; +typedef enum Reg_PersonalSafetyMessage__regExtValue_PR { + Reg_PersonalSafetyMessage__regExtValue_PR_NOTHING /* No components present */ + +} Reg_PersonalSafetyMessage__regExtValue_PR; +typedef enum Reg_ProbeDataManagement__regExtValue_PR { + Reg_ProbeDataManagement__regExtValue_PR_NOTHING /* No components present */ + +} Reg_ProbeDataManagement__regExtValue_PR; +typedef enum Reg_ProbeVehicleData__regExtValue_PR { + Reg_ProbeVehicleData__regExtValue_PR_NOTHING /* No components present */ + +} Reg_ProbeVehicleData__regExtValue_PR; +typedef enum Reg_RoadSideAlert__regExtValue_PR { + Reg_RoadSideAlert__regExtValue_PR_NOTHING /* No components present */ + +} Reg_RoadSideAlert__regExtValue_PR; +typedef enum Reg_RTCMcorrections__regExtValue_PR { + Reg_RTCMcorrections__regExtValue_PR_NOTHING /* No components present */ + +} Reg_RTCMcorrections__regExtValue_PR; +typedef enum Reg_SignalRequestMessage__regExtValue_PR { + Reg_SignalRequestMessage__regExtValue_PR_NOTHING /* No components present */ + +} Reg_SignalRequestMessage__regExtValue_PR; +typedef enum Reg_RequestorDescription__regExtValue_PR { + Reg_RequestorDescription__regExtValue_PR_NOTHING /* No components present */ + +} Reg_RequestorDescription__regExtValue_PR; +typedef enum Reg_SignalRequestPackage__regExtValue_PR { + Reg_SignalRequestPackage__regExtValue_PR_NOTHING /* No components present */ + +} Reg_SignalRequestPackage__regExtValue_PR; +typedef enum Reg_SignalRequest__regExtValue_PR { + Reg_SignalRequest__regExtValue_PR_NOTHING /* No components present */ + +} Reg_SignalRequest__regExtValue_PR; +typedef enum Reg_SignalStatusMessage__regExtValue_PR { + Reg_SignalStatusMessage__regExtValue_PR_NOTHING /* No components present */ + +} Reg_SignalStatusMessage__regExtValue_PR; +typedef enum Reg_SignalStatusPackage__regExtValue_PR { + Reg_SignalStatusPackage__regExtValue_PR_NOTHING /* No components present */ + +} Reg_SignalStatusPackage__regExtValue_PR; +typedef enum Reg_SignalStatus__regExtValue_PR { + Reg_SignalStatus__regExtValue_PR_NOTHING /* No components present */ + +} Reg_SignalStatus__regExtValue_PR; +typedef enum Reg_SPAT__regExtValue_PR { + Reg_SPAT__regExtValue_PR_NOTHING /* No components present */ + +} Reg_SPAT__regExtValue_PR; +typedef enum Reg_AdvisorySpeed__regExtValue_PR { + Reg_AdvisorySpeed__regExtValue_PR_NOTHING /* No components present */ + +} Reg_AdvisorySpeed__regExtValue_PR; +typedef enum Reg_ConnectionManeuverAssist__regExtValue_PR { + Reg_ConnectionManeuverAssist__regExtValue_PR_NOTHING, /* No components present */ + Reg_ConnectionManeuverAssist__regExtValue_PR_ConnectionManeuverAssist_addGrpC +} Reg_ConnectionManeuverAssist__regExtValue_PR; +typedef enum Reg_IntersectionState__regExtValue_PR { + Reg_IntersectionState__regExtValue_PR_NOTHING, /* No components present */ + Reg_IntersectionState__regExtValue_PR_IntersectionState_addGrpC +} Reg_IntersectionState__regExtValue_PR; +typedef enum Reg_MovementEvent__regExtValue_PR { + Reg_MovementEvent__regExtValue_PR_NOTHING, /* No components present */ + Reg_MovementEvent__regExtValue_PR_MovementEvent_addGrpB +} Reg_MovementEvent__regExtValue_PR; +typedef enum Reg_MovementState__regExtValue_PR { + Reg_MovementState__regExtValue_PR_NOTHING /* No components present */ + +} Reg_MovementState__regExtValue_PR; +typedef enum Reg_TestMessage00__regExtValue_PR { + Reg_TestMessage00__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage00__regExtValue_PR; +typedef enum Reg_TestMessage01__regExtValue_PR { + Reg_TestMessage01__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage01__regExtValue_PR; +typedef enum Reg_TestMessage02__regExtValue_PR { + Reg_TestMessage02__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage02__regExtValue_PR; +typedef enum Reg_TestMessage03__regExtValue_PR { + Reg_TestMessage03__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage03__regExtValue_PR; +typedef enum Reg_TestMessage04__regExtValue_PR { + Reg_TestMessage04__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage04__regExtValue_PR; +typedef enum Reg_TestMessage05__regExtValue_PR { + Reg_TestMessage05__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage05__regExtValue_PR; +typedef enum Reg_TestMessage06__regExtValue_PR { + Reg_TestMessage06__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage06__regExtValue_PR; +typedef enum Reg_TestMessage07__regExtValue_PR { + Reg_TestMessage07__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage07__regExtValue_PR; +typedef enum Reg_TestMessage08__regExtValue_PR { + Reg_TestMessage08__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage08__regExtValue_PR; +typedef enum Reg_TestMessage09__regExtValue_PR { + Reg_TestMessage09__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage09__regExtValue_PR; +typedef enum Reg_TestMessage10__regExtValue_PR { + Reg_TestMessage10__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage10__regExtValue_PR; +typedef enum Reg_TestMessage11__regExtValue_PR { + Reg_TestMessage11__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage11__regExtValue_PR; +typedef enum Reg_TestMessage12__regExtValue_PR { + Reg_TestMessage12__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage12__regExtValue_PR; +typedef enum Reg_TestMessage13__regExtValue_PR { + Reg_TestMessage13__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage13__regExtValue_PR; +typedef enum Reg_TestMessage14__regExtValue_PR { + Reg_TestMessage14__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage14__regExtValue_PR; +typedef enum Reg_TestMessage15__regExtValue_PR { + Reg_TestMessage15__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TestMessage15__regExtValue_PR; +typedef enum Reg_TravelerInformation__regExtValue_PR { + Reg_TravelerInformation__regExtValue_PR_NOTHING /* No components present */ + +} Reg_TravelerInformation__regExtValue_PR; +typedef enum Reg_GeographicalPath__regExtValue_PR { + Reg_GeographicalPath__regExtValue_PR_NOTHING /* No components present */ + +} Reg_GeographicalPath__regExtValue_PR; +typedef enum Reg_GeometricProjection__regExtValue_PR { + Reg_GeometricProjection__regExtValue_PR_NOTHING /* No components present */ + +} Reg_GeometricProjection__regExtValue_PR; +typedef enum Reg_NodeAttributeSetLL__regExtValue_PR { + Reg_NodeAttributeSetLL__regExtValue_PR_NOTHING /* No components present */ + +} Reg_NodeAttributeSetLL__regExtValue_PR; +typedef enum Reg_NodeOffsetPointLL__regExtValue_PR { + Reg_NodeOffsetPointLL__regExtValue_PR_NOTHING /* No components present */ + +} Reg_NodeOffsetPointLL__regExtValue_PR; + +/* RegionalExtension */ +typedef struct Reg_BasicSafetyMessage { + RegionId_t regionId; + struct Reg_BasicSafetyMessage__regExtValue { + Reg_BasicSafetyMessage__regExtValue_PR present; + union Reg_BasicSafetyMessage__regExtValue_u { + BasicSafetyMessage_addGrpCarma_t BasicSafetyMessage_addGrpCarma; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_BasicSafetyMessage_t; +typedef struct Reg_EventDescription { + RegionId_t regionId; + struct Reg_EventDescription__regExtValue { + Reg_EventDescription__regExtValue_PR present; + union Reg_EventDescription__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_EventDescription_t; +typedef struct Reg_SupplementalVehicleExtensions { + RegionId_t regionId; + struct Reg_SupplementalVehicleExtensions__regExtValue { + Reg_SupplementalVehicleExtensions__regExtValue_PR present; + union Reg_SupplementalVehicleExtensions__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_SupplementalVehicleExtensions_t; +typedef struct Reg_ComputedLane { + RegionId_t regionId; + struct Reg_ComputedLane__regExtValue { + Reg_ComputedLane__regExtValue_PR present; + union Reg_ComputedLane__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_ComputedLane_t; +typedef struct Reg_LaneDataAttribute { + RegionId_t regionId; + struct Reg_LaneDataAttribute__regExtValue { + Reg_LaneDataAttribute__regExtValue_PR present; + union Reg_LaneDataAttribute__regExtValue_u { + LaneDataAttribute_addGrpB_t LaneDataAttribute_addGrpB; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_LaneDataAttribute_t; +typedef struct Reg_NodeAttributeSetXY { + RegionId_t regionId; + struct Reg_NodeAttributeSetXY__regExtValue { + Reg_NodeAttributeSetXY__regExtValue_PR present; + union Reg_NodeAttributeSetXY__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_NodeAttributeSetXY_t; +typedef struct Reg_NodeOffsetPointXY { + RegionId_t regionId; + struct Reg_NodeOffsetPointXY__regExtValue { + Reg_NodeOffsetPointXY__regExtValue_PR present; + union Reg_NodeOffsetPointXY__regExtValue_u { + NodeOffsetPointXY_addGrpB_t NodeOffsetPointXY_addGrpB; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_NodeOffsetPointXY_t; +typedef struct Reg_Position3D { + RegionId_t regionId; + struct Reg_Position3D__regExtValue { + Reg_Position3D__regExtValue_PR present; + union Reg_Position3D__regExtValue_u { + Position3D_addGrpB_t Position3D_addGrpB; + Position3D_addGrpC_t Position3D_addGrpC; + Position3D_addGrpCarma_t Position3D_addGrpCarma; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_Position3D_t; +typedef struct Reg_RequestorType { + RegionId_t regionId; + struct Reg_RequestorType__regExtValue { + Reg_RequestorType__regExtValue_PR present; + union Reg_RequestorType__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_RequestorType_t; +typedef struct Reg_VehicleClassification { + RegionId_t regionId; + struct Reg_VehicleClassification__regExtValue { + Reg_VehicleClassification__regExtValue_PR present; + union Reg_VehicleClassification__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_VehicleClassification_t; +typedef struct Reg_VerticalOffset { + RegionId_t regionId; + struct Reg_VerticalOffset__regExtValue { + Reg_VerticalOffset__regExtValue_PR present; + union Reg_VerticalOffset__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_VerticalOffset_t; +typedef struct Reg_CommonSafetyRequest { + RegionId_t regionId; + struct Reg_CommonSafetyRequest__regExtValue { + Reg_CommonSafetyRequest__regExtValue_PR present; + union Reg_CommonSafetyRequest__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_CommonSafetyRequest_t; +typedef struct Reg_EmergencyVehicleAlert { + RegionId_t regionId; + struct Reg_EmergencyVehicleAlert__regExtValue { + Reg_EmergencyVehicleAlert__regExtValue_PR present; + union Reg_EmergencyVehicleAlert__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_EmergencyVehicleAlert_t; +typedef struct Reg_IntersectionCollision { + RegionId_t regionId; + struct Reg_IntersectionCollision__regExtValue { + Reg_IntersectionCollision__regExtValue_PR present; + union Reg_IntersectionCollision__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_IntersectionCollision_t; +typedef struct Reg_MapData { + RegionId_t regionId; + struct Reg_MapData__regExtValue { + Reg_MapData__regExtValue_PR present; + union Reg_MapData__regExtValue_u { + MapData_addGrpC_t MapData_addGrpC; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_MapData_t; +typedef struct Reg_GenericLane { + RegionId_t regionId; + struct Reg_GenericLane__regExtValue { + Reg_GenericLane__regExtValue_PR present; + union Reg_GenericLane__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_GenericLane_t; +typedef struct Reg_IntersectionGeometry { + RegionId_t regionId; + struct Reg_IntersectionGeometry__regExtValue { + Reg_IntersectionGeometry__regExtValue_PR present; + union Reg_IntersectionGeometry__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_IntersectionGeometry_t; +typedef struct Reg_LaneAttributes { + RegionId_t regionId; + struct Reg_LaneAttributes__regExtValue { + Reg_LaneAttributes__regExtValue_PR present; + union Reg_LaneAttributes__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_LaneAttributes_t; +typedef struct Reg_SignalControlZone { + RegionId_t regionId; + struct Reg_SignalControlZone__regExtValue { + Reg_SignalControlZone__regExtValue_PR present; + union Reg_SignalControlZone__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_SignalControlZone_t; +typedef struct Reg_RestrictionUserType { + RegionId_t regionId; + struct Reg_RestrictionUserType__regExtValue { + Reg_RestrictionUserType__regExtValue_PR present; + union Reg_RestrictionUserType__regExtValue_u { + RestrictionUserType_addGrpC_t RestrictionUserType_addGrpC; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_RestrictionUserType_t; +typedef struct Reg_RoadSegment { + RegionId_t regionId; + struct Reg_RoadSegment__regExtValue { + Reg_RoadSegment__regExtValue_PR present; + union Reg_RoadSegment__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_RoadSegment_t; +typedef struct Reg_NMEAcorrections { + RegionId_t regionId; + struct Reg_NMEAcorrections__regExtValue { + Reg_NMEAcorrections__regExtValue_PR present; + union Reg_NMEAcorrections__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_NMEAcorrections_t; +typedef struct Reg_PersonalSafetyMessage { + RegionId_t regionId; + struct Reg_PersonalSafetyMessage__regExtValue { + Reg_PersonalSafetyMessage__regExtValue_PR present; + union Reg_PersonalSafetyMessage__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_PersonalSafetyMessage_t; +typedef struct Reg_ProbeDataManagement { + RegionId_t regionId; + struct Reg_ProbeDataManagement__regExtValue { + Reg_ProbeDataManagement__regExtValue_PR present; + union Reg_ProbeDataManagement__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_ProbeDataManagement_t; +typedef struct Reg_ProbeVehicleData { + RegionId_t regionId; + struct Reg_ProbeVehicleData__regExtValue { + Reg_ProbeVehicleData__regExtValue_PR present; + union Reg_ProbeVehicleData__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_ProbeVehicleData_t; +typedef struct Reg_RoadSideAlert { + RegionId_t regionId; + struct Reg_RoadSideAlert__regExtValue { + Reg_RoadSideAlert__regExtValue_PR present; + union Reg_RoadSideAlert__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_RoadSideAlert_t; +typedef struct Reg_RTCMcorrections { + RegionId_t regionId; + struct Reg_RTCMcorrections__regExtValue { + Reg_RTCMcorrections__regExtValue_PR present; + union Reg_RTCMcorrections__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_RTCMcorrections_t; +typedef struct Reg_SignalRequestMessage { + RegionId_t regionId; + struct Reg_SignalRequestMessage__regExtValue { + Reg_SignalRequestMessage__regExtValue_PR present; + union Reg_SignalRequestMessage__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_SignalRequestMessage_t; +typedef struct Reg_RequestorDescription { + RegionId_t regionId; + struct Reg_RequestorDescription__regExtValue { + Reg_RequestorDescription__regExtValue_PR present; + union Reg_RequestorDescription__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_RequestorDescription_t; +typedef struct Reg_SignalRequestPackage { + RegionId_t regionId; + struct Reg_SignalRequestPackage__regExtValue { + Reg_SignalRequestPackage__regExtValue_PR present; + union Reg_SignalRequestPackage__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_SignalRequestPackage_t; +typedef struct Reg_SignalRequest { + RegionId_t regionId; + struct Reg_SignalRequest__regExtValue { + Reg_SignalRequest__regExtValue_PR present; + union Reg_SignalRequest__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_SignalRequest_t; +typedef struct Reg_SignalStatusMessage { + RegionId_t regionId; + struct Reg_SignalStatusMessage__regExtValue { + Reg_SignalStatusMessage__regExtValue_PR present; + union Reg_SignalStatusMessage__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_SignalStatusMessage_t; +typedef struct Reg_SignalStatusPackage { + RegionId_t regionId; + struct Reg_SignalStatusPackage__regExtValue { + Reg_SignalStatusPackage__regExtValue_PR present; + union Reg_SignalStatusPackage__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_SignalStatusPackage_t; +typedef struct Reg_SignalStatus { + RegionId_t regionId; + struct Reg_SignalStatus__regExtValue { + Reg_SignalStatus__regExtValue_PR present; + union Reg_SignalStatus__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_SignalStatus_t; +typedef struct Reg_SPAT { + RegionId_t regionId; + struct Reg_SPAT__regExtValue { + Reg_SPAT__regExtValue_PR present; + union Reg_SPAT__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_SPAT_t; +typedef struct Reg_AdvisorySpeed { + RegionId_t regionId; + struct Reg_AdvisorySpeed__regExtValue { + Reg_AdvisorySpeed__regExtValue_PR present; + union Reg_AdvisorySpeed__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_AdvisorySpeed_t; +typedef struct Reg_ConnectionManeuverAssist { + RegionId_t regionId; + struct Reg_ConnectionManeuverAssist__regExtValue { + Reg_ConnectionManeuverAssist__regExtValue_PR present; + union Reg_ConnectionManeuverAssist__regExtValue_u { + ConnectionManeuverAssist_addGrpC_t ConnectionManeuverAssist_addGrpC; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_ConnectionManeuverAssist_t; +typedef struct Reg_IntersectionState { + RegionId_t regionId; + struct Reg_IntersectionState__regExtValue { + Reg_IntersectionState__regExtValue_PR present; + union Reg_IntersectionState__regExtValue_u { + IntersectionState_addGrpC_t IntersectionState_addGrpC; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_IntersectionState_t; +typedef struct Reg_MovementEvent { + RegionId_t regionId; + struct Reg_MovementEvent__regExtValue { + Reg_MovementEvent__regExtValue_PR present; + union Reg_MovementEvent__regExtValue_u { + MovementEvent_addGrpB_t MovementEvent_addGrpB; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_MovementEvent_t; +typedef struct Reg_MovementState { + RegionId_t regionId; + struct Reg_MovementState__regExtValue { + Reg_MovementState__regExtValue_PR present; + union Reg_MovementState__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_MovementState_t; +typedef struct Reg_TestMessage00 { + RegionId_t regionId; + struct Reg_TestMessage00__regExtValue { + Reg_TestMessage00__regExtValue_PR present; + union Reg_TestMessage00__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage00_t; +typedef struct Reg_TestMessage01 { + RegionId_t regionId; + struct Reg_TestMessage01__regExtValue { + Reg_TestMessage01__regExtValue_PR present; + union Reg_TestMessage01__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage01_t; +typedef struct Reg_TestMessage02 { + RegionId_t regionId; + struct Reg_TestMessage02__regExtValue { + Reg_TestMessage02__regExtValue_PR present; + union Reg_TestMessage02__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage02_t; +typedef struct Reg_TestMessage03 { + RegionId_t regionId; + struct Reg_TestMessage03__regExtValue { + Reg_TestMessage03__regExtValue_PR present; + union Reg_TestMessage03__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage03_t; +typedef struct Reg_TestMessage04 { + RegionId_t regionId; + struct Reg_TestMessage04__regExtValue { + Reg_TestMessage04__regExtValue_PR present; + union Reg_TestMessage04__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage04_t; +typedef struct Reg_TestMessage05 { + RegionId_t regionId; + struct Reg_TestMessage05__regExtValue { + Reg_TestMessage05__regExtValue_PR present; + union Reg_TestMessage05__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage05_t; +typedef struct Reg_TestMessage06 { + RegionId_t regionId; + struct Reg_TestMessage06__regExtValue { + Reg_TestMessage06__regExtValue_PR present; + union Reg_TestMessage06__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage06_t; +typedef struct Reg_TestMessage07 { + RegionId_t regionId; + struct Reg_TestMessage07__regExtValue { + Reg_TestMessage07__regExtValue_PR present; + union Reg_TestMessage07__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage07_t; +typedef struct Reg_TestMessage08 { + RegionId_t regionId; + struct Reg_TestMessage08__regExtValue { + Reg_TestMessage08__regExtValue_PR present; + union Reg_TestMessage08__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage08_t; +typedef struct Reg_TestMessage09 { + RegionId_t regionId; + struct Reg_TestMessage09__regExtValue { + Reg_TestMessage09__regExtValue_PR present; + union Reg_TestMessage09__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage09_t; +typedef struct Reg_TestMessage10 { + RegionId_t regionId; + struct Reg_TestMessage10__regExtValue { + Reg_TestMessage10__regExtValue_PR present; + union Reg_TestMessage10__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage10_t; +typedef struct Reg_TestMessage11 { + RegionId_t regionId; + struct Reg_TestMessage11__regExtValue { + Reg_TestMessage11__regExtValue_PR present; + union Reg_TestMessage11__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage11_t; +typedef struct Reg_TestMessage12 { + RegionId_t regionId; + struct Reg_TestMessage12__regExtValue { + Reg_TestMessage12__regExtValue_PR present; + union Reg_TestMessage12__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage12_t; +typedef struct Reg_TestMessage13 { + RegionId_t regionId; + struct Reg_TestMessage13__regExtValue { + Reg_TestMessage13__regExtValue_PR present; + union Reg_TestMessage13__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage13_t; +typedef struct Reg_TestMessage14 { + RegionId_t regionId; + struct Reg_TestMessage14__regExtValue { + Reg_TestMessage14__regExtValue_PR present; + union Reg_TestMessage14__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage14_t; +typedef struct Reg_TestMessage15 { + RegionId_t regionId; + struct Reg_TestMessage15__regExtValue { + Reg_TestMessage15__regExtValue_PR present; + union Reg_TestMessage15__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TestMessage15_t; +typedef struct Reg_TravelerInformation { + RegionId_t regionId; + struct Reg_TravelerInformation__regExtValue { + Reg_TravelerInformation__regExtValue_PR present; + union Reg_TravelerInformation__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_TravelerInformation_t; +typedef struct Reg_GeographicalPath { + RegionId_t regionId; + struct Reg_GeographicalPath__regExtValue { + Reg_GeographicalPath__regExtValue_PR present; + union Reg_GeographicalPath__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_GeographicalPath_t; +typedef struct Reg_GeometricProjection { + RegionId_t regionId; + struct Reg_GeometricProjection__regExtValue { + Reg_GeometricProjection__regExtValue_PR present; + union Reg_GeometricProjection__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_GeometricProjection_t; +typedef struct Reg_NodeAttributeSetLL { + RegionId_t regionId; + struct Reg_NodeAttributeSetLL__regExtValue { + Reg_NodeAttributeSetLL__regExtValue_PR present; + union Reg_NodeAttributeSetLL__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_NodeAttributeSetLL_t; +typedef struct Reg_NodeOffsetPointLL { + RegionId_t regionId; + struct Reg_NodeOffsetPointLL__regExtValue { + Reg_NodeOffsetPointLL__regExtValue_PR present; + union Reg_NodeOffsetPointLL__regExtValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regExtValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Reg_NodeOffsetPointLL_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Reg_BasicSafetyMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_BasicSafetyMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_Reg_BasicSafetyMessage_1[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_EventDescription; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_EventDescription_specs_4; +extern asn_TYPE_member_t asn_MBR_Reg_EventDescription_4[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_SupplementalVehicleExtensions; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_SupplementalVehicleExtensions_specs_7; +extern asn_TYPE_member_t asn_MBR_Reg_SupplementalVehicleExtensions_7[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_ComputedLane; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_ComputedLane_specs_10; +extern asn_TYPE_member_t asn_MBR_Reg_ComputedLane_10[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_LaneDataAttribute; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_LaneDataAttribute_specs_13; +extern asn_TYPE_member_t asn_MBR_Reg_LaneDataAttribute_13[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_NodeAttributeSetXY; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_NodeAttributeSetXY_specs_16; +extern asn_TYPE_member_t asn_MBR_Reg_NodeAttributeSetXY_16[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_NodeOffsetPointXY; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_NodeOffsetPointXY_specs_19; +extern asn_TYPE_member_t asn_MBR_Reg_NodeOffsetPointXY_19[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_Position3D; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_Position3D_specs_22; +extern asn_TYPE_member_t asn_MBR_Reg_Position3D_22[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_RequestorType; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_RequestorType_specs_25; +extern asn_TYPE_member_t asn_MBR_Reg_RequestorType_25[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_VehicleClassification; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_VehicleClassification_specs_28; +extern asn_TYPE_member_t asn_MBR_Reg_VehicleClassification_28[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_VerticalOffset; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_VerticalOffset_specs_31; +extern asn_TYPE_member_t asn_MBR_Reg_VerticalOffset_31[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_CommonSafetyRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_CommonSafetyRequest_specs_34; +extern asn_TYPE_member_t asn_MBR_Reg_CommonSafetyRequest_34[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_EmergencyVehicleAlert; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_EmergencyVehicleAlert_specs_37; +extern asn_TYPE_member_t asn_MBR_Reg_EmergencyVehicleAlert_37[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_IntersectionCollision; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_IntersectionCollision_specs_40; +extern asn_TYPE_member_t asn_MBR_Reg_IntersectionCollision_40[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_MapData; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_MapData_specs_43; +extern asn_TYPE_member_t asn_MBR_Reg_MapData_43[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_GenericLane; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_GenericLane_specs_46; +extern asn_TYPE_member_t asn_MBR_Reg_GenericLane_46[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_IntersectionGeometry; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_IntersectionGeometry_specs_49; +extern asn_TYPE_member_t asn_MBR_Reg_IntersectionGeometry_49[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_LaneAttributes; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_LaneAttributes_specs_52; +extern asn_TYPE_member_t asn_MBR_Reg_LaneAttributes_52[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_SignalControlZone; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalControlZone_specs_55; +extern asn_TYPE_member_t asn_MBR_Reg_SignalControlZone_55[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_RestrictionUserType; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_RestrictionUserType_specs_58; +extern asn_TYPE_member_t asn_MBR_Reg_RestrictionUserType_58[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_RoadSegment; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_RoadSegment_specs_61; +extern asn_TYPE_member_t asn_MBR_Reg_RoadSegment_61[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_NMEAcorrections; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_NMEAcorrections_specs_64; +extern asn_TYPE_member_t asn_MBR_Reg_NMEAcorrections_64[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_PersonalSafetyMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_PersonalSafetyMessage_specs_67; +extern asn_TYPE_member_t asn_MBR_Reg_PersonalSafetyMessage_67[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_ProbeDataManagement; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_ProbeDataManagement_specs_70; +extern asn_TYPE_member_t asn_MBR_Reg_ProbeDataManagement_70[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_ProbeVehicleData; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_ProbeVehicleData_specs_73; +extern asn_TYPE_member_t asn_MBR_Reg_ProbeVehicleData_73[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_RoadSideAlert; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_RoadSideAlert_specs_76; +extern asn_TYPE_member_t asn_MBR_Reg_RoadSideAlert_76[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_RTCMcorrections; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_RTCMcorrections_specs_79; +extern asn_TYPE_member_t asn_MBR_Reg_RTCMcorrections_79[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_SignalRequestMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalRequestMessage_specs_82; +extern asn_TYPE_member_t asn_MBR_Reg_SignalRequestMessage_82[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_RequestorDescription; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_RequestorDescription_specs_85; +extern asn_TYPE_member_t asn_MBR_Reg_RequestorDescription_85[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_SignalRequestPackage; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalRequestPackage_specs_88; +extern asn_TYPE_member_t asn_MBR_Reg_SignalRequestPackage_88[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_SignalRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalRequest_specs_91; +extern asn_TYPE_member_t asn_MBR_Reg_SignalRequest_91[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_SignalStatusMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalStatusMessage_specs_94; +extern asn_TYPE_member_t asn_MBR_Reg_SignalStatusMessage_94[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_SignalStatusPackage; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalStatusPackage_specs_97; +extern asn_TYPE_member_t asn_MBR_Reg_SignalStatusPackage_97[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_SignalStatus; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalStatus_specs_100; +extern asn_TYPE_member_t asn_MBR_Reg_SignalStatus_100[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_SPAT; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_SPAT_specs_103; +extern asn_TYPE_member_t asn_MBR_Reg_SPAT_103[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_AdvisorySpeed; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_AdvisorySpeed_specs_106; +extern asn_TYPE_member_t asn_MBR_Reg_AdvisorySpeed_106[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_ConnectionManeuverAssist; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_ConnectionManeuverAssist_specs_109; +extern asn_TYPE_member_t asn_MBR_Reg_ConnectionManeuverAssist_109[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_IntersectionState; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_IntersectionState_specs_112; +extern asn_TYPE_member_t asn_MBR_Reg_IntersectionState_112[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_MovementEvent; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_MovementEvent_specs_115; +extern asn_TYPE_member_t asn_MBR_Reg_MovementEvent_115[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_MovementState; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_MovementState_specs_118; +extern asn_TYPE_member_t asn_MBR_Reg_MovementState_118[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage00; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage00_specs_121; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage00_121[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage01; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage01_specs_124; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage01_124[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage02; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage02_specs_127; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage02_127[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage03; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage03_specs_130; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage03_130[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage04; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage04_specs_133; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage04_133[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage05; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage05_specs_136; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage05_136[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage06; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage06_specs_139; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage06_139[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage07; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage07_specs_142; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage07_142[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage08; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage08_specs_145; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage08_145[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage09; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage09_specs_148; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage09_148[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage10; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage10_specs_151; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage10_151[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage11; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage11_specs_154; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage11_154[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage12; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage12_specs_157; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage12_157[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage13; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage13_specs_160; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage13_160[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage14; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage14_specs_163; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage14_163[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage15; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage15_specs_166; +extern asn_TYPE_member_t asn_MBR_Reg_TestMessage15_166[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_TravelerInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_TravelerInformation_specs_169; +extern asn_TYPE_member_t asn_MBR_Reg_TravelerInformation_169[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_GeographicalPath; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_GeographicalPath_specs_172; +extern asn_TYPE_member_t asn_MBR_Reg_GeographicalPath_172[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_GeometricProjection; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_GeometricProjection_specs_175; +extern asn_TYPE_member_t asn_MBR_Reg_GeometricProjection_175[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_NodeAttributeSetLL; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_NodeAttributeSetLL_specs_178; +extern asn_TYPE_member_t asn_MBR_Reg_NodeAttributeSetLL_178[2]; +extern asn_TYPE_descriptor_t asn_DEF_Reg_NodeOffsetPointLL; +extern asn_SEQUENCE_specifics_t asn_SPC_Reg_NodeOffsetPointLL_specs_181; +extern asn_TYPE_member_t asn_MBR_Reg_NodeOffsetPointLL_181[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RegionalExtension_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegulatorySpeedLimit.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegulatorySpeedLimit.h new file mode 100644 index 000000000..9af1c9ac3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RegulatorySpeedLimit.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RegulatorySpeedLimit_H_ +#define _RegulatorySpeedLimit_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SpeedLimitType.h" +#include "Velocity.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RegulatorySpeedLimit */ +typedef struct RegulatorySpeedLimit { + SpeedLimitType_t type; + Velocity_t speed; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RegulatorySpeedLimit_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RegulatorySpeedLimit; +extern asn_SEQUENCE_specifics_t asn_SPC_RegulatorySpeedLimit_specs_1; +extern asn_TYPE_member_t asn_MBR_RegulatorySpeedLimit_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RegulatorySpeedLimit_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RepeatParams.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RepeatParams.h new file mode 100644 index 000000000..6f840bae7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RepeatParams.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _RepeatParams_H_ +#define _RepeatParams_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RepeatParams */ +typedef struct RepeatParams { + long offset; + long period; + long span; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RepeatParams_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RepeatParams; +extern asn_SEQUENCE_specifics_t asn_SPC_RepeatParams_specs_1; +extern asn_TYPE_member_t asn_MBR_RepeatParams_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RepeatParams_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestID.h new file mode 100644 index 000000000..da105e8cd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RequestID_H_ +#define _RequestID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RequestID */ +typedef long RequestID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RequestID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RequestID; +asn_struct_free_f RequestID_free; +asn_struct_print_f RequestID_print; +asn_constr_check_f RequestID_constraint; +ber_type_decoder_f RequestID_decode_ber; +der_type_encoder_f RequestID_encode_der; +xer_type_decoder_f RequestID_decode_xer; +xer_type_encoder_f RequestID_encode_xer; +oer_type_decoder_f RequestID_decode_oer; +oer_type_encoder_f RequestID_encode_oer; +per_type_decoder_f RequestID_decode_uper; +per_type_encoder_f RequestID_encode_uper; +per_type_decoder_f RequestID_decode_aper; +per_type_encoder_f RequestID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RequestID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestImportanceLevel.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestImportanceLevel.h new file mode 100644 index 000000000..53b511b19 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestImportanceLevel.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RequestImportanceLevel_H_ +#define _RequestImportanceLevel_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RequestImportanceLevel { + RequestImportanceLevel_requestImportanceLevelUnKnown = 0, + RequestImportanceLevel_requestImportanceLevel1 = 1, + RequestImportanceLevel_requestImportanceLevel2 = 2, + RequestImportanceLevel_requestImportanceLevel3 = 3, + RequestImportanceLevel_requestImportanceLevel4 = 4, + RequestImportanceLevel_requestImportanceLevel5 = 5, + RequestImportanceLevel_requestImportanceLevel6 = 6, + RequestImportanceLevel_requestImportanceLevel7 = 7, + RequestImportanceLevel_requestImportanceLevel8 = 8, + RequestImportanceLevel_requestImportanceLevel9 = 9, + RequestImportanceLevel_requestImportanceLevel10 = 10, + RequestImportanceLevel_requestImportanceLevel11 = 11, + RequestImportanceLevel_requestImportanceLevel12 = 12, + RequestImportanceLevel_requestImportanceLevel13 = 13, + RequestImportanceLevel_requestImportanceLevel14 = 14, + RequestImportanceLevel_requestImportanceReserved = 15 +} e_RequestImportanceLevel; + +/* RequestImportanceLevel */ +typedef long RequestImportanceLevel_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RequestImportanceLevel_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RequestImportanceLevel; +extern const asn_INTEGER_specifics_t asn_SPC_RequestImportanceLevel_specs_1; +asn_struct_free_f RequestImportanceLevel_free; +asn_struct_print_f RequestImportanceLevel_print; +asn_constr_check_f RequestImportanceLevel_constraint; +ber_type_decoder_f RequestImportanceLevel_decode_ber; +der_type_encoder_f RequestImportanceLevel_encode_der; +xer_type_decoder_f RequestImportanceLevel_decode_xer; +xer_type_encoder_f RequestImportanceLevel_encode_xer; +oer_type_decoder_f RequestImportanceLevel_decode_oer; +oer_type_encoder_f RequestImportanceLevel_encode_oer; +per_type_decoder_f RequestImportanceLevel_decode_uper; +per_type_encoder_f RequestImportanceLevel_encode_uper; +per_type_decoder_f RequestImportanceLevel_decode_aper; +per_type_encoder_f RequestImportanceLevel_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RequestImportanceLevel_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestSubRole.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestSubRole.h new file mode 100644 index 000000000..b0a1ad5a6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestSubRole.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RequestSubRole_H_ +#define _RequestSubRole_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RequestSubRole { + RequestSubRole_requestSubRoleUnKnown = 0, + RequestSubRole_requestSubRole1 = 1, + RequestSubRole_requestSubRole2 = 2, + RequestSubRole_requestSubRole3 = 3, + RequestSubRole_requestSubRole4 = 4, + RequestSubRole_requestSubRole5 = 5, + RequestSubRole_requestSubRole6 = 6, + RequestSubRole_requestSubRole7 = 7, + RequestSubRole_requestSubRole8 = 8, + RequestSubRole_requestSubRole9 = 9, + RequestSubRole_requestSubRole10 = 10, + RequestSubRole_requestSubRole11 = 11, + RequestSubRole_requestSubRole12 = 12, + RequestSubRole_requestSubRole13 = 13, + RequestSubRole_requestSubRole14 = 14, + RequestSubRole_requestSubRoleReserved = 15 +} e_RequestSubRole; + +/* RequestSubRole */ +typedef long RequestSubRole_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RequestSubRole_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RequestSubRole; +extern const asn_INTEGER_specifics_t asn_SPC_RequestSubRole_specs_1; +asn_struct_free_f RequestSubRole_free; +asn_struct_print_f RequestSubRole_print; +asn_constr_check_f RequestSubRole_constraint; +ber_type_decoder_f RequestSubRole_decode_ber; +der_type_encoder_f RequestSubRole_encode_der; +xer_type_decoder_f RequestSubRole_decode_xer; +xer_type_encoder_f RequestSubRole_encode_xer; +oer_type_decoder_f RequestSubRole_decode_oer; +oer_type_encoder_f RequestSubRole_encode_oer; +per_type_decoder_f RequestSubRole_decode_uper; +per_type_encoder_f RequestSubRole_encode_uper; +per_type_decoder_f RequestSubRole_decode_aper; +per_type_encoder_f RequestSubRole_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RequestSubRole_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestedItem.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestedItem.h new file mode 100644 index 000000000..2ce205b78 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestedItem.h @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "CommonSafetyRequest" + * found in "J2735-CommonSafetyRequest.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RequestedItem_H_ +#define _RequestedItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RequestedItem { + RequestedItem_reserved = 0, + RequestedItem_itemA = 1, + RequestedItem_itemB = 2, + RequestedItem_itemC = 3, + RequestedItem_itemD = 4, + RequestedItem_itemE = 5, + RequestedItem_itemF = 6, + RequestedItem_itemG = 7, + RequestedItem_itemI = 8, + RequestedItem_itemJ = 9, + RequestedItem_itemK = 10, + RequestedItem_itemL = 11, + RequestedItem_itemM = 12, + RequestedItem_itemN = 13, + RequestedItem_itemO = 14, + RequestedItem_itemP = 15, + RequestedItem_itemQ = 16 + /* + * Enumeration is extensible + */ +} e_RequestedItem; + +/* RequestedItem */ +typedef long RequestedItem_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RequestedItem_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RequestedItem; +extern const asn_INTEGER_specifics_t asn_SPC_RequestedItem_specs_1; +asn_struct_free_f RequestedItem_free; +asn_struct_print_f RequestedItem_print; +asn_constr_check_f RequestedItem_constraint; +ber_type_decoder_f RequestedItem_decode_ber; +der_type_encoder_f RequestedItem_encode_der; +xer_type_decoder_f RequestedItem_decode_xer; +xer_type_encoder_f RequestedItem_encode_xer; +oer_type_decoder_f RequestedItem_decode_oer; +oer_type_encoder_f RequestedItem_encode_oer; +per_type_decoder_f RequestedItem_decode_uper; +per_type_encoder_f RequestedItem_encode_uper; +per_type_decoder_f RequestedItem_decode_aper; +per_type_encoder_f RequestedItem_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RequestedItem_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestedItemList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestedItemList.h new file mode 100644 index 000000000..e7c8c0ec3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestedItemList.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "CommonSafetyRequest" + * found in "J2735-CommonSafetyRequest.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RequestedItemList_H_ +#define _RequestedItemList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RequestedItem.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RequestedItemList */ +typedef struct RequestedItemList { + A_SEQUENCE_OF(RequestedItem_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RequestedItemList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RequestedItemList; +extern asn_SET_OF_specifics_t asn_SPC_RequestedItemList_specs_1; +extern asn_TYPE_member_t asn_MBR_RequestedItemList_1[1]; +extern asn_per_constraints_t asn_PER_type_RequestedItemList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RequestedItemList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestorDescription.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestorDescription.h new file mode 100644 index 000000000..a7d033d25 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestorDescription.h @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RequestorDescription_H_ +#define _RequestorDescription_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "VehicleID.h" +#include "DescriptiveName.h" +#include "TransitVehicleStatus.h" +#include "TransitVehicleOccupancy.h" +#include "DeltaTime.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RequestorType; +struct RequestorPositionVector; +struct Reg_RequestorDescription; + +/* RequestorDescription */ +typedef struct RequestorDescription { + VehicleID_t id; + struct RequestorType *type; /* OPTIONAL */ + struct RequestorPositionVector *position; /* OPTIONAL */ + DescriptiveName_t *name; /* OPTIONAL */ + DescriptiveName_t *routeName; /* OPTIONAL */ + TransitVehicleStatus_t *transitStatus; /* OPTIONAL */ + TransitVehicleOccupancy_t *transitOccupancy; /* OPTIONAL */ + DeltaTime_t *transitSchedule; /* OPTIONAL */ + struct RequestorDescription__regional { + A_SEQUENCE_OF(struct Reg_RequestorDescription) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RequestorDescription_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RequestorDescription; +extern asn_SEQUENCE_specifics_t asn_SPC_RequestorDescription_specs_1; +extern asn_TYPE_member_t asn_MBR_RequestorDescription_1[9]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RequestorType.h" +#include "RequestorPositionVector.h" +#include "RegionalExtension.h" + +#endif /* _RequestorDescription_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestorPositionVector.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestorPositionVector.h new file mode 100644 index 000000000..02ba57874 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestorPositionVector.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RequestorPositionVector_H_ +#define _RequestorPositionVector_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Position3D.h" +#include "Common_Angle.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TransmissionAndSpeed; + +/* RequestorPositionVector */ +typedef struct RequestorPositionVector { + Position3D_t position; + Common_Angle_t *heading; /* OPTIONAL */ + struct TransmissionAndSpeed *speed; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RequestorPositionVector_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RequestorPositionVector; +extern asn_SEQUENCE_specifics_t asn_SPC_RequestorPositionVector_specs_1; +extern asn_TYPE_member_t asn_MBR_RequestorPositionVector_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "TransmissionAndSpeed.h" + +#endif /* _RequestorPositionVector_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestorType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestorType.h new file mode 100644 index 000000000..76eb34fe1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RequestorType.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RequestorType_H_ +#define _RequestorType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BasicVehicleRole.h" +#include "RequestSubRole.h" +#include "RequestImportanceLevel.h" +#include "Iso3833VehicleType.h" +#include "VehicleType.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_RequestorType; + +/* RequestorType */ +typedef struct RequestorType { + BasicVehicleRole_t role; + RequestSubRole_t *subrole; /* OPTIONAL */ + RequestImportanceLevel_t *request; /* OPTIONAL */ + Iso3833VehicleType_t *iso3883; /* OPTIONAL */ + VehicleType_t *hpmsType; /* OPTIONAL */ + struct Reg_RequestorType *regional; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RequestorType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RequestorType; +extern asn_SEQUENCE_specifics_t asn_SPC_RequestorType_specs_1; +extern asn_TYPE_member_t asn_MBR_RequestorType_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _RequestorType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ResponderGroupAffected.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ResponderGroupAffected.h new file mode 100644 index 000000000..328ee2d5a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ResponderGroupAffected.h @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ResponderGroupAffected_H_ +#define _ResponderGroupAffected_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ResponderGroupAffected { + ResponderGroupAffected_emergency_vehicle_units = 9729, + ResponderGroupAffected_federal_law_enforcement_units = 9730, + ResponderGroupAffected_state_police_units = 9731, + ResponderGroupAffected_county_police_units = 9732, + ResponderGroupAffected_local_police_units = 9733, + ResponderGroupAffected_ambulance_units = 9734, + ResponderGroupAffected_rescue_units = 9735, + ResponderGroupAffected_fire_units = 9736, + ResponderGroupAffected_hAZMAT_units = 9737, + ResponderGroupAffected_light_tow_unit = 9738, + ResponderGroupAffected_heavy_tow_unit = 9739, + ResponderGroupAffected_freeway_service_patrols = 9740, + ResponderGroupAffected_transportation_response_units = 9741, + ResponderGroupAffected_private_contractor_response_units = 9742 + /* + * Enumeration is extensible + */ +} e_ResponderGroupAffected; + +/* ResponderGroupAffected */ +typedef long ResponderGroupAffected_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ResponderGroupAffected_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ResponderGroupAffected; +extern const asn_INTEGER_specifics_t asn_SPC_ResponderGroupAffected_specs_1; +asn_struct_free_f ResponderGroupAffected_free; +asn_struct_print_f ResponderGroupAffected_print; +asn_constr_check_f ResponderGroupAffected_constraint; +ber_type_decoder_f ResponderGroupAffected_decode_ber; +der_type_encoder_f ResponderGroupAffected_encode_der; +xer_type_decoder_f ResponderGroupAffected_decode_xer; +xer_type_encoder_f ResponderGroupAffected_encode_xer; +oer_type_decoder_f ResponderGroupAffected_decode_oer; +oer_type_encoder_f ResponderGroupAffected_encode_oer; +per_type_decoder_f ResponderGroupAffected_decode_uper; +per_type_encoder_f ResponderGroupAffected_encode_uper; +per_type_decoder_f ResponderGroupAffected_decode_aper; +per_type_encoder_f ResponderGroupAffected_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponderGroupAffected_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ResponseType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ResponseType.h new file mode 100644 index 000000000..65580dc8e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ResponseType.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ResponseType_H_ +#define _ResponseType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ResponseType { + ResponseType_notInUseOrNotEquipped = 0, + ResponseType_emergency = 1, + ResponseType_nonEmergency = 2, + ResponseType_pursuit = 3, + ResponseType_stationary = 4, + ResponseType_slowMoving = 5, + ResponseType_stopAndGoMovement = 6 + /* + * Enumeration is extensible + */ +} e_ResponseType; + +/* ResponseType */ +typedef long ResponseType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ResponseType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ResponseType; +extern const asn_INTEGER_specifics_t asn_SPC_ResponseType_specs_1; +asn_struct_free_f ResponseType_free; +asn_struct_print_f ResponseType_print; +asn_constr_check_f ResponseType_constraint; +ber_type_decoder_f ResponseType_decode_ber; +der_type_encoder_f ResponseType_encode_der; +xer_type_decoder_f ResponseType_decode_xer; +xer_type_encoder_f ResponseType_encode_xer; +oer_type_decoder_f ResponseType_decode_oer; +oer_type_encoder_f ResponseType_encode_oer; +per_type_decoder_f ResponseType_decode_uper; +per_type_encoder_f ResponseType_encode_uper; +per_type_decoder_f ResponseType_decode_aper; +per_type_encoder_f ResponseType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionAppliesTo.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionAppliesTo.h new file mode 100644 index 000000000..4f4860fed --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionAppliesTo.h @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RestrictionAppliesTo_H_ +#define _RestrictionAppliesTo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RestrictionAppliesTo { + RestrictionAppliesTo_none = 0, + RestrictionAppliesTo_equippedTransit = 1, + RestrictionAppliesTo_equippedTaxis = 2, + RestrictionAppliesTo_equippedOther = 3, + RestrictionAppliesTo_emissionCompliant = 4, + RestrictionAppliesTo_equippedBicycle = 5, + RestrictionAppliesTo_weightCompliant = 6, + RestrictionAppliesTo_heightCompliant = 7, + RestrictionAppliesTo_pedestrians = 8, + RestrictionAppliesTo_slowMovingPersons = 9, + RestrictionAppliesTo_wheelchairUsers = 10, + RestrictionAppliesTo_visualDisabilities = 11, + RestrictionAppliesTo_audioDisabilities = 12, + RestrictionAppliesTo_otherUnknownDisabilities = 13 + /* + * Enumeration is extensible + */ +} e_RestrictionAppliesTo; + +/* RestrictionAppliesTo */ +typedef long RestrictionAppliesTo_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RestrictionAppliesTo_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RestrictionAppliesTo; +extern const asn_INTEGER_specifics_t asn_SPC_RestrictionAppliesTo_specs_1; +asn_struct_free_f RestrictionAppliesTo_free; +asn_struct_print_f RestrictionAppliesTo_print; +asn_constr_check_f RestrictionAppliesTo_constraint; +ber_type_decoder_f RestrictionAppliesTo_decode_ber; +der_type_encoder_f RestrictionAppliesTo_encode_der; +xer_type_decoder_f RestrictionAppliesTo_decode_xer; +xer_type_encoder_f RestrictionAppliesTo_encode_xer; +oer_type_decoder_f RestrictionAppliesTo_decode_oer; +oer_type_encoder_f RestrictionAppliesTo_encode_oer; +per_type_decoder_f RestrictionAppliesTo_decode_uper; +per_type_encoder_f RestrictionAppliesTo_encode_uper; +per_type_decoder_f RestrictionAppliesTo_decode_aper; +per_type_encoder_f RestrictionAppliesTo_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RestrictionAppliesTo_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionClassAssignment.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionClassAssignment.h new file mode 100644 index 000000000..c8c2c6ad6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionClassAssignment.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RestrictionClassAssignment_H_ +#define _RestrictionClassAssignment_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RestrictionClassID.h" +#include "RestrictionUserTypeList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RestrictionClassAssignment */ +typedef struct RestrictionClassAssignment { + RestrictionClassID_t id; + RestrictionUserTypeList_t users; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RestrictionClassAssignment_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RestrictionClassAssignment; +extern asn_SEQUENCE_specifics_t asn_SPC_RestrictionClassAssignment_specs_1; +extern asn_TYPE_member_t asn_MBR_RestrictionClassAssignment_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RestrictionClassAssignment_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionClassID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionClassID.h new file mode 100644 index 000000000..d64770abd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionClassID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RestrictionClassID_H_ +#define _RestrictionClassID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RestrictionClassID */ +typedef long RestrictionClassID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RestrictionClassID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RestrictionClassID; +asn_struct_free_f RestrictionClassID_free; +asn_struct_print_f RestrictionClassID_print; +asn_constr_check_f RestrictionClassID_constraint; +ber_type_decoder_f RestrictionClassID_decode_ber; +der_type_encoder_f RestrictionClassID_encode_der; +xer_type_decoder_f RestrictionClassID_decode_xer; +xer_type_encoder_f RestrictionClassID_encode_xer; +oer_type_decoder_f RestrictionClassID_decode_oer; +oer_type_encoder_f RestrictionClassID_encode_oer; +per_type_decoder_f RestrictionClassID_decode_uper; +per_type_encoder_f RestrictionClassID_encode_uper; +per_type_decoder_f RestrictionClassID_decode_aper; +per_type_encoder_f RestrictionClassID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RestrictionClassID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionClassList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionClassList.h new file mode 100644 index 000000000..6ec7e8b39 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionClassList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RestrictionClassList_H_ +#define _RestrictionClassList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RestrictionClassAssignment; + +/* RestrictionClassList */ +typedef struct RestrictionClassList { + A_SEQUENCE_OF(struct RestrictionClassAssignment) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RestrictionClassList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RestrictionClassList; +extern asn_SET_OF_specifics_t asn_SPC_RestrictionClassList_specs_1; +extern asn_TYPE_member_t asn_MBR_RestrictionClassList_1[1]; +extern asn_per_constraints_t asn_PER_type_RestrictionClassList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RestrictionClassAssignment.h" + +#endif /* _RestrictionClassList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionUserType-addGrpC.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionUserType-addGrpC.h new file mode 100644 index 000000000..2499eaf47 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionUserType-addGrpC.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RestrictionUserType_addGrpC_H_ +#define _RestrictionUserType_addGrpC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EmissionType.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RestrictionUserType-addGrpC */ +typedef struct RestrictionUserType_addGrpC { + EmissionType_t *emission; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RestrictionUserType_addGrpC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RestrictionUserType_addGrpC; +extern asn_SEQUENCE_specifics_t asn_SPC_RestrictionUserType_addGrpC_specs_1; +extern asn_TYPE_member_t asn_MBR_RestrictionUserType_addGrpC_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RestrictionUserType_addGrpC_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionUserType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionUserType.h new file mode 100644 index 000000000..543388f85 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionUserType.h @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RestrictionUserType_H_ +#define _RestrictionUserType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RestrictionAppliesTo.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RestrictionUserType_PR { + RestrictionUserType_PR_NOTHING, /* No components present */ + RestrictionUserType_PR_basicType, + RestrictionUserType_PR_regional + /* Extensions may appear below */ + +} RestrictionUserType_PR; + +/* Forward declarations */ +struct Reg_RestrictionUserType; + +/* RestrictionUserType */ +typedef struct RestrictionUserType { + RestrictionUserType_PR present; + union RestrictionUserType_u { + RestrictionAppliesTo_t basicType; + struct RestrictionUserType__regional { + A_SEQUENCE_OF(struct Reg_RestrictionUserType) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regional; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RestrictionUserType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RestrictionUserType; +extern asn_CHOICE_specifics_t asn_SPC_RestrictionUserType_specs_1; +extern asn_TYPE_member_t asn_MBR_RestrictionUserType_1[2]; +extern asn_per_constraints_t asn_PER_type_RestrictionUserType_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _RestrictionUserType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionUserTypeList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionUserTypeList.h new file mode 100644 index 000000000..6ea0a43fc --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RestrictionUserTypeList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RestrictionUserTypeList_H_ +#define _RestrictionUserTypeList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RestrictionUserType; + +/* RestrictionUserTypeList */ +typedef struct RestrictionUserTypeList { + A_SEQUENCE_OF(struct RestrictionUserType) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RestrictionUserTypeList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RestrictionUserTypeList; +extern asn_SET_OF_specifics_t asn_SPC_RestrictionUserTypeList_specs_1; +extern asn_TYPE_member_t asn_MBR_RestrictionUserTypeList_1[1]; +extern asn_per_constraints_t asn_PER_type_RestrictionUserTypeList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RestrictionUserType.h" + +#endif /* _RestrictionUserTypeList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadLaneSetList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadLaneSetList.h new file mode 100644 index 000000000..7fd8d542f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadLaneSetList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RoadLaneSetList_H_ +#define _RoadLaneSetList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GenericLane; + +/* RoadLaneSetList */ +typedef struct RoadLaneSetList { + A_SEQUENCE_OF(struct GenericLane) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RoadLaneSetList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RoadLaneSetList; +extern asn_SET_OF_specifics_t asn_SPC_RoadLaneSetList_specs_1; +extern asn_TYPE_member_t asn_MBR_RoadLaneSetList_1[1]; +extern asn_per_constraints_t asn_PER_type_RoadLaneSetList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "GenericLane.h" + +#endif /* _RoadLaneSetList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadRegulatorID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadRegulatorID.h new file mode 100644 index 000000000..00a263685 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadRegulatorID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RoadRegulatorID_H_ +#define _RoadRegulatorID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RoadRegulatorID */ +typedef long RoadRegulatorID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RoadRegulatorID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RoadRegulatorID; +asn_struct_free_f RoadRegulatorID_free; +asn_struct_print_f RoadRegulatorID_print; +asn_constr_check_f RoadRegulatorID_constraint; +ber_type_decoder_f RoadRegulatorID_decode_ber; +der_type_encoder_f RoadRegulatorID_encode_der; +xer_type_decoder_f RoadRegulatorID_decode_xer; +xer_type_encoder_f RoadRegulatorID_encode_xer; +oer_type_decoder_f RoadRegulatorID_decode_oer; +oer_type_encoder_f RoadRegulatorID_encode_oer; +per_type_decoder_f RoadRegulatorID_decode_uper; +per_type_encoder_f RoadRegulatorID_encode_uper; +per_type_decoder_f RoadRegulatorID_decode_aper; +per_type_encoder_f RoadRegulatorID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RoadRegulatorID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegment.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegment.h new file mode 100644 index 000000000..8a29ded87 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegment.h @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RoadSegment_H_ +#define _RoadSegment_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DescriptiveName.h" +#include "RoadSegmentReferenceID.h" +#include "Common_MsgCount.h" +#include "Position3D.h" +#include "LaneWidth.h" +#include "RoadLaneSetList.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SpeedLimitList; +struct Reg_RoadSegment; + +/* RoadSegment */ +typedef struct RoadSegment { + DescriptiveName_t *name; /* OPTIONAL */ + RoadSegmentReferenceID_t id; + Common_MsgCount_t revision; + Position3D_t refPoint; + LaneWidth_t *laneWidth; /* OPTIONAL */ + struct SpeedLimitList *speedLimits; /* OPTIONAL */ + RoadLaneSetList_t roadLaneSet; + struct RoadSegment__regional { + A_SEQUENCE_OF(struct Reg_RoadSegment) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RoadSegment_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RoadSegment; +extern asn_SEQUENCE_specifics_t asn_SPC_RoadSegment_specs_1; +extern asn_TYPE_member_t asn_MBR_RoadSegment_1[8]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "SpeedLimitList.h" +#include "RegionalExtension.h" + +#endif /* _RoadSegment_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegmentID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegmentID.h new file mode 100644 index 000000000..b230c1564 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegmentID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RoadSegmentID_H_ +#define _RoadSegmentID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RoadSegmentID */ +typedef long RoadSegmentID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RoadSegmentID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RoadSegmentID; +asn_struct_free_f RoadSegmentID_free; +asn_struct_print_f RoadSegmentID_print; +asn_constr_check_f RoadSegmentID_constraint; +ber_type_decoder_f RoadSegmentID_decode_ber; +der_type_encoder_f RoadSegmentID_encode_der; +xer_type_decoder_f RoadSegmentID_decode_xer; +xer_type_encoder_f RoadSegmentID_encode_xer; +oer_type_decoder_f RoadSegmentID_decode_oer; +oer_type_encoder_f RoadSegmentID_encode_oer; +per_type_decoder_f RoadSegmentID_decode_uper; +per_type_encoder_f RoadSegmentID_encode_uper; +per_type_decoder_f RoadSegmentID_decode_aper; +per_type_encoder_f RoadSegmentID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RoadSegmentID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegmentList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegmentList.h new file mode 100644 index 000000000..9cbcd8573 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegmentList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RoadSegmentList_H_ +#define _RoadSegmentList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RoadSegment; + +/* RoadSegmentList */ +typedef struct RoadSegmentList { + A_SEQUENCE_OF(struct RoadSegment) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RoadSegmentList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RoadSegmentList; +extern asn_SET_OF_specifics_t asn_SPC_RoadSegmentList_specs_1; +extern asn_TYPE_member_t asn_MBR_RoadSegmentList_1[1]; +extern asn_per_constraints_t asn_PER_type_RoadSegmentList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RoadSegment.h" + +#endif /* _RoadSegmentList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegmentReferenceID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegmentReferenceID.h new file mode 100644 index 000000000..d72cb7317 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSegmentReferenceID.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RoadSegmentReferenceID_H_ +#define _RoadSegmentReferenceID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RoadRegulatorID.h" +#include "RoadSegmentID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RoadSegmentReferenceID */ +typedef struct RoadSegmentReferenceID { + RoadRegulatorID_t *region; /* OPTIONAL */ + RoadSegmentID_t id; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RoadSegmentReferenceID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RoadSegmentReferenceID; +extern asn_SEQUENCE_specifics_t asn_SPC_RoadSegmentReferenceID_specs_1; +extern asn_TYPE_member_t asn_MBR_RoadSegmentReferenceID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RoadSegmentReferenceID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSideAlert.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSideAlert.h new file mode 100644 index 000000000..7e7cb0987 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSideAlert.h @@ -0,0 +1,79 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "RoadSideAlert" + * found in "J2735-RoadSideAlert.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RoadSideAlert_H_ +#define _RoadSideAlert_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Common_MsgCount.h" +#include "MinuteOfTheYear.h" +#include "ITIScodes.h" +#include "Priority.h" +#include "HeadingSlice.h" +#include "Extent.h" +#include "FurtherInfoID.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct FullPositionVector; +struct Reg_RoadSideAlert; + +/* RoadSideAlert */ +typedef struct RoadSideAlert { + Common_MsgCount_t msgCnt; + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + ITIScodes_t typeEvent; + struct RoadSideAlert__description { + A_SEQUENCE_OF(ITIScodes_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *description; + Priority_t *priority; /* OPTIONAL */ + HeadingSlice_t *heading; /* OPTIONAL */ + Extent_t *extent; /* OPTIONAL */ + struct FullPositionVector *position; /* OPTIONAL */ + FurtherInfoID_t *furtherInfoID; /* OPTIONAL */ + struct RoadSideAlert__regional { + A_SEQUENCE_OF(struct Reg_RoadSideAlert) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RoadSideAlert_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RoadSideAlert; +extern asn_SEQUENCE_specifics_t asn_SPC_RoadSideAlert_specs_1; +extern asn_TYPE_member_t asn_MBR_RoadSideAlert_1[10]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "FullPositionVector.h" +#include "RegionalExtension.h" + +#endif /* _RoadSideAlert_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSignID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSignID.h new file mode 100644 index 000000000..c98a0fc96 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadSignID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RoadSignID_H_ +#define _RoadSignID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Position3D.h" +#include "HeadingSlice.h" +#include "MUTCDCode.h" +#include "MsgCRC.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RoadSignID */ +typedef struct RoadSignID { + Position3D_t position; + HeadingSlice_t viewAngle; + MUTCDCode_t *mutcdCode; /* OPTIONAL */ + MsgCRC_t *crc; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RoadSignID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RoadSignID; +extern asn_SEQUENCE_specifics_t asn_SPC_RoadSignID_specs_1; +extern asn_TYPE_member_t asn_MBR_RoadSignID_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RoadSignID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadwayCrownAngle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadwayCrownAngle.h new file mode 100644 index 000000000..f1ae93fca --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RoadwayCrownAngle.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _RoadwayCrownAngle_H_ +#define _RoadwayCrownAngle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RoadwayCrownAngle */ +typedef long RoadwayCrownAngle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RoadwayCrownAngle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RoadwayCrownAngle; +asn_struct_free_f RoadwayCrownAngle_free; +asn_struct_print_f RoadwayCrownAngle_print; +asn_constr_check_f RoadwayCrownAngle_constraint; +ber_type_decoder_f RoadwayCrownAngle_decode_ber; +der_type_encoder_f RoadwayCrownAngle_encode_der; +xer_type_decoder_f RoadwayCrownAngle_decode_xer; +xer_type_encoder_f RoadwayCrownAngle_encode_xer; +oer_type_decoder_f RoadwayCrownAngle_decode_oer; +oer_type_encoder_f RoadwayCrownAngle_encode_oer; +per_type_decoder_f RoadwayCrownAngle_decode_uper; +per_type_encoder_f RoadwayCrownAngle_encode_uper; +per_type_decoder_f RoadwayCrownAngle_decode_aper; +per_type_encoder_f RoadwayCrownAngle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RoadwayCrownAngle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RollDetected.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RollDetected.h new file mode 100644 index 000000000..5326257bd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RollDetected.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _RollDetected_H_ +#define _RollDetected_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RollDetected */ +typedef long RollDetected_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RollDetected_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RollDetected; +asn_struct_free_f RollDetected_free; +asn_struct_print_f RollDetected_print; +asn_constr_check_f RollDetected_constraint; +ber_type_decoder_f RollDetected_decode_ber; +der_type_encoder_f RollDetected_encode_der; +xer_type_decoder_f RollDetected_decode_xer; +xer_type_encoder_f RollDetected_encode_xer; +oer_type_decoder_f RollDetected_decode_oer; +oer_type_encoder_f RollDetected_encode_oer; +per_type_decoder_f RollDetected_decode_uper; +per_type_encoder_f RollDetected_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RollDetected_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RollRate.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RollRate.h new file mode 100644 index 000000000..86d4d3b25 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RollRate.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _RollRate_H_ +#define _RollRate_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RollRate */ +typedef long RollRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RollRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RollRate; +asn_struct_free_f RollRate_free; +asn_struct_print_f RollRate_print; +asn_constr_check_f RollRate_constraint; +ber_type_decoder_f RollRate_decode_ber; +der_type_encoder_f RollRate_encode_der; +xer_type_decoder_f RollRate_decode_xer; +xer_type_encoder_f RollRate_encode_xer; +oer_type_decoder_f RollRate_decode_oer; +oer_type_encoder_f RollRate_encode_oer; +per_type_decoder_f RollRate_decode_uper; +per_type_encoder_f RollRate_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RollRate_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/RollRateConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RollRateConfidence.h new file mode 100644 index 000000000..9fbfec7fd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/RollRateConfidence.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _RollRateConfidence_H_ +#define _RollRateConfidence_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RollRateConfidence { + RollRateConfidence_unavailable = 0, + RollRateConfidence_degSec_100_00 = 1, + RollRateConfidence_degSec_010_00 = 2, + RollRateConfidence_degSec_005_00 = 3, + RollRateConfidence_degSec_001_00 = 4, + RollRateConfidence_degSec_000_10 = 5, + RollRateConfidence_degSec_000_05 = 6, + RollRateConfidence_degSec_000_01 = 7 +} e_RollRateConfidence; + +/* RollRateConfidence */ +typedef long RollRateConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RollRateConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RollRateConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_RollRateConfidence_specs_1; +asn_struct_free_f RollRateConfidence_free; +asn_struct_print_f RollRateConfidence_print; +asn_constr_check_f RollRateConfidence_constraint; +ber_type_decoder_f RollRateConfidence_decode_ber; +der_type_encoder_f RollRateConfidence_encode_der; +xer_type_decoder_f RollRateConfidence_decode_xer; +xer_type_encoder_f RollRateConfidence_encode_xer; +oer_type_decoder_f RollRateConfidence_decode_oer; +oer_type_encoder_f RollRateConfidence_encode_oer; +per_type_decoder_f RollRateConfidence_decode_uper; +per_type_encoder_f RollRateConfidence_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RollRateConfidence_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SPAT.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SPAT.h new file mode 100644 index 000000000..5cbe0abed --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SPAT.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SPAT_H_ +#define _SPAT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MinuteOfTheYear.h" +#include "DescriptiveName.h" +#include "IntersectionStateList.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_SPAT; + +/* SPAT */ +typedef struct SPAT { + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + DescriptiveName_t *name; /* OPTIONAL */ + IntersectionStateList_t intersections; + struct SPAT__regional { + A_SEQUENCE_OF(struct Reg_SPAT) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SPAT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SPAT; +extern asn_SEQUENCE_specifics_t asn_SPC_SPAT_specs_1; +extern asn_TYPE_member_t asn_MBR_SPAT_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _SPAT_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SPAT_TimeMark.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SPAT_TimeMark.h new file mode 100644 index 000000000..12ec94a37 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SPAT_TimeMark.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SPAT_TimeMark_H_ +#define _SPAT_TimeMark_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SPAT_TimeMark */ +typedef long SPAT_TimeMark_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SPAT_TimeMark_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SPAT_TimeMark; +asn_struct_free_f SPAT_TimeMark_free; +asn_struct_print_f SPAT_TimeMark_print; +asn_constr_check_f SPAT_TimeMark_constraint; +ber_type_decoder_f SPAT_TimeMark_decode_ber; +der_type_encoder_f SPAT_TimeMark_encode_der; +xer_type_decoder_f SPAT_TimeMark_decode_xer; +xer_type_encoder_f SPAT_TimeMark_encode_xer; +oer_type_decoder_f SPAT_TimeMark_decode_oer; +oer_type_encoder_f SPAT_TimeMark_encode_oer; +per_type_decoder_f SPAT_TimeMark_decode_uper; +per_type_encoder_f SPAT_TimeMark_encode_uper; +per_type_decoder_f SPAT_TimeMark_decode_aper; +per_type_encoder_f SPAT_TimeMark_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SPAT_TimeMark_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SSPindex.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SSPindex.h new file mode 100644 index 000000000..3be7d6333 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SSPindex.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SSPindex_H_ +#define _SSPindex_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SSPindex */ +typedef long SSPindex_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SSPindex_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SSPindex; +asn_struct_free_f SSPindex_free; +asn_struct_print_f SSPindex_print; +asn_constr_check_f SSPindex_constraint; +ber_type_decoder_f SSPindex_decode_ber; +der_type_encoder_f SSPindex_encode_der; +xer_type_decoder_f SSPindex_decode_xer; +xer_type_encoder_f SSPindex_encode_xer; +oer_type_decoder_f SSPindex_decode_oer; +oer_type_encoder_f SSPindex_encode_oer; +per_type_decoder_f SSPindex_decode_uper; +per_type_encoder_f SSPindex_encode_uper; +per_type_decoder_f SSPindex_decode_aper; +per_type_encoder_f SSPindex_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SSPindex_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Sample.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Sample.h new file mode 100644 index 000000000..a8abb2fe8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Sample.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Sample_H_ +#define _Sample_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Sample */ +typedef struct Sample { + long sampleStart; + long sampleEnd; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Sample_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Sample; +extern asn_SEQUENCE_specifics_t asn_SPC_Sample_specs_1; +extern asn_TYPE_member_t asn_MBR_Sample_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Sample_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Scale-B12.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Scale-B12.h new file mode 100644 index 000000000..f455a9aa3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Scale-B12.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Scale_B12_H_ +#define _Scale_B12_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Scale-B12 */ +typedef long Scale_B12_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Scale_B12_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Scale_B12; +asn_struct_free_f Scale_B12_free; +asn_struct_print_f Scale_B12_print; +asn_constr_check_f Scale_B12_constraint; +ber_type_decoder_f Scale_B12_decode_ber; +der_type_encoder_f Scale_B12_encode_der; +xer_type_decoder_f Scale_B12_decode_xer; +xer_type_encoder_f Scale_B12_encode_xer; +oer_type_decoder_f Scale_B12_decode_oer; +oer_type_encoder_f Scale_B12_encode_oer; +per_type_decoder_f Scale_B12_decode_uper; +per_type_encoder_f Scale_B12_encode_uper; +per_type_decoder_f Scale_B12_decode_aper; +per_type_encoder_f Scale_B12_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Scale_B12_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Schedule.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Schedule.h new file mode 100644 index 000000000..e05936375 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Schedule.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _Schedule_H_ +#define _Schedule_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" +#include "BOOLEAN.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RepeatParams; +struct DaySchedule; + +/* Schedule */ +typedef struct Schedule { + INTEGER_t start; + INTEGER_t end; + struct Schedule__dow { + A_SEQUENCE_OF(BOOLEAN_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } dow; + struct Schedule__between { + A_SEQUENCE_OF(struct DaySchedule) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *between; + struct RepeatParams *repeat; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Schedule_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Schedule; +extern asn_SEQUENCE_specifics_t asn_SPC_Schedule_specs_1; +extern asn_TYPE_member_t asn_MBR_Schedule_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RepeatParams.h" +#include "DaySchedule.h" + +#endif /* _Schedule_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SeatCount.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SeatCount.h new file mode 100644 index 000000000..165ab16df --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SeatCount.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "../J2735_201603DA_with_PMM.ASN" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -S/home/gmb/TMX-OAM/Build/asn1c/skeletons` + */ + +#ifndef _SeatCount_H_ +#define _SeatCount_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeatCount */ +typedef long SeatCount_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SeatCount_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SeatCount; +asn_struct_free_f SeatCount_free; +asn_struct_print_f SeatCount_print; +asn_constr_check_f SeatCount_constraint; +ber_type_decoder_f SeatCount_decode_ber; +der_type_encoder_f SeatCount_encode_der; +xer_type_decoder_f SeatCount_decode_xer; +xer_type_encoder_f SeatCount_encode_xer; +per_type_decoder_f SeatCount_decode_uper; +per_type_encoder_f SeatCount_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeatCount_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Second.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Second.h new file mode 100644 index 000000000..0d80952d0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Second.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Second_H_ +#define _Second_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Second */ +typedef long Second_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Second_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Second; +asn_struct_free_f Second_free; +asn_struct_print_f Second_print; +asn_constr_check_f Second_constraint; +ber_type_decoder_f Second_decode_ber; +der_type_encoder_f Second_encode_der; +xer_type_decoder_f Second_decode_xer; +xer_type_encoder_f Second_encode_xer; +oer_type_decoder_f Second_decode_oer; +oer_type_encoder_f Second_encode_oer; +per_type_decoder_f Second_decode_uper; +per_type_encoder_f Second_encode_uper; +per_type_decoder_f Second_decode_aper; +per_type_encoder_f Second_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Second_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SecondOfTime.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SecondOfTime.h new file mode 100644 index 000000000..0dc3db6f7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SecondOfTime.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SecondOfTime_H_ +#define _SecondOfTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SecondOfTime */ +typedef long SecondOfTime_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SecondOfTime_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SecondOfTime; +asn_struct_free_f SecondOfTime_free; +asn_struct_print_f SecondOfTime_print; +asn_constr_check_f SecondOfTime_constraint; +ber_type_decoder_f SecondOfTime_decode_ber; +der_type_encoder_f SecondOfTime_encode_der; +xer_type_decoder_f SecondOfTime_decode_xer; +xer_type_encoder_f SecondOfTime_encode_xer; +oer_type_decoder_f SecondOfTime_decode_oer; +oer_type_encoder_f SecondOfTime_encode_oer; +per_type_decoder_f SecondOfTime_decode_uper; +per_type_encoder_f SecondOfTime_encode_uper; +per_type_decoder_f SecondOfTime_decode_aper; +per_type_encoder_f SecondOfTime_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SecondOfTime_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SecondsAngle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SecondsAngle.h new file mode 100644 index 000000000..4f15b1dc2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SecondsAngle.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SecondsAngle_H_ +#define _SecondsAngle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SecondsAngle */ +typedef long SecondsAngle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SecondsAngle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SecondsAngle; +asn_struct_free_f SecondsAngle_free; +asn_struct_print_f SecondsAngle_print; +asn_constr_check_f SecondsAngle_constraint; +ber_type_decoder_f SecondsAngle_decode_ber; +der_type_encoder_f SecondsAngle_encode_der; +xer_type_decoder_f SecondsAngle_decode_xer; +xer_type_encoder_f SecondsAngle_encode_xer; +oer_type_decoder_f SecondsAngle_decode_oer; +oer_type_encoder_f SecondsAngle_encode_oer; +per_type_decoder_f SecondsAngle_decode_uper; +per_type_encoder_f SecondsAngle_encode_uper; +per_type_decoder_f SecondsAngle_decode_aper; +per_type_encoder_f SecondsAngle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SecondsAngle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeLL.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeLL.h new file mode 100644 index 000000000..eecea77f6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeLL.h @@ -0,0 +1,92 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SegmentAttributeLL_H_ +#define _SegmentAttributeLL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SegmentAttributeLL { + SegmentAttributeLL_reserved = 0, + SegmentAttributeLL_doNotBlock = 1, + SegmentAttributeLL_whiteLine = 2, + SegmentAttributeLL_mergingLaneLeft = 3, + SegmentAttributeLL_mergingLaneRight = 4, + SegmentAttributeLL_curbOnLeft = 5, + SegmentAttributeLL_curbOnRight = 6, + SegmentAttributeLL_loadingzoneOnLeft = 7, + SegmentAttributeLL_loadingzoneOnRight = 8, + SegmentAttributeLL_turnOutPointOnLeft = 9, + SegmentAttributeLL_turnOutPointOnRight = 10, + SegmentAttributeLL_adjacentParkingOnLeft = 11, + SegmentAttributeLL_adjacentParkingOnRight = 12, + SegmentAttributeLL_adjacentBikeLaneOnLeft = 13, + SegmentAttributeLL_adjacentBikeLaneOnRight = 14, + SegmentAttributeLL_sharedBikeLane = 15, + SegmentAttributeLL_bikeBoxInFront = 16, + SegmentAttributeLL_transitStopOnLeft = 17, + SegmentAttributeLL_transitStopOnRight = 18, + SegmentAttributeLL_transitStopInLane = 19, + SegmentAttributeLL_sharedWithTrackedVehicle = 20, + SegmentAttributeLL_safeIsland = 21, + SegmentAttributeLL_lowCurbsPresent = 22, + SegmentAttributeLL_rumbleStripPresent = 23, + SegmentAttributeLL_audibleSignalingPresent = 24, + SegmentAttributeLL_adaptiveTimingPresent = 25, + SegmentAttributeLL_rfSignalRequestPresent = 26, + SegmentAttributeLL_partialCurbIntrusion = 27, + SegmentAttributeLL_taperToLeft = 28, + SegmentAttributeLL_taperToRight = 29, + SegmentAttributeLL_taperToCenterLine = 30, + SegmentAttributeLL_parallelParking = 31, + SegmentAttributeLL_headInParking = 32, + SegmentAttributeLL_freeParking = 33, + SegmentAttributeLL_timeRestrictionsOnParking = 34, + SegmentAttributeLL_costToPark = 35, + SegmentAttributeLL_midBlockCurbPresent = 36, + SegmentAttributeLL_unEvenPavementPresent = 37 + /* + * Enumeration is extensible + */ +} e_SegmentAttributeLL; + +/* SegmentAttributeLL */ +typedef long SegmentAttributeLL_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SegmentAttributeLL_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SegmentAttributeLL; +extern const asn_INTEGER_specifics_t asn_SPC_SegmentAttributeLL_specs_1; +asn_struct_free_f SegmentAttributeLL_free; +asn_struct_print_f SegmentAttributeLL_print; +asn_constr_check_f SegmentAttributeLL_constraint; +ber_type_decoder_f SegmentAttributeLL_decode_ber; +der_type_encoder_f SegmentAttributeLL_encode_der; +xer_type_decoder_f SegmentAttributeLL_decode_xer; +xer_type_encoder_f SegmentAttributeLL_encode_xer; +oer_type_decoder_f SegmentAttributeLL_decode_oer; +oer_type_encoder_f SegmentAttributeLL_encode_oer; +per_type_decoder_f SegmentAttributeLL_decode_uper; +per_type_encoder_f SegmentAttributeLL_encode_uper; +per_type_decoder_f SegmentAttributeLL_decode_aper; +per_type_encoder_f SegmentAttributeLL_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SegmentAttributeLL_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeLLList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeLLList.h new file mode 100644 index 000000000..682c24d46 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeLLList.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SegmentAttributeLLList_H_ +#define _SegmentAttributeLLList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SegmentAttributeLL.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SegmentAttributeLLList */ +typedef struct SegmentAttributeLLList { + A_SEQUENCE_OF(SegmentAttributeLL_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SegmentAttributeLLList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SegmentAttributeLLList; +extern asn_SET_OF_specifics_t asn_SPC_SegmentAttributeLLList_specs_1; +extern asn_TYPE_member_t asn_MBR_SegmentAttributeLLList_1[1]; +extern asn_per_constraints_t asn_PER_type_SegmentAttributeLLList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SegmentAttributeLLList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeXY.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeXY.h new file mode 100644 index 000000000..f5034f70a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeXY.h @@ -0,0 +1,92 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SegmentAttributeXY_H_ +#define _SegmentAttributeXY_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SegmentAttributeXY { + SegmentAttributeXY_reserved = 0, + SegmentAttributeXY_doNotBlock = 1, + SegmentAttributeXY_whiteLine = 2, + SegmentAttributeXY_mergingLaneLeft = 3, + SegmentAttributeXY_mergingLaneRight = 4, + SegmentAttributeXY_curbOnLeft = 5, + SegmentAttributeXY_curbOnRight = 6, + SegmentAttributeXY_loadingzoneOnLeft = 7, + SegmentAttributeXY_loadingzoneOnRight = 8, + SegmentAttributeXY_turnOutPointOnLeft = 9, + SegmentAttributeXY_turnOutPointOnRight = 10, + SegmentAttributeXY_adjacentParkingOnLeft = 11, + SegmentAttributeXY_adjacentParkingOnRight = 12, + SegmentAttributeXY_adjacentBikeLaneOnLeft = 13, + SegmentAttributeXY_adjacentBikeLaneOnRight = 14, + SegmentAttributeXY_sharedBikeLane = 15, + SegmentAttributeXY_bikeBoxInFront = 16, + SegmentAttributeXY_transitStopOnLeft = 17, + SegmentAttributeXY_transitStopOnRight = 18, + SegmentAttributeXY_transitStopInLane = 19, + SegmentAttributeXY_sharedWithTrackedVehicle = 20, + SegmentAttributeXY_safeIsland = 21, + SegmentAttributeXY_lowCurbsPresent = 22, + SegmentAttributeXY_rumbleStripPresent = 23, + SegmentAttributeXY_audibleSignalingPresent = 24, + SegmentAttributeXY_adaptiveTimingPresent = 25, + SegmentAttributeXY_rfSignalRequestPresent = 26, + SegmentAttributeXY_partialCurbIntrusion = 27, + SegmentAttributeXY_taperToLeft = 28, + SegmentAttributeXY_taperToRight = 29, + SegmentAttributeXY_taperToCenterLine = 30, + SegmentAttributeXY_parallelParking = 31, + SegmentAttributeXY_headInParking = 32, + SegmentAttributeXY_freeParking = 33, + SegmentAttributeXY_timeRestrictionsOnParking = 34, + SegmentAttributeXY_costToPark = 35, + SegmentAttributeXY_midBlockCurbPresent = 36, + SegmentAttributeXY_unEvenPavementPresent = 37 + /* + * Enumeration is extensible + */ +} e_SegmentAttributeXY; + +/* SegmentAttributeXY */ +typedef long SegmentAttributeXY_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SegmentAttributeXY_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SegmentAttributeXY; +extern const asn_INTEGER_specifics_t asn_SPC_SegmentAttributeXY_specs_1; +asn_struct_free_f SegmentAttributeXY_free; +asn_struct_print_f SegmentAttributeXY_print; +asn_constr_check_f SegmentAttributeXY_constraint; +ber_type_decoder_f SegmentAttributeXY_decode_ber; +der_type_encoder_f SegmentAttributeXY_encode_der; +xer_type_decoder_f SegmentAttributeXY_decode_xer; +xer_type_encoder_f SegmentAttributeXY_encode_xer; +oer_type_decoder_f SegmentAttributeXY_decode_oer; +oer_type_encoder_f SegmentAttributeXY_encode_oer; +per_type_decoder_f SegmentAttributeXY_decode_uper; +per_type_encoder_f SegmentAttributeXY_encode_uper; +per_type_decoder_f SegmentAttributeXY_decode_aper; +per_type_encoder_f SegmentAttributeXY_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SegmentAttributeXY_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeXYList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeXYList.h new file mode 100644 index 000000000..4026cacb4 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SegmentAttributeXYList.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SegmentAttributeXYList_H_ +#define _SegmentAttributeXYList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SegmentAttributeXY.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SegmentAttributeXYList */ +typedef struct SegmentAttributeXYList { + A_SEQUENCE_OF(SegmentAttributeXY_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SegmentAttributeXYList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SegmentAttributeXYList; +extern asn_SET_OF_specifics_t asn_SPC_SegmentAttributeXYList_specs_1; +extern asn_TYPE_member_t asn_MBR_SegmentAttributeXYList_1[1]; +extern asn_per_constraints_t asn_PER_type_SegmentAttributeXYList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SegmentAttributeXYList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SemiMajorAxisAccuracy.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SemiMajorAxisAccuracy.h new file mode 100644 index 000000000..526b1e0be --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SemiMajorAxisAccuracy.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SemiMajorAxisAccuracy_H_ +#define _SemiMajorAxisAccuracy_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SemiMajorAxisAccuracy */ +typedef long SemiMajorAxisAccuracy_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SemiMajorAxisAccuracy_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SemiMajorAxisAccuracy; +asn_struct_free_f SemiMajorAxisAccuracy_free; +asn_struct_print_f SemiMajorAxisAccuracy_print; +asn_constr_check_f SemiMajorAxisAccuracy_constraint; +ber_type_decoder_f SemiMajorAxisAccuracy_decode_ber; +der_type_encoder_f SemiMajorAxisAccuracy_encode_der; +xer_type_decoder_f SemiMajorAxisAccuracy_decode_xer; +xer_type_encoder_f SemiMajorAxisAccuracy_encode_xer; +oer_type_decoder_f SemiMajorAxisAccuracy_decode_oer; +oer_type_encoder_f SemiMajorAxisAccuracy_encode_oer; +per_type_decoder_f SemiMajorAxisAccuracy_decode_uper; +per_type_encoder_f SemiMajorAxisAccuracy_encode_uper; +per_type_decoder_f SemiMajorAxisAccuracy_decode_aper; +per_type_encoder_f SemiMajorAxisAccuracy_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SemiMajorAxisAccuracy_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SemiMajorAxisOrientation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SemiMajorAxisOrientation.h new file mode 100644 index 000000000..aaa24da32 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SemiMajorAxisOrientation.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SemiMajorAxisOrientation_H_ +#define _SemiMajorAxisOrientation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SemiMajorAxisOrientation */ +typedef long SemiMajorAxisOrientation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SemiMajorAxisOrientation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SemiMajorAxisOrientation; +asn_struct_free_f SemiMajorAxisOrientation_free; +asn_struct_print_f SemiMajorAxisOrientation_print; +asn_constr_check_f SemiMajorAxisOrientation_constraint; +ber_type_decoder_f SemiMajorAxisOrientation_decode_ber; +der_type_encoder_f SemiMajorAxisOrientation_encode_der; +xer_type_decoder_f SemiMajorAxisOrientation_decode_xer; +xer_type_encoder_f SemiMajorAxisOrientation_encode_xer; +oer_type_decoder_f SemiMajorAxisOrientation_decode_oer; +oer_type_encoder_f SemiMajorAxisOrientation_encode_oer; +per_type_decoder_f SemiMajorAxisOrientation_decode_uper; +per_type_encoder_f SemiMajorAxisOrientation_encode_uper; +per_type_decoder_f SemiMajorAxisOrientation_decode_aper; +per_type_encoder_f SemiMajorAxisOrientation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SemiMajorAxisOrientation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SemiMinorAxisAccuracy.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SemiMinorAxisAccuracy.h new file mode 100644 index 000000000..d4e009f15 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SemiMinorAxisAccuracy.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SemiMinorAxisAccuracy_H_ +#define _SemiMinorAxisAccuracy_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SemiMinorAxisAccuracy */ +typedef long SemiMinorAxisAccuracy_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SemiMinorAxisAccuracy_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SemiMinorAxisAccuracy; +asn_struct_free_f SemiMinorAxisAccuracy_free; +asn_struct_print_f SemiMinorAxisAccuracy_print; +asn_constr_check_f SemiMinorAxisAccuracy_constraint; +ber_type_decoder_f SemiMinorAxisAccuracy_decode_ber; +der_type_encoder_f SemiMinorAxisAccuracy_encode_der; +xer_type_decoder_f SemiMinorAxisAccuracy_decode_xer; +xer_type_encoder_f SemiMinorAxisAccuracy_encode_xer; +oer_type_decoder_f SemiMinorAxisAccuracy_decode_oer; +oer_type_encoder_f SemiMinorAxisAccuracy_encode_oer; +per_type_decoder_f SemiMinorAxisAccuracy_decode_uper; +per_type_encoder_f SemiMinorAxisAccuracy_encode_uper; +per_type_decoder_f SemiMinorAxisAccuracy_decode_aper; +per_type_encoder_f SemiMinorAxisAccuracy_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SemiMinorAxisAccuracy_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SensorDataSharingMessage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SensorDataSharingMessage.h new file mode 100644 index 000000000..7e3f04e3e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SensorDataSharingMessage.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _SensorDataSharingMessage_H_ +#define _SensorDataSharingMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Common_MsgCount.h" +#include "TemporaryID.h" +#include "EquipmentType.h" +#include "DDateTime.h" +#include "Position3D.h" +#include "PositionalAccuracy.h" +#include "ElevationConfidence.h" +#include "DetectedObjectList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SensorDataSharingMessage */ +typedef struct SensorDataSharingMessage { + Common_MsgCount_t msgCnt; + TemporaryID_t sourceID; + EquipmentType_t equipmentType; + DDateTime_t sDSMTimeStamp; + Position3D_t refPos; + PositionalAccuracy_t refPosXYConf; + ElevationConfidence_t *refPosElConf /* OPTIONAL */; + DetectedObjectList_t objects; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SensorDataSharingMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SensorDataSharingMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_SensorDataSharingMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_SensorDataSharingMessage_1[8]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SensorDataSharingMessage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ShapePointSet.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ShapePointSet.h new file mode 100644 index 000000000..6b8f601f7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ShapePointSet.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ShapePointSet_H_ +#define _ShapePointSet_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LaneWidth.h" +#include "DirectionOfUse.h" +#include "NodeListXY.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Position3D; + +/* ShapePointSet */ +typedef struct ShapePointSet { + struct Position3D *anchor; /* OPTIONAL */ + LaneWidth_t *laneWidth; /* OPTIONAL */ + DirectionOfUse_t *directionality; /* OPTIONAL */ + NodeListXY_t nodeList; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ShapePointSet_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ShapePointSet; +extern asn_SEQUENCE_specifics_t asn_SPC_ShapePointSet_specs_1; +extern asn_TYPE_member_t asn_MBR_ShapePointSet_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Position3D.h" + +#endif /* _ShapePointSet_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignPrority.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignPrority.h new file mode 100644 index 000000000..736d699ea --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignPrority.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignPrority_H_ +#define _SignPrority_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SignPrority */ +typedef long SignPrority_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SignPrority_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SignPrority; +asn_struct_free_f SignPrority_free; +asn_struct_print_f SignPrority_print; +asn_constr_check_f SignPrority_constraint; +ber_type_decoder_f SignPrority_decode_ber; +der_type_encoder_f SignPrority_encode_der; +xer_type_decoder_f SignPrority_decode_xer; +xer_type_encoder_f SignPrority_encode_xer; +oer_type_decoder_f SignPrority_decode_oer; +oer_type_encoder_f SignPrority_encode_oer; +per_type_decoder_f SignPrority_decode_uper; +per_type_encoder_f SignPrority_encode_uper; +per_type_decoder_f SignPrority_decode_aper; +per_type_encoder_f SignPrority_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SignPrority_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalControlZone.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalControlZone.h new file mode 100644 index 000000000..eeab185d8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalControlZone.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalControlZone_H_ +#define _SignalControlZone_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RegionalExtension.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SignalControlZone */ +typedef struct SignalControlZone { + Reg_SignalControlZone_t zone; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalControlZone_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalControlZone; +extern asn_SEQUENCE_specifics_t asn_SPC_SignalControlZone_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalControlZone_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SignalControlZone_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalGroupID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalGroupID.h new file mode 100644 index 000000000..4c656ddbd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalGroupID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalGroupID_H_ +#define _SignalGroupID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SignalGroupID */ +typedef long SignalGroupID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SignalGroupID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SignalGroupID; +asn_struct_free_f SignalGroupID_free; +asn_struct_print_f SignalGroupID_print; +asn_constr_check_f SignalGroupID_constraint; +ber_type_decoder_f SignalGroupID_decode_ber; +der_type_encoder_f SignalGroupID_encode_der; +xer_type_decoder_f SignalGroupID_decode_xer; +xer_type_encoder_f SignalGroupID_encode_xer; +oer_type_decoder_f SignalGroupID_decode_oer; +oer_type_encoder_f SignalGroupID_encode_oer; +per_type_decoder_f SignalGroupID_decode_uper; +per_type_encoder_f SignalGroupID_encode_uper; +per_type_decoder_f SignalGroupID_decode_aper; +per_type_encoder_f SignalGroupID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SignalGroupID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalHeadLocation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalHeadLocation.h new file mode 100644 index 000000000..e02dc8a36 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalHeadLocation.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalHeadLocation_H_ +#define _SignalHeadLocation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NodeOffsetPointXY.h" +#include "SignalGroupID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SignalHeadLocation */ +typedef struct SignalHeadLocation { + NodeOffsetPointXY_t node; + SignalGroupID_t signalGroupID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalHeadLocation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalHeadLocation; +extern asn_SEQUENCE_specifics_t asn_SPC_SignalHeadLocation_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalHeadLocation_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SignalHeadLocation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalHeadLocationList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalHeadLocationList.h new file mode 100644 index 000000000..04afe71c6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalHeadLocationList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalHeadLocationList_H_ +#define _SignalHeadLocationList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SignalHeadLocation; + +/* SignalHeadLocationList */ +typedef struct SignalHeadLocationList { + A_SEQUENCE_OF(struct SignalHeadLocation) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalHeadLocationList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalHeadLocationList; +extern asn_SET_OF_specifics_t asn_SPC_SignalHeadLocationList_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalHeadLocationList_1[1]; +extern asn_per_constraints_t asn_PER_type_SignalHeadLocationList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "SignalHeadLocation.h" + +#endif /* _SignalHeadLocationList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalReqScheme.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalReqScheme.h new file mode 100644 index 000000000..50970004f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalReqScheme.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalReqScheme_H_ +#define _SignalReqScheme_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SignalReqScheme */ +typedef OCTET_STRING_t SignalReqScheme_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalReqScheme; +asn_struct_free_f SignalReqScheme_free; +asn_struct_print_f SignalReqScheme_print; +asn_constr_check_f SignalReqScheme_constraint; +ber_type_decoder_f SignalReqScheme_decode_ber; +der_type_encoder_f SignalReqScheme_encode_der; +xer_type_decoder_f SignalReqScheme_decode_xer; +xer_type_encoder_f SignalReqScheme_encode_xer; +oer_type_decoder_f SignalReqScheme_decode_oer; +oer_type_encoder_f SignalReqScheme_encode_oer; +per_type_decoder_f SignalReqScheme_decode_uper; +per_type_encoder_f SignalReqScheme_encode_uper; +per_type_decoder_f SignalReqScheme_decode_aper; +per_type_encoder_f SignalReqScheme_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SignalReqScheme_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequest.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequest.h new file mode 100644 index 000000000..3df2ce38b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequest.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalRequest_H_ +#define _SignalRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IntersectionReferenceID.h" +#include "RequestID.h" +#include "PriorityRequestType.h" +#include "IntersectionAccessPoint.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IntersectionAccessPoint; +struct Reg_SignalRequest; + +/* SignalRequest */ +typedef struct SignalRequest { + IntersectionReferenceID_t id; + RequestID_t requestID; + PriorityRequestType_t requestType; + IntersectionAccessPoint_t inBoundLane; + struct IntersectionAccessPoint *outBoundLane; /* OPTIONAL */ + struct SignalRequest__regional { + A_SEQUENCE_OF(struct Reg_SignalRequest) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_SignalRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalRequest_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IntersectionAccessPoint.h" +#include "RegionalExtension.h" + +#endif /* _SignalRequest_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequestList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequestList.h new file mode 100644 index 000000000..44c939b18 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequestList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalRequestList_H_ +#define _SignalRequestList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SignalRequestPackage; + +/* SignalRequestList */ +typedef struct SignalRequestList { + A_SEQUENCE_OF(struct SignalRequestPackage) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalRequestList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalRequestList; +extern asn_SET_OF_specifics_t asn_SPC_SignalRequestList_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalRequestList_1[1]; +extern asn_per_constraints_t asn_PER_type_SignalRequestList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "SignalRequestPackage.h" + +#endif /* _SignalRequestList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequestMessage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequestMessage.h new file mode 100644 index 000000000..b920c2c8d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequestMessage.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalRequestMessage_H_ +#define _SignalRequestMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MinuteOfTheYear.h" +#include "DSecond.h" +#include "Common_MsgCount.h" +#include "RequestorDescription.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SignalRequestList; +struct Reg_SignalRequestMessage; + +/* SignalRequestMessage */ +typedef struct SignalRequestMessage { + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + DSecond_t second; + Common_MsgCount_t *sequenceNumber; /* OPTIONAL */ + struct SignalRequestList *requests; /* OPTIONAL */ + RequestorDescription_t requestor; + struct SignalRequestMessage__regional { + A_SEQUENCE_OF(struct Reg_SignalRequestMessage) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalRequestMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalRequestMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_SignalRequestMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalRequestMessage_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "SignalRequestList.h" +#include "RegionalExtension.h" + +#endif /* _SignalRequestMessage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequestPackage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequestPackage.h new file mode 100644 index 000000000..41bd4eefa --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequestPackage.h @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalRequestPackage_H_ +#define _SignalRequestPackage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SignalRequest.h" +#include "MinuteOfTheYear.h" +#include "DSecond.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_SignalRequestPackage; + +/* SignalRequestPackage */ +typedef struct SignalRequestPackage { + SignalRequest_t request; + MinuteOfTheYear_t *minute; /* OPTIONAL */ + DSecond_t *second; /* OPTIONAL */ + DSecond_t *duration; /* OPTIONAL */ + struct SignalRequestPackage__regional { + A_SEQUENCE_OF(struct Reg_SignalRequestPackage) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalRequestPackage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalRequestPackage; +extern asn_SEQUENCE_specifics_t asn_SPC_SignalRequestPackage_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalRequestPackage_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _SignalRequestPackage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequesterInfo.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequesterInfo.h new file mode 100644 index 000000000..90af7c811 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalRequesterInfo.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalRequesterInfo_H_ +#define _SignalRequesterInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "VehicleID.h" +#include "RequestID.h" +#include "Common_MsgCount.h" +#include "BasicVehicleRole.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RequestorType; + +/* SignalRequesterInfo */ +typedef struct SignalRequesterInfo { + VehicleID_t id; + RequestID_t request; + Common_MsgCount_t sequenceNumber; + BasicVehicleRole_t *role; /* OPTIONAL */ + struct RequestorType *typeData; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalRequesterInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalRequesterInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_SignalRequesterInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalRequesterInfo_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RequestorType.h" + +#endif /* _SignalRequesterInfo_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatus.h new file mode 100644 index 000000000..03ddd76b0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatus.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalStatus_H_ +#define _SignalStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Common_MsgCount.h" +#include "IntersectionReferenceID.h" +#include "SignalStatusPackageList.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_SignalStatus; + +/* SignalStatus */ +typedef struct SignalStatus { + Common_MsgCount_t sequenceNumber; + IntersectionReferenceID_t id; + SignalStatusPackageList_t sigStatus; + struct SignalStatus__regional { + A_SEQUENCE_OF(struct Reg_SignalStatus) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalStatus; +extern asn_SEQUENCE_specifics_t asn_SPC_SignalStatus_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalStatus_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _SignalStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusList.h new file mode 100644 index 000000000..f2daa658a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalStatusList_H_ +#define _SignalStatusList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SignalStatus; + +/* SignalStatusList */ +typedef struct SignalStatusList { + A_SEQUENCE_OF(struct SignalStatus) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalStatusList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalStatusList; +extern asn_SET_OF_specifics_t asn_SPC_SignalStatusList_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalStatusList_1[1]; +extern asn_per_constraints_t asn_PER_type_SignalStatusList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "SignalStatus.h" + +#endif /* _SignalStatusList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusMessage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusMessage.h new file mode 100644 index 000000000..df402b09b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusMessage.h @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalStatusMessage_H_ +#define _SignalStatusMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MinuteOfTheYear.h" +#include "DSecond.h" +#include "Common_MsgCount.h" +#include "SignalStatusList.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_SignalStatusMessage; + +/* SignalStatusMessage */ +typedef struct SignalStatusMessage { + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + DSecond_t second; + Common_MsgCount_t *sequenceNumber; /* OPTIONAL */ + SignalStatusList_t status; + struct SignalStatusMessage__regional { + A_SEQUENCE_OF(struct Reg_SignalStatusMessage) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalStatusMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalStatusMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_SignalStatusMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalStatusMessage_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _SignalStatusMessage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusPackage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusPackage.h new file mode 100644 index 000000000..04eeaac73 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusPackage.h @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalStatusPackage_H_ +#define _SignalStatusPackage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IntersectionAccessPoint.h" +#include "MinuteOfTheYear.h" +#include "DSecond.h" +#include "PrioritizationResponseStatus.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SignalRequesterInfo; +struct IntersectionAccessPoint; +struct Reg_SignalStatusPackage; + +/* SignalStatusPackage */ +typedef struct SignalStatusPackage { + struct SignalRequesterInfo *requester; /* OPTIONAL */ + IntersectionAccessPoint_t inboundOn; + struct IntersectionAccessPoint *outboundOn; /* OPTIONAL */ + MinuteOfTheYear_t *minute; /* OPTIONAL */ + DSecond_t *second; /* OPTIONAL */ + DSecond_t *duration; /* OPTIONAL */ + PrioritizationResponseStatus_t status; + struct SignalStatusPackage__regional { + A_SEQUENCE_OF(struct Reg_SignalStatusPackage) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalStatusPackage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalStatusPackage; +extern asn_SEQUENCE_specifics_t asn_SPC_SignalStatusPackage_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalStatusPackage_1[8]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "SignalRequesterInfo.h" +#include "IntersectionAccessPoint.h" +#include "RegionalExtension.h" + +#endif /* _SignalStatusPackage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusPackageList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusPackageList.h new file mode 100644 index 000000000..693a2e16f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SignalStatusPackageList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SignalStatusPackageList_H_ +#define _SignalStatusPackageList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SignalStatusPackage; + +/* SignalStatusPackageList */ +typedef struct SignalStatusPackageList { + A_SEQUENCE_OF(struct SignalStatusPackage) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SignalStatusPackageList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SignalStatusPackageList; +extern asn_SET_OF_specifics_t asn_SPC_SignalStatusPackageList_specs_1; +extern asn_TYPE_member_t asn_MBR_SignalStatusPackageList_1[1]; +extern asn_per_constraints_t asn_PER_type_SignalStatusPackageList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "SignalStatusPackage.h" + +#endif /* _SignalStatusPackageList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SirenInUse.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SirenInUse.h new file mode 100644 index 000000000..186a3c71c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SirenInUse.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SirenInUse_H_ +#define _SirenInUse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SirenInUse { + SirenInUse_unavailable = 0, + SirenInUse_notInUse = 1, + SirenInUse_inUse = 2, + SirenInUse_reserved = 3 +} e_SirenInUse; + +/* SirenInUse */ +typedef long SirenInUse_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SirenInUse_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SirenInUse; +extern const asn_INTEGER_specifics_t asn_SPC_SirenInUse_specs_1; +asn_struct_free_f SirenInUse_free; +asn_struct_print_f SirenInUse_print; +asn_constr_check_f SirenInUse_constraint; +ber_type_decoder_f SirenInUse_decode_ber; +der_type_encoder_f SirenInUse_encode_der; +xer_type_decoder_f SirenInUse_decode_xer; +xer_type_encoder_f SirenInUse_encode_xer; +oer_type_decoder_f SirenInUse_decode_oer; +oer_type_encoder_f SirenInUse_encode_oer; +per_type_decoder_f SirenInUse_decode_uper; +per_type_encoder_f SirenInUse_encode_uper; +per_type_decoder_f SirenInUse_decode_aper; +per_type_encoder_f SirenInUse_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SirenInUse_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SizeValue.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SizeValue.h new file mode 100644 index 000000000..7b35e76ef --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SizeValue.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _SizeValue_H_ +#define _SizeValue_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* SizeValue */ +typedef long SizeValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SizeValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SizeValue; +asn_struct_free_f SizeValue_free; +asn_struct_print_f SizeValue_print; +asn_constr_check_f SizeValue_constraint; +ber_type_decoder_f SizeValue_decode_ber; +der_type_encoder_f SizeValue_encode_der; +xer_type_decoder_f SizeValue_decode_xer; +xer_type_encoder_f SizeValue_encode_xer; +oer_type_decoder_f SizeValue_decode_oer; +oer_type_encoder_f SizeValue_encode_oer; +per_type_decoder_f SizeValue_decode_uper; +per_type_encoder_f SizeValue_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SizeValue_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SizeValueConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SizeValueConfidence.h new file mode 100644 index 000000000..b719b5570 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SizeValueConfidence.h @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _SizeValueConfidence_H_ +#define _SizeValueConfidence_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SizeValueConfidence { + SizeValueConfidence_unavailable = 0, + SizeValueConfidence_size_100_00 = 1, + SizeValueConfidence_size_050_00 = 2, + SizeValueConfidence_size_020_00 = 3, + SizeValueConfidence_size_010_00 = 4, + SizeValueConfidence_size_005_00 = 5, + SizeValueConfidence_size_002_00 = 6, + SizeValueConfidence_size_001_00 = 7, + SizeValueConfidence_size_000_50 = 8, + SizeValueConfidence_size_000_20 = 9, + SizeValueConfidence_size_000_10 = 10, + SizeValueConfidence_size_000_05 = 11, + SizeValueConfidence_size_000_02 = 12, + SizeValueConfidence_size_000_01 = 13 +} e_SizeValueConfidence; + +/* SizeValueConfidence */ +typedef long SizeValueConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SizeValueConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SizeValueConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_SizeValueConfidence_specs_1; +asn_struct_free_f SizeValueConfidence_free; +asn_struct_print_f SizeValueConfidence_print; +asn_constr_check_f SizeValueConfidence_constraint; +ber_type_decoder_f SizeValueConfidence_decode_ber; +der_type_encoder_f SizeValueConfidence_encode_der; +xer_type_decoder_f SizeValueConfidence_decode_xer; +xer_type_encoder_f SizeValueConfidence_encode_xer; +oer_type_decoder_f SizeValueConfidence_decode_oer; +oer_type_encoder_f SizeValueConfidence_encode_oer; +per_type_decoder_f SizeValueConfidence_decode_uper; +per_type_encoder_f SizeValueConfidence_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SizeValueConfidence_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Snapshot.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Snapshot.h new file mode 100644 index 000000000..6ed0251cb --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Snapshot.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Snapshot_H_ +#define _Snapshot_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "FullPositionVector.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct VehicleSafetyExtensions; +struct VehicleStatus; + +/* Snapshot */ +typedef struct Snapshot { + FullPositionVector_t thePosition; + struct VehicleSafetyExtensions *safetyExt; /* OPTIONAL */ + struct VehicleStatus *dataSet; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Snapshot_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Snapshot; +extern asn_SEQUENCE_specifics_t asn_SPC_Snapshot_specs_1; +extern asn_TYPE_member_t asn_MBR_Snapshot_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "VehicleSafetyExtensions.h" +#include "VehicleStatus.h" + +#endif /* _Snapshot_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SnapshotDistance.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SnapshotDistance.h new file mode 100644 index 000000000..e2dce7b35 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SnapshotDistance.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SnapshotDistance_H_ +#define _SnapshotDistance_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GrossDistance.h" +#include "GrossSpeed.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SnapshotDistance */ +typedef struct SnapshotDistance { + GrossDistance_t distance1; + GrossSpeed_t speed1; + GrossDistance_t distance2; + GrossSpeed_t speed2; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SnapshotDistance_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SnapshotDistance; +extern asn_SEQUENCE_specifics_t asn_SPC_SnapshotDistance_specs_1; +extern asn_TYPE_member_t asn_MBR_SnapshotDistance_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SnapshotDistance_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SnapshotTime.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SnapshotTime.h new file mode 100644 index 000000000..2eac03c20 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SnapshotTime.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SnapshotTime_H_ +#define _SnapshotTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GrossSpeed.h" +#include "SecondOfTime.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SnapshotTime */ +typedef struct SnapshotTime { + GrossSpeed_t speed1; + SecondOfTime_t time1; + GrossSpeed_t speed2; + SecondOfTime_t time2; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SnapshotTime_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SnapshotTime; +extern asn_SEQUENCE_specifics_t asn_SPC_SnapshotTime_specs_1; +extern asn_TYPE_member_t asn_MBR_SnapshotTime_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SnapshotTime_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpecialVehicleExtensions.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpecialVehicleExtensions.h new file mode 100644 index 000000000..77076b913 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpecialVehicleExtensions.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SpecialVehicleExtensions_H_ +#define _SpecialVehicleExtensions_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct EmergencyDetails; +struct EventDescription; +struct TrailerData; + +/* SpecialVehicleExtensions */ +typedef struct SpecialVehicleExtensions { + struct EmergencyDetails *vehicleAlerts; /* OPTIONAL */ + struct EventDescription *description; /* OPTIONAL */ + struct TrailerData *trailers; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SpecialVehicleExtensions_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SpecialVehicleExtensions; +extern asn_SEQUENCE_specifics_t asn_SPC_SpecialVehicleExtensions_specs_1; +extern asn_TYPE_member_t asn_MBR_SpecialVehicleExtensions_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "EmergencyDetails.h" +#include "EventDescription.h" +#include "TrailerData.h" + +#endif /* _SpecialVehicleExtensions_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Speed.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Speed.h new file mode 100644 index 000000000..966f950da --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Speed.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Speed_H_ +#define _Speed_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Speed */ +typedef long Speed_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Speed_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Speed; +asn_struct_free_f Speed_free; +asn_struct_print_f Speed_print; +asn_constr_check_f Speed_constraint; +ber_type_decoder_f Speed_decode_ber; +der_type_encoder_f Speed_encode_der; +xer_type_decoder_f Speed_decode_xer; +xer_type_encoder_f Speed_encode_xer; +oer_type_decoder_f Speed_decode_oer; +oer_type_encoder_f Speed_encode_oer; +per_type_decoder_f Speed_decode_uper; +per_type_encoder_f Speed_encode_uper; +per_type_decoder_f Speed_decode_aper; +per_type_encoder_f Speed_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Speed_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedAdvice.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedAdvice.h new file mode 100644 index 000000000..377a6e32c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedAdvice.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SpeedAdvice_H_ +#define _SpeedAdvice_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SpeedAdvice */ +typedef long SpeedAdvice_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SpeedAdvice_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SpeedAdvice; +asn_struct_free_f SpeedAdvice_free; +asn_struct_print_f SpeedAdvice_print; +asn_constr_check_f SpeedAdvice_constraint; +ber_type_decoder_f SpeedAdvice_decode_ber; +der_type_encoder_f SpeedAdvice_encode_der; +xer_type_decoder_f SpeedAdvice_decode_xer; +xer_type_encoder_f SpeedAdvice_encode_xer; +oer_type_decoder_f SpeedAdvice_decode_oer; +oer_type_encoder_f SpeedAdvice_encode_oer; +per_type_decoder_f SpeedAdvice_decode_uper; +per_type_encoder_f SpeedAdvice_encode_uper; +per_type_decoder_f SpeedAdvice_decode_aper; +per_type_encoder_f SpeedAdvice_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpeedAdvice_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedConfidence.h new file mode 100644 index 000000000..7b5eb89b2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedConfidence.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SpeedConfidence_H_ +#define _SpeedConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SpeedConfidence { + SpeedConfidence_unavailable = 0, + SpeedConfidence_prec100ms = 1, + SpeedConfidence_prec10ms = 2, + SpeedConfidence_prec5ms = 3, + SpeedConfidence_prec1ms = 4, + SpeedConfidence_prec0_1ms = 5, + SpeedConfidence_prec0_05ms = 6, + SpeedConfidence_prec0_01ms = 7 +} e_SpeedConfidence; + +/* SpeedConfidence */ +typedef long SpeedConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SpeedConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SpeedConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_SpeedConfidence_specs_1; +asn_struct_free_f SpeedConfidence_free; +asn_struct_print_f SpeedConfidence_print; +asn_constr_check_f SpeedConfidence_constraint; +ber_type_decoder_f SpeedConfidence_decode_ber; +der_type_encoder_f SpeedConfidence_encode_der; +xer_type_decoder_f SpeedConfidence_decode_xer; +xer_type_encoder_f SpeedConfidence_encode_xer; +oer_type_decoder_f SpeedConfidence_decode_oer; +oer_type_encoder_f SpeedConfidence_encode_oer; +per_type_decoder_f SpeedConfidence_decode_uper; +per_type_encoder_f SpeedConfidence_encode_uper; +per_type_decoder_f SpeedConfidence_decode_aper; +per_type_encoder_f SpeedConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpeedConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedLimit.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedLimit.h new file mode 100644 index 000000000..076ba6267 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedLimit.h @@ -0,0 +1,69 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SpeedLimit_H_ +#define _SpeedLimit_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ITIScodes.h" +#include "ITIStextPhrase.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SpeedLimit__Member__item_PR { + SpeedLimit__Member__item_PR_NOTHING, /* No components present */ + SpeedLimit__Member__item_PR_itis, + SpeedLimit__Member__item_PR_text +} SpeedLimit__Member__item_PR; + +/* Forward definitions */ +typedef struct SpeedLimit__Member { + struct SpeedLimit__Member__item { + SpeedLimit__Member__item_PR present; + union SpeedLimit__Member__item_u { + ITIScodes_t itis; + ITIStextPhrase_t text; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } item; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SpeedLimit__Member; + +/* SpeedLimit */ +typedef struct SpeedLimit { + A_SEQUENCE_OF(SpeedLimit__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SpeedLimit_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SpeedLimit; +extern asn_SET_OF_specifics_t asn_SPC_SpeedLimit_specs_1; +extern asn_TYPE_member_t asn_MBR_SpeedLimit_1[1]; +extern asn_per_constraints_t asn_PER_type_SpeedLimit_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpeedLimit_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedLimitList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedLimitList.h new file mode 100644 index 000000000..20b11526a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedLimitList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SpeedLimitList_H_ +#define _SpeedLimitList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RegulatorySpeedLimit; + +/* SpeedLimitList */ +typedef struct SpeedLimitList { + A_SEQUENCE_OF(struct RegulatorySpeedLimit) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SpeedLimitList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SpeedLimitList; +extern asn_SET_OF_specifics_t asn_SPC_SpeedLimitList_specs_1; +extern asn_TYPE_member_t asn_MBR_SpeedLimitList_1[1]; +extern asn_per_constraints_t asn_PER_type_SpeedLimitList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegulatorySpeedLimit.h" + +#endif /* _SpeedLimitList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedLimitType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedLimitType.h new file mode 100644 index 000000000..02cce7f6e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedLimitType.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SpeedLimitType_H_ +#define _SpeedLimitType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SpeedLimitType { + SpeedLimitType_unknown = 0, + SpeedLimitType_maxSpeedInSchoolZone = 1, + SpeedLimitType_maxSpeedInSchoolZoneWhenChildrenArePresent = 2, + SpeedLimitType_maxSpeedInConstructionZone = 3, + SpeedLimitType_vehicleMinSpeed = 4, + SpeedLimitType_vehicleMaxSpeed = 5, + SpeedLimitType_vehicleNightMaxSpeed = 6, + SpeedLimitType_truckMinSpeed = 7, + SpeedLimitType_truckMaxSpeed = 8, + SpeedLimitType_truckNightMaxSpeed = 9, + SpeedLimitType_vehiclesWithTrailersMinSpeed = 10, + SpeedLimitType_vehiclesWithTrailersMaxSpeed = 11, + SpeedLimitType_vehiclesWithTrailersNightMaxSpeed = 12 + /* + * Enumeration is extensible + */ +} e_SpeedLimitType; + +/* SpeedLimitType */ +typedef long SpeedLimitType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SpeedLimitType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SpeedLimitType; +extern const asn_INTEGER_specifics_t asn_SPC_SpeedLimitType_specs_1; +asn_struct_free_f SpeedLimitType_free; +asn_struct_print_f SpeedLimitType_print; +asn_constr_check_f SpeedLimitType_constraint; +ber_type_decoder_f SpeedLimitType_decode_ber; +der_type_encoder_f SpeedLimitType_encode_der; +xer_type_decoder_f SpeedLimitType_decode_xer; +xer_type_encoder_f SpeedLimitType_encode_xer; +oer_type_decoder_f SpeedLimitType_decode_oer; +oer_type_encoder_f SpeedLimitType_encode_oer; +per_type_decoder_f SpeedLimitType_decode_uper; +per_type_encoder_f SpeedLimitType_encode_uper; +per_type_decoder_f SpeedLimitType_decode_aper; +per_type_encoder_f SpeedLimitType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpeedLimitType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedProfile.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedProfile.h new file mode 100644 index 000000000..2c28d79f9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedProfile.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SpeedProfile_H_ +#define _SpeedProfile_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SpeedProfileMeasurementList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SpeedProfile */ +typedef struct SpeedProfile { + SpeedProfileMeasurementList_t speedReports; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SpeedProfile_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SpeedProfile; +extern asn_SEQUENCE_specifics_t asn_SPC_SpeedProfile_specs_1; +extern asn_TYPE_member_t asn_MBR_SpeedProfile_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpeedProfile_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedProfileMeasurement.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedProfileMeasurement.h new file mode 100644 index 000000000..96e596d35 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedProfileMeasurement.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SpeedProfileMeasurement_H_ +#define _SpeedProfileMeasurement_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GrossSpeed.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SpeedProfileMeasurement */ +typedef GrossSpeed_t SpeedProfileMeasurement_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SpeedProfileMeasurement_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SpeedProfileMeasurement; +asn_struct_free_f SpeedProfileMeasurement_free; +asn_struct_print_f SpeedProfileMeasurement_print; +asn_constr_check_f SpeedProfileMeasurement_constraint; +ber_type_decoder_f SpeedProfileMeasurement_decode_ber; +der_type_encoder_f SpeedProfileMeasurement_encode_der; +xer_type_decoder_f SpeedProfileMeasurement_decode_xer; +xer_type_encoder_f SpeedProfileMeasurement_encode_xer; +oer_type_decoder_f SpeedProfileMeasurement_decode_oer; +oer_type_encoder_f SpeedProfileMeasurement_encode_oer; +per_type_decoder_f SpeedProfileMeasurement_decode_uper; +per_type_encoder_f SpeedProfileMeasurement_encode_uper; +per_type_decoder_f SpeedProfileMeasurement_decode_aper; +per_type_encoder_f SpeedProfileMeasurement_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpeedProfileMeasurement_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedProfileMeasurementList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedProfileMeasurementList.h new file mode 100644 index 000000000..e78e6cd05 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedProfileMeasurementList.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SpeedProfileMeasurementList_H_ +#define _SpeedProfileMeasurementList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SpeedProfileMeasurement.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SpeedProfileMeasurementList */ +typedef struct SpeedProfileMeasurementList { + A_SEQUENCE_OF(SpeedProfileMeasurement_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SpeedProfileMeasurementList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SpeedProfileMeasurementList; +extern asn_SET_OF_specifics_t asn_SPC_SpeedProfileMeasurementList_specs_1; +extern asn_TYPE_member_t asn_MBR_SpeedProfileMeasurementList_1[1]; +extern asn_per_constraints_t asn_PER_type_SpeedProfileMeasurementList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpeedProfileMeasurementList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedandHeadingandThrottleConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedandHeadingandThrottleConfidence.h new file mode 100644 index 000000000..a07a04ae5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SpeedandHeadingandThrottleConfidence.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SpeedandHeadingandThrottleConfidence_H_ +#define _SpeedandHeadingandThrottleConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "HeadingConfidence.h" +#include "SpeedConfidence.h" +#include "ThrottleConfidence.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SpeedandHeadingandThrottleConfidence */ +typedef struct SpeedandHeadingandThrottleConfidence { + HeadingConfidence_t heading; + SpeedConfidence_t speed; + ThrottleConfidence_t throttle; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SpeedandHeadingandThrottleConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SpeedandHeadingandThrottleConfidence; +extern asn_SEQUENCE_specifics_t asn_SPC_SpeedandHeadingandThrottleConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_SpeedandHeadingandThrottleConfidence_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpeedandHeadingandThrottleConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/StabilityControlStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/StabilityControlStatus.h new file mode 100644 index 000000000..c2ab879b4 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/StabilityControlStatus.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _StabilityControlStatus_H_ +#define _StabilityControlStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum StabilityControlStatus { + StabilityControlStatus_unavailable = 0, + StabilityControlStatus_off = 1, + StabilityControlStatus_on = 2, + StabilityControlStatus_engaged = 3 +} e_StabilityControlStatus; + +/* StabilityControlStatus */ +typedef long StabilityControlStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_StabilityControlStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_StabilityControlStatus; +extern const asn_INTEGER_specifics_t asn_SPC_StabilityControlStatus_specs_1; +asn_struct_free_f StabilityControlStatus_free; +asn_struct_print_f StabilityControlStatus_print; +asn_constr_check_f StabilityControlStatus_constraint; +ber_type_decoder_f StabilityControlStatus_decode_ber; +der_type_encoder_f StabilityControlStatus_encode_der; +xer_type_decoder_f StabilityControlStatus_decode_xer; +xer_type_encoder_f StabilityControlStatus_encode_xer; +oer_type_decoder_f StabilityControlStatus_decode_oer; +oer_type_encoder_f StabilityControlStatus_encode_oer; +per_type_decoder_f StabilityControlStatus_decode_uper; +per_type_encoder_f StabilityControlStatus_encode_uper; +per_type_decoder_f StabilityControlStatus_decode_aper; +per_type_encoder_f StabilityControlStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StabilityControlStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/StationID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/StationID.h new file mode 100644 index 000000000..0efbd8c60 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/StationID.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _StationID_H_ +#define _StationID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* StationID */ +typedef unsigned long StationID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_StationID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_StationID; +extern const asn_INTEGER_specifics_t asn_SPC_StationID_specs_1; +asn_struct_free_f StationID_free; +asn_struct_print_f StationID_print; +asn_constr_check_f StationID_constraint; +ber_type_decoder_f StationID_decode_ber; +der_type_encoder_f StationID_encode_der; +xer_type_decoder_f StationID_decode_xer; +xer_type_encoder_f StationID_encode_xer; +oer_type_decoder_f StationID_decode_oer; +oer_type_encoder_f StationID_encode_oer; +per_type_decoder_f StationID_decode_uper; +per_type_encoder_f StationID_encode_uper; +per_type_decoder_f StationID_decode_aper; +per_type_encoder_f StationID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StationID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringAxleLubePressure.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringAxleLubePressure.h new file mode 100644 index 000000000..50801b206 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringAxleLubePressure.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SteeringAxleLubePressure_H_ +#define _SteeringAxleLubePressure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SteeringAxleLubePressure */ +typedef long SteeringAxleLubePressure_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SteeringAxleLubePressure_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SteeringAxleLubePressure; +asn_struct_free_f SteeringAxleLubePressure_free; +asn_struct_print_f SteeringAxleLubePressure_print; +asn_constr_check_f SteeringAxleLubePressure_constraint; +ber_type_decoder_f SteeringAxleLubePressure_decode_ber; +der_type_encoder_f SteeringAxleLubePressure_encode_der; +xer_type_decoder_f SteeringAxleLubePressure_decode_xer; +xer_type_encoder_f SteeringAxleLubePressure_encode_xer; +oer_type_decoder_f SteeringAxleLubePressure_decode_oer; +oer_type_encoder_f SteeringAxleLubePressure_encode_oer; +per_type_decoder_f SteeringAxleLubePressure_decode_uper; +per_type_encoder_f SteeringAxleLubePressure_encode_uper; +per_type_decoder_f SteeringAxleLubePressure_decode_aper; +per_type_encoder_f SteeringAxleLubePressure_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SteeringAxleLubePressure_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringAxleTemperature.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringAxleTemperature.h new file mode 100644 index 000000000..3115107e6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringAxleTemperature.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SteeringAxleTemperature_H_ +#define _SteeringAxleTemperature_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SteeringAxleTemperature */ +typedef long SteeringAxleTemperature_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SteeringAxleTemperature_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SteeringAxleTemperature; +asn_struct_free_f SteeringAxleTemperature_free; +asn_struct_print_f SteeringAxleTemperature_print; +asn_constr_check_f SteeringAxleTemperature_constraint; +ber_type_decoder_f SteeringAxleTemperature_decode_ber; +der_type_encoder_f SteeringAxleTemperature_encode_der; +xer_type_decoder_f SteeringAxleTemperature_decode_xer; +xer_type_encoder_f SteeringAxleTemperature_encode_xer; +oer_type_decoder_f SteeringAxleTemperature_decode_oer; +oer_type_encoder_f SteeringAxleTemperature_encode_oer; +per_type_decoder_f SteeringAxleTemperature_decode_uper; +per_type_encoder_f SteeringAxleTemperature_encode_uper; +per_type_decoder_f SteeringAxleTemperature_decode_aper; +per_type_encoder_f SteeringAxleTemperature_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SteeringAxleTemperature_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringWheelAngle.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringWheelAngle.h new file mode 100644 index 000000000..07c38d04a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringWheelAngle.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SteeringWheelAngle_H_ +#define _SteeringWheelAngle_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SteeringWheelAngle */ +typedef long SteeringWheelAngle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SteeringWheelAngle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngle; +asn_struct_free_f SteeringWheelAngle_free; +asn_struct_print_f SteeringWheelAngle_print; +asn_constr_check_f SteeringWheelAngle_constraint; +ber_type_decoder_f SteeringWheelAngle_decode_ber; +der_type_encoder_f SteeringWheelAngle_encode_der; +xer_type_decoder_f SteeringWheelAngle_decode_xer; +xer_type_encoder_f SteeringWheelAngle_encode_xer; +oer_type_decoder_f SteeringWheelAngle_decode_oer; +oer_type_encoder_f SteeringWheelAngle_encode_oer; +per_type_decoder_f SteeringWheelAngle_decode_uper; +per_type_encoder_f SteeringWheelAngle_encode_uper; +per_type_decoder_f SteeringWheelAngle_decode_aper; +per_type_encoder_f SteeringWheelAngle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SteeringWheelAngle_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringWheelAngleConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringWheelAngleConfidence.h new file mode 100644 index 000000000..bf694e488 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringWheelAngleConfidence.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SteeringWheelAngleConfidence_H_ +#define _SteeringWheelAngleConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SteeringWheelAngleConfidence { + SteeringWheelAngleConfidence_unavailable = 0, + SteeringWheelAngleConfidence_prec2deg = 1, + SteeringWheelAngleConfidence_prec1deg = 2, + SteeringWheelAngleConfidence_prec0_02deg = 3 +} e_SteeringWheelAngleConfidence; + +/* SteeringWheelAngleConfidence */ +typedef long SteeringWheelAngleConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SteeringWheelAngleConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngleConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_SteeringWheelAngleConfidence_specs_1; +asn_struct_free_f SteeringWheelAngleConfidence_free; +asn_struct_print_f SteeringWheelAngleConfidence_print; +asn_constr_check_f SteeringWheelAngleConfidence_constraint; +ber_type_decoder_f SteeringWheelAngleConfidence_decode_ber; +der_type_encoder_f SteeringWheelAngleConfidence_encode_der; +xer_type_decoder_f SteeringWheelAngleConfidence_decode_xer; +xer_type_encoder_f SteeringWheelAngleConfidence_encode_xer; +oer_type_decoder_f SteeringWheelAngleConfidence_decode_oer; +oer_type_encoder_f SteeringWheelAngleConfidence_encode_oer; +per_type_decoder_f SteeringWheelAngleConfidence_decode_uper; +per_type_encoder_f SteeringWheelAngleConfidence_encode_uper; +per_type_decoder_f SteeringWheelAngleConfidence_decode_aper; +per_type_encoder_f SteeringWheelAngleConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SteeringWheelAngleConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringWheelAngleRateOfChange.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringWheelAngleRateOfChange.h new file mode 100644 index 000000000..99420f707 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SteeringWheelAngleRateOfChange.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SteeringWheelAngleRateOfChange_H_ +#define _SteeringWheelAngleRateOfChange_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SteeringWheelAngleRateOfChange */ +typedef long SteeringWheelAngleRateOfChange_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SteeringWheelAngleRateOfChange_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngleRateOfChange; +asn_struct_free_f SteeringWheelAngleRateOfChange_free; +asn_struct_print_f SteeringWheelAngleRateOfChange_print; +asn_constr_check_f SteeringWheelAngleRateOfChange_constraint; +ber_type_decoder_f SteeringWheelAngleRateOfChange_decode_ber; +der_type_encoder_f SteeringWheelAngleRateOfChange_encode_der; +xer_type_decoder_f SteeringWheelAngleRateOfChange_decode_xer; +xer_type_encoder_f SteeringWheelAngleRateOfChange_encode_xer; +oer_type_decoder_f SteeringWheelAngleRateOfChange_decode_oer; +oer_type_encoder_f SteeringWheelAngleRateOfChange_encode_oer; +per_type_decoder_f SteeringWheelAngleRateOfChange_decode_uper; +per_type_encoder_f SteeringWheelAngleRateOfChange_encode_uper; +per_type_decoder_f SteeringWheelAngleRateOfChange_decode_aper; +per_type_encoder_f SteeringWheelAngleRateOfChange_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SteeringWheelAngleRateOfChange_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SummerTime.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SummerTime.h new file mode 100644 index 000000000..a45cc0d96 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SummerTime.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SummerTime_H_ +#define _SummerTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SummerTime { + SummerTime_notInSummerTime = 0, + SummerTime_inSummerTime = 1 +} e_SummerTime; + +/* SummerTime */ +typedef long SummerTime_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SummerTime_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SummerTime; +extern const asn_INTEGER_specifics_t asn_SPC_SummerTime_specs_1; +asn_struct_free_f SummerTime_free; +asn_struct_print_f SummerTime_print; +asn_constr_check_f SummerTime_constraint; +ber_type_decoder_f SummerTime_decode_ber; +der_type_encoder_f SummerTime_encode_der; +xer_type_decoder_f SummerTime_decode_xer; +xer_type_encoder_f SummerTime_encode_xer; +oer_type_decoder_f SummerTime_decode_oer; +oer_type_encoder_f SummerTime_encode_oer; +per_type_decoder_f SummerTime_decode_uper; +per_type_encoder_f SummerTime_encode_uper; +per_type_decoder_f SummerTime_decode_aper; +per_type_encoder_f SummerTime_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SummerTime_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SunSensor.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SunSensor.h new file mode 100644 index 000000000..67569433e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SunSensor.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SunSensor_H_ +#define _SunSensor_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SunSensor */ +typedef long SunSensor_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SunSensor_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SunSensor; +asn_struct_free_f SunSensor_free; +asn_struct_print_f SunSensor_print; +asn_constr_check_f SunSensor_constraint; +ber_type_decoder_f SunSensor_decode_ber; +der_type_encoder_f SunSensor_encode_der; +xer_type_decoder_f SunSensor_decode_xer; +xer_type_encoder_f SunSensor_encode_xer; +oer_type_decoder_f SunSensor_decode_oer; +oer_type_encoder_f SunSensor_encode_oer; +per_type_decoder_f SunSensor_decode_uper; +per_type_encoder_f SunSensor_encode_uper; +per_type_decoder_f SunSensor_decode_aper; +per_type_encoder_f SunSensor_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SunSensor_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/SupplementalVehicleExtensions.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SupplementalVehicleExtensions.h new file mode 100644 index 000000000..d23564126 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/SupplementalVehicleExtensions.h @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _SupplementalVehicleExtensions_H_ +#define _SupplementalVehicleExtensions_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BasicVehicleClass.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct VehicleClassification; +struct VehicleData; +struct WeatherReport; +struct WeatherProbe; +struct ObstacleDetection; +struct DisabledVehicle; +struct SpeedProfile; +struct RTCMPackage; +struct Reg_SupplementalVehicleExtensions; + +/* SupplementalVehicleExtensions */ +typedef struct SupplementalVehicleExtensions { + BasicVehicleClass_t *classification; /* OPTIONAL */ + struct VehicleClassification *classDetails; /* OPTIONAL */ + struct VehicleData *vehicleData; /* OPTIONAL */ + struct WeatherReport *weatherReport; /* OPTIONAL */ + struct WeatherProbe *weatherProbe; /* OPTIONAL */ + struct ObstacleDetection *obstacle; /* OPTIONAL */ + struct DisabledVehicle *status; /* OPTIONAL */ + struct SpeedProfile *speedProfile; /* OPTIONAL */ + struct RTCMPackage *theRTCM; /* OPTIONAL */ + struct SupplementalVehicleExtensions__regional { + A_SEQUENCE_OF(struct Reg_SupplementalVehicleExtensions) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SupplementalVehicleExtensions_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SupplementalVehicleExtensions; +extern asn_SEQUENCE_specifics_t asn_SPC_SupplementalVehicleExtensions_specs_1; +extern asn_TYPE_member_t asn_MBR_SupplementalVehicleExtensions_1[10]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "VehicleClassification.h" +#include "VehicleData.h" +#include "WeatherReport.h" +#include "WeatherProbe.h" +#include "ObstacleDetection.h" +#include "DisabledVehicle.h" +#include "SpeedProfile.h" +#include "RTCMPackage.h" +#include "RegionalExtension.h" + +#endif /* _SupplementalVehicleExtensions_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/T61String.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/T61String.h new file mode 100644 index 000000000..27f7cc6d3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/T61String.h @@ -0,0 +1,34 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _T61String_H_ +#define _T61String_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t T61String_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_T61String; +extern asn_TYPE_operation_t asn_OP_T61String; + +#define T61String_free OCTET_STRING_free +#define T61String_print OCTET_STRING_print +#define T61String_compare OCTET_STRING_compare +#define T61String_constraint asn_generic_unknown_constraint +#define T61String_decode_ber OCTET_STRING_decode_ber +#define T61String_encode_der OCTET_STRING_encode_der +#define T61String_decode_xer OCTET_STRING_decode_xer_hex +#define T61String_encode_xer OCTET_STRING_encode_xer +#define T61String_decode_uper OCTET_STRING_decode_uper +#define T61String_encode_uper OCTET_STRING_encode_uper + +#ifdef __cplusplus +} +#endif + +#endif /* _T61String_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TeletexString.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TeletexString.h new file mode 100644 index 000000000..59d0ef79c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TeletexString.h @@ -0,0 +1,34 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _TeletexString_H_ +#define _TeletexString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t TeletexString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_TeletexString; +extern asn_TYPE_operation_t asn_OP_TeletexString; + +#define TeletexString_free OCTET_STRING_free +#define TeletexString_print OCTET_STRING_print +#define TeletexString_compare OCTET_STRING_compare +#define TeletexString_constraint asn_generic_unknown_constraint +#define TeletexString_decode_ber OCTET_STRING_decode_ber +#define TeletexString_encode_der OCTET_STRING_encode_der +#define TeletexString_decode_xer OCTET_STRING_decode_xer_hex +#define TeletexString_encode_xer OCTET_STRING_encode_xer +#define TeletexString_decode_uper OCTET_STRING_decode_uper +#define TeletexString_encode_uper OCTET_STRING_encode_uper + +#ifdef __cplusplus +} +#endif + +#endif /* _TeletexString_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TemporaryID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TemporaryID.h new file mode 100644 index 000000000..d1b98b576 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TemporaryID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TemporaryID_H_ +#define _TemporaryID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TemporaryID */ +typedef OCTET_STRING_t TemporaryID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TemporaryID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TemporaryID; +asn_struct_free_f TemporaryID_free; +asn_struct_print_f TemporaryID_print; +asn_constr_check_f TemporaryID_constraint; +ber_type_decoder_f TemporaryID_decode_ber; +der_type_encoder_f TemporaryID_encode_der; +xer_type_decoder_f TemporaryID_decode_xer; +xer_type_encoder_f TemporaryID_encode_xer; +oer_type_decoder_f TemporaryID_decode_oer; +oer_type_encoder_f TemporaryID_encode_oer; +per_type_decoder_f TemporaryID_decode_uper; +per_type_encoder_f TemporaryID_encode_uper; +per_type_decoder_f TemporaryID_decode_aper; +per_type_encoder_f TemporaryID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TemporaryID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TenthSecond.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TenthSecond.h new file mode 100644 index 000000000..7b81caed9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TenthSecond.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TenthSecond_H_ +#define _TenthSecond_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TenthSecond */ +typedef long TenthSecond_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TenthSecond_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TenthSecond; +asn_struct_free_f TenthSecond_free; +asn_struct_print_f TenthSecond_print; +asn_constr_check_f TenthSecond_constraint; +ber_type_decoder_f TenthSecond_decode_ber; +der_type_encoder_f TenthSecond_encode_der; +xer_type_decoder_f TenthSecond_decode_xer; +xer_type_encoder_f TenthSecond_encode_xer; +oer_type_decoder_f TenthSecond_decode_oer; +oer_type_encoder_f TenthSecond_encode_oer; +per_type_decoder_f TenthSecond_decode_uper; +per_type_encoder_f TenthSecond_encode_uper; +per_type_decoder_f TenthSecond_decode_aper; +per_type_encoder_f TenthSecond_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TenthSecond_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TermDistance.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TermDistance.h new file mode 100644 index 000000000..38dee0530 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TermDistance.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TermDistance_H_ +#define _TermDistance_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TermDistance */ +typedef long TermDistance_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TermDistance_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TermDistance; +asn_struct_free_f TermDistance_free; +asn_struct_print_f TermDistance_print; +asn_constr_check_f TermDistance_constraint; +ber_type_decoder_f TermDistance_decode_ber; +der_type_encoder_f TermDistance_encode_der; +xer_type_decoder_f TermDistance_decode_xer; +xer_type_encoder_f TermDistance_encode_xer; +oer_type_decoder_f TermDistance_decode_oer; +oer_type_encoder_f TermDistance_encode_oer; +per_type_decoder_f TermDistance_decode_uper; +per_type_encoder_f TermDistance_encode_uper; +per_type_decoder_f TermDistance_decode_aper; +per_type_encoder_f TermDistance_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TermDistance_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TermTime.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TermTime.h new file mode 100644 index 000000000..5d7567842 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TermTime.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TermTime_H_ +#define _TermTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TermTime */ +typedef long TermTime_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TermTime_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TermTime; +asn_struct_free_f TermTime_free; +asn_struct_print_f TermTime_print; +asn_constr_check_f TermTime_constraint; +ber_type_decoder_f TermTime_decode_ber; +der_type_encoder_f TermTime_encode_der; +xer_type_decoder_f TermTime_decode_xer; +xer_type_encoder_f TermTime_encode_xer; +oer_type_decoder_f TermTime_decode_oer; +oer_type_encoder_f TermTime_encode_oer; +per_type_decoder_f TermTime_decode_uper; +per_type_encoder_f TermTime_encode_uper; +per_type_decoder_f TermTime_decode_aper; +per_type_encoder_f TermTime_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TermTime_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage00.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage00.h new file mode 100644 index 000000000..a420a7fd3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage00.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TestMessage00_H_ +#define _TestMessage00_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityHeader.h" +#include "MobilityRequest.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +// struct Header; +// struct Reg_BasicSafetyMessage; + +/* TestMessage00 */ +typedef struct TestMessage00 { + MobilityHeader_t header; /* OPTIONAL */ + MobilityRequest_t body; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage00_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage00; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage00_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage00_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +// #include "Header.h" +// #include "RegionalExtension.h" + +#endif /* _TestMessage00_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage01.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage01.h new file mode 100644 index 000000000..31f0bf377 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage01.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TestMessage01_H_ +#define _TestMessage01_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityHeader.h" +#include "MobilityResponse.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +// struct Header; +// struct Reg_BasicSafetyMessage; + +/* TestMessage01 */ +typedef struct TestMessage01 { + MobilityHeader_t header; /* OPTIONAL */ + MobilityResponse_t body; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage01_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage01; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage01_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage01_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +// #include "Header.h" +// #include "RegionalExtension.h" + +#endif /* _TestMessage01_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage02.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage02.h new file mode 100644 index 000000000..1010456d8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage02.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TestMessage02_H_ +#define _TestMessage02_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityHeader.h" +#include "MobilityPath.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/* TestMessage02 */ +typedef struct TestMessage02 { + MobilityHeader_t header; /* OPTIONAL */ + MobilityPath_t body; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage02_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage02; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage02_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage02_1[2]; + +#ifdef __cplusplus +} +#endif + + +#endif /* _TestMessage02_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage03.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage03.h new file mode 100644 index 000000000..9037ab733 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage03.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _TestMessage03_H_ +#define _TestMessage03_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MobilityHeader.h" +#include "MobilityOperation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TestMessage03 */ +typedef struct TestMessage03 { + MobilityHeader_t header; + MobilityOperation_t body; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage03_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage03; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage03_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage03_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TestMessage03_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage04.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage04.h new file mode 100644 index 000000000..49bd4749b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage04.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TestMessage04_H_ +#define _TestMessage04_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TrafficControlRequest.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TestMessage04 */ +typedef struct TestMessage04 { + TrafficControlRequest_t body; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage04_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage04; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage04_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage04_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TestMessage04_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage05.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage05.h new file mode 100644 index 000000000..1f59196ef --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage05.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TestMessage05_H_ +#define _TestMessage05_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TrafficControlMessage.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TestMessage05 */ +typedef struct TestMessage05 { + TrafficControlMessage_t body; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage05_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage05; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage05_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage05_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TestMessage05_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage06.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage06.h new file mode 100644 index 000000000..fa833cfd7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage06.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage06" + * found in "J2735-TestMessage06.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TestMessage06_H_ +#define _TestMessage06_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Header; +struct Reg_TestMessage06; + +/* TestMessage06 */ +typedef struct TestMessage06 { + struct Header *header; /* OPTIONAL */ + struct Reg_TestMessage06 *regional; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage06_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage06; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage06_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage06_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Header.h" +#include "RegionalExtension.h" + +#endif /* _TestMessage06_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage07.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage07.h new file mode 100644 index 000000000..849dc7cfa --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage07.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage07" + * found in "J2735-TestMessage07.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TestMessage07_H_ +#define _TestMessage07_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Header; +struct Reg_TestMessage07; + +/* TestMessage07 */ +typedef struct TestMessage07 { + struct Header *header; /* OPTIONAL */ + struct Reg_TestMessage07 *regional; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage07_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage07; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage07_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage07_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Header.h" +#include "RegionalExtension.h" + +#endif /* _TestMessage07_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage08.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage08.h new file mode 100644 index 000000000..badb3ac48 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage08.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage08" + * found in "J2735-TestMessage08.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TestMessage08_H_ +#define _TestMessage08_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Header; +struct Reg_TestMessage08; + +/* TestMessage08 */ +typedef struct TestMessage08 { + struct Header *header; /* OPTIONAL */ + struct Reg_TestMessage08 *regional; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage08_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage08; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage08_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage08_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Header.h" +#include "RegionalExtension.h" + +#endif /* _TestMessage08_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage09.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage09.h new file mode 100644 index 000000000..160c62ed4 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage09.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage09" + * found in "J2735-TestMessage09.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TestMessage09_H_ +#define _TestMessage09_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Header; +struct Reg_TestMessage09; + +/* TestMessage09 */ +typedef struct TestMessage09 { + struct Header *header; /* OPTIONAL */ + struct Reg_TestMessage09 *regional; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage09_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage09; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage09_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage09_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Header.h" +#include "RegionalExtension.h" + +#endif /* _TestMessage09_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage10.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage10.h new file mode 100644 index 000000000..8ae113383 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage10.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage10" + * found in "J2735-TestMessage10.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TestMessage10_H_ +#define _TestMessage10_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Header; +struct Reg_TestMessage10; + +/* TestMessage10 */ +typedef struct TestMessage10 { + struct Header *header; /* OPTIONAL */ + struct Reg_TestMessage10 *regional; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage10_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage10; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage10_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage10_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Header.h" +#include "RegionalExtension.h" + +#endif /* _TestMessage10_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage11.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage11.h new file mode 100644 index 000000000..dadb8d56b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage11.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage11" + * found in "J2735-TestMessage11.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TestMessage11_H_ +#define _TestMessage11_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Header; +struct Reg_TestMessage11; + +/* TestMessage11 */ +typedef struct TestMessage11 { + struct Header *header; /* OPTIONAL */ + struct Reg_TestMessage11 *regional; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage11_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage11; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage11_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage11_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Header.h" +#include "RegionalExtension.h" + +#endif /* _TestMessage11_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage12.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage12.h new file mode 100644 index 000000000..d7f2c7115 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage12.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage12" + * found in "J2735-TestMessage12.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TestMessage12_H_ +#define _TestMessage12_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Header; +struct Reg_TestMessage12; + +/* TestMessage12 */ +typedef struct TestMessage12 { + struct Header *header; /* OPTIONAL */ + struct Reg_TestMessage12 *regional; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage12_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage12; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage12_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage12_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Header.h" +#include "RegionalExtension.h" + +#endif /* _TestMessage12_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage13.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage13.h new file mode 100644 index 000000000..d8c4ced14 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage13.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage13" + * found in "J2735-TestMessage13.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TestMessage13_H_ +#define _TestMessage13_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Header; +struct Reg_TestMessage13; + +/* TestMessage13 */ +typedef struct TestMessage13 { + struct Header *header; /* OPTIONAL */ + struct Reg_TestMessage13 *regional; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage13_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage13; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage13_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage13_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Header.h" +#include "RegionalExtension.h" + +#endif /* _TestMessage13_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage14.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage14.h new file mode 100644 index 000000000..427d63b2a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage14.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage14" + * found in "J2735-TestMessage14.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TestMessage14_H_ +#define _TestMessage14_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Header; +struct Reg_TestMessage14; + +/* TestMessage14 */ +typedef struct TestMessage14 { + struct Header *header; /* OPTIONAL */ + struct Reg_TestMessage14 *regional; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage14_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage14; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage14_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage14_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Header.h" +#include "RegionalExtension.h" + +#endif /* _TestMessage14_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage15.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage15.h new file mode 100644 index 000000000..23a3a176a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TestMessage15.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage15" + * found in "J2735-TestMessage15.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TestMessage15_H_ +#define _TestMessage15_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Header; +struct Reg_TestMessage15; + +/* TestMessage15 */ +typedef struct TestMessage15 { + struct Header *header; /* OPTIONAL */ + struct Reg_TestMessage15 *regional; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestMessage15_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestMessage15; +extern asn_SEQUENCE_specifics_t asn_SPC_TestMessage15_specs_1; +extern asn_TYPE_member_t asn_MBR_TestMessage15_1[2]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Header.h" +#include "RegionalExtension.h" + +#endif /* _TestMessage15_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ThrottleConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ThrottleConfidence.h new file mode 100644 index 000000000..d3b2ba149 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ThrottleConfidence.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ThrottleConfidence_H_ +#define _ThrottleConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ThrottleConfidence { + ThrottleConfidence_unavailable = 0, + ThrottleConfidence_prec10percent = 1, + ThrottleConfidence_prec1percent = 2, + ThrottleConfidence_prec0_5percent = 3 +} e_ThrottleConfidence; + +/* ThrottleConfidence */ +typedef long ThrottleConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ThrottleConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ThrottleConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_ThrottleConfidence_specs_1; +asn_struct_free_f ThrottleConfidence_free; +asn_struct_print_f ThrottleConfidence_print; +asn_constr_check_f ThrottleConfidence_constraint; +ber_type_decoder_f ThrottleConfidence_decode_ber; +der_type_encoder_f ThrottleConfidence_encode_der; +xer_type_decoder_f ThrottleConfidence_decode_xer; +xer_type_encoder_f ThrottleConfidence_encode_xer; +oer_type_decoder_f ThrottleConfidence_decode_oer; +oer_type_encoder_f ThrottleConfidence_encode_oer; +per_type_decoder_f ThrottleConfidence_decode_uper; +per_type_encoder_f ThrottleConfidence_encode_uper; +per_type_decoder_f ThrottleConfidence_decode_aper; +per_type_encoder_f ThrottleConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ThrottleConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ThrottlePosition.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ThrottlePosition.h new file mode 100644 index 000000000..8c030727e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ThrottlePosition.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ThrottlePosition_H_ +#define _ThrottlePosition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ThrottlePosition */ +typedef long ThrottlePosition_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ThrottlePosition_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ThrottlePosition; +asn_struct_free_f ThrottlePosition_free; +asn_struct_print_f ThrottlePosition_print; +asn_constr_check_f ThrottlePosition_constraint; +ber_type_decoder_f ThrottlePosition_decode_ber; +der_type_encoder_f ThrottlePosition_encode_der; +xer_type_decoder_f ThrottlePosition_decode_xer; +xer_type_encoder_f ThrottlePosition_encode_xer; +oer_type_decoder_f ThrottlePosition_decode_oer; +oer_type_encoder_f ThrottlePosition_encode_oer; +per_type_decoder_f ThrottlePosition_decode_uper; +per_type_encoder_f ThrottlePosition_encode_uper; +per_type_decoder_f ThrottlePosition_decode_aper; +per_type_encoder_f ThrottlePosition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ThrottlePosition_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeChangeDetails.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeChangeDetails.h new file mode 100644 index 000000000..b3261e5de --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeChangeDetails.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TimeChangeDetails_H_ +#define _TimeChangeDetails_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SPAT_TimeMark.h" +#include "TimeIntervalConfidence.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TimeChangeDetails */ +typedef struct TimeChangeDetails { + SPAT_TimeMark_t *startTime; /* OPTIONAL */ + SPAT_TimeMark_t minEndTime; + SPAT_TimeMark_t *maxEndTime; /* OPTIONAL */ + SPAT_TimeMark_t *likelyTime; /* OPTIONAL */ + TimeIntervalConfidence_t *confidence; /* OPTIONAL */ + SPAT_TimeMark_t *nextTime; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TimeChangeDetails_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TimeChangeDetails; +extern asn_SEQUENCE_specifics_t asn_SPC_TimeChangeDetails_specs_1; +extern asn_TYPE_member_t asn_MBR_TimeChangeDetails_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeChangeDetails_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeConfidence.h new file mode 100644 index 000000000..6f518e247 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeConfidence.h @@ -0,0 +1,91 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TimeConfidence_H_ +#define _TimeConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TimeConfidence { + TimeConfidence_unavailable = 0, + TimeConfidence_time_100_000 = 1, + TimeConfidence_time_050_000 = 2, + TimeConfidence_time_020_000 = 3, + TimeConfidence_time_010_000 = 4, + TimeConfidence_time_002_000 = 5, + TimeConfidence_time_001_000 = 6, + TimeConfidence_time_000_500 = 7, + TimeConfidence_time_000_200 = 8, + TimeConfidence_time_000_100 = 9, + TimeConfidence_time_000_050 = 10, + TimeConfidence_time_000_020 = 11, + TimeConfidence_time_000_010 = 12, + TimeConfidence_time_000_005 = 13, + TimeConfidence_time_000_002 = 14, + TimeConfidence_time_000_001 = 15, + TimeConfidence_time_000_000_5 = 16, + TimeConfidence_time_000_000_2 = 17, + TimeConfidence_time_000_000_1 = 18, + TimeConfidence_time_000_000_05 = 19, + TimeConfidence_time_000_000_02 = 20, + TimeConfidence_time_000_000_01 = 21, + TimeConfidence_time_000_000_005 = 22, + TimeConfidence_time_000_000_002 = 23, + TimeConfidence_time_000_000_001 = 24, + TimeConfidence_time_000_000_000_5 = 25, + TimeConfidence_time_000_000_000_2 = 26, + TimeConfidence_time_000_000_000_1 = 27, + TimeConfidence_time_000_000_000_05 = 28, + TimeConfidence_time_000_000_000_02 = 29, + TimeConfidence_time_000_000_000_01 = 30, + TimeConfidence_time_000_000_000_005 = 31, + TimeConfidence_time_000_000_000_002 = 32, + TimeConfidence_time_000_000_000_001 = 33, + TimeConfidence_time_000_000_000_000_5 = 34, + TimeConfidence_time_000_000_000_000_2 = 35, + TimeConfidence_time_000_000_000_000_1 = 36, + TimeConfidence_time_000_000_000_000_05 = 37, + TimeConfidence_time_000_000_000_000_02 = 38, + TimeConfidence_time_000_000_000_000_01 = 39 +} e_TimeConfidence; + +/* TimeConfidence */ +typedef long TimeConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TimeConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TimeConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_TimeConfidence_specs_1; +asn_struct_free_f TimeConfidence_free; +asn_struct_print_f TimeConfidence_print; +asn_constr_check_f TimeConfidence_constraint; +ber_type_decoder_f TimeConfidence_decode_ber; +der_type_encoder_f TimeConfidence_encode_der; +xer_type_decoder_f TimeConfidence_decode_xer; +xer_type_encoder_f TimeConfidence_encode_xer; +oer_type_decoder_f TimeConfidence_decode_oer; +oer_type_encoder_f TimeConfidence_encode_oer; +per_type_decoder_f TimeConfidence_decode_uper; +per_type_encoder_f TimeConfidence_encode_uper; +per_type_decoder_f TimeConfidence_decode_aper; +per_type_encoder_f TimeConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeIntervalConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeIntervalConfidence.h new file mode 100644 index 000000000..ad28ca402 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeIntervalConfidence.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TimeIntervalConfidence_H_ +#define _TimeIntervalConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TimeIntervalConfidence */ +typedef long TimeIntervalConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TimeIntervalConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TimeIntervalConfidence; +asn_struct_free_f TimeIntervalConfidence_free; +asn_struct_print_f TimeIntervalConfidence_print; +asn_constr_check_f TimeIntervalConfidence_constraint; +ber_type_decoder_f TimeIntervalConfidence_decode_ber; +der_type_encoder_f TimeIntervalConfidence_encode_der; +xer_type_decoder_f TimeIntervalConfidence_decode_xer; +xer_type_encoder_f TimeIntervalConfidence_encode_xer; +oer_type_decoder_f TimeIntervalConfidence_decode_oer; +oer_type_encoder_f TimeIntervalConfidence_encode_oer; +per_type_decoder_f TimeIntervalConfidence_decode_uper; +per_type_encoder_f TimeIntervalConfidence_encode_uper; +per_type_decoder_f TimeIntervalConfidence_decode_aper; +per_type_encoder_f TimeIntervalConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeIntervalConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeOffset.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeOffset.h new file mode 100644 index 000000000..cb32e7883 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeOffset.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TimeOffset_H_ +#define _TimeOffset_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TimeOffset */ +typedef long TimeOffset_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TimeOffset_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TimeOffset; +asn_struct_free_f TimeOffset_free; +asn_struct_print_f TimeOffset_print; +asn_constr_check_f TimeOffset_constraint; +ber_type_decoder_f TimeOffset_decode_ber; +der_type_encoder_f TimeOffset_encode_der; +xer_type_decoder_f TimeOffset_decode_xer; +xer_type_encoder_f TimeOffset_encode_xer; +oer_type_decoder_f TimeOffset_decode_oer; +oer_type_encoder_f TimeOffset_encode_oer; +per_type_decoder_f TimeOffset_decode_uper; +per_type_encoder_f TimeOffset_encode_uper; +per_type_decoder_f TimeOffset_decode_aper; +per_type_encoder_f TimeOffset_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeOffset_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeRemaining.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeRemaining.h new file mode 100644 index 000000000..d16b046e0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TimeRemaining.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TimeRemaining_H_ +#define _TimeRemaining_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TimeRemaining */ +typedef long TimeRemaining_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TimeRemaining_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TimeRemaining; +asn_struct_free_f TimeRemaining_free; +asn_struct_print_f TimeRemaining_print; +asn_constr_check_f TimeRemaining_constraint; +ber_type_decoder_f TimeRemaining_decode_ber; +der_type_encoder_f TimeRemaining_encode_der; +xer_type_decoder_f TimeRemaining_decode_xer; +xer_type_encoder_f TimeRemaining_encode_xer; +oer_type_decoder_f TimeRemaining_decode_oer; +oer_type_encoder_f TimeRemaining_encode_oer; +per_type_decoder_f TimeRemaining_decode_uper; +per_type_encoder_f TimeRemaining_encode_uper; +per_type_decoder_f TimeRemaining_decode_aper; +per_type_encoder_f TimeRemaining_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeRemaining_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireData.h new file mode 100644 index 000000000..28aa0a85f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireData.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TireData_H_ +#define _TireData_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TireLocation.h" +#include "TirePressure.h" +#include "TireTemp.h" +#include "WheelSensorStatus.h" +#include "WheelEndElectFault.h" +#include "TireLeakageRate.h" +#include "TirePressureThresholdDetection.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TireData */ +typedef struct TireData { + TireLocation_t *location; /* OPTIONAL */ + TirePressure_t *pressure; /* OPTIONAL */ + TireTemp_t *temp; /* OPTIONAL */ + WheelSensorStatus_t *wheelSensorStatus; /* OPTIONAL */ + WheelEndElectFault_t *wheelEndElectFault; /* OPTIONAL */ + TireLeakageRate_t *leakageRate; /* OPTIONAL */ + TirePressureThresholdDetection_t *detection; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TireData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TireData; +extern asn_SEQUENCE_specifics_t asn_SPC_TireData_specs_1; +extern asn_TYPE_member_t asn_MBR_TireData_1[7]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TireData_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireDataList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireDataList.h new file mode 100644 index 000000000..6d6faf407 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireDataList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TireDataList_H_ +#define _TireDataList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TireData; + +/* TireDataList */ +typedef struct TireDataList { + A_SEQUENCE_OF(struct TireData) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TireDataList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TireDataList; +extern asn_SET_OF_specifics_t asn_SPC_TireDataList_specs_1; +extern asn_TYPE_member_t asn_MBR_TireDataList_1[1]; +extern asn_per_constraints_t asn_PER_type_TireDataList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "TireData.h" + +#endif /* _TireDataList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireLeakageRate.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireLeakageRate.h new file mode 100644 index 000000000..fd444333a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireLeakageRate.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TireLeakageRate_H_ +#define _TireLeakageRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TireLeakageRate */ +typedef long TireLeakageRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TireLeakageRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TireLeakageRate; +asn_struct_free_f TireLeakageRate_free; +asn_struct_print_f TireLeakageRate_print; +asn_constr_check_f TireLeakageRate_constraint; +ber_type_decoder_f TireLeakageRate_decode_ber; +der_type_encoder_f TireLeakageRate_encode_der; +xer_type_decoder_f TireLeakageRate_decode_xer; +xer_type_encoder_f TireLeakageRate_encode_xer; +oer_type_decoder_f TireLeakageRate_decode_oer; +oer_type_encoder_f TireLeakageRate_encode_oer; +per_type_decoder_f TireLeakageRate_decode_uper; +per_type_encoder_f TireLeakageRate_encode_uper; +per_type_decoder_f TireLeakageRate_decode_aper; +per_type_encoder_f TireLeakageRate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TireLeakageRate_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireLocation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireLocation.h new file mode 100644 index 000000000..f90e5e306 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireLocation.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TireLocation_H_ +#define _TireLocation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TireLocation */ +typedef long TireLocation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TireLocation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TireLocation; +asn_struct_free_f TireLocation_free; +asn_struct_print_f TireLocation_print; +asn_constr_check_f TireLocation_constraint; +ber_type_decoder_f TireLocation_decode_ber; +der_type_encoder_f TireLocation_encode_der; +xer_type_decoder_f TireLocation_decode_xer; +xer_type_encoder_f TireLocation_encode_xer; +oer_type_decoder_f TireLocation_decode_oer; +oer_type_encoder_f TireLocation_encode_oer; +per_type_decoder_f TireLocation_decode_uper; +per_type_encoder_f TireLocation_encode_uper; +per_type_decoder_f TireLocation_decode_aper; +per_type_encoder_f TireLocation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TireLocation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TirePressure.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TirePressure.h new file mode 100644 index 000000000..b246eaff3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TirePressure.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TirePressure_H_ +#define _TirePressure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TirePressure */ +typedef long TirePressure_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TirePressure_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TirePressure; +asn_struct_free_f TirePressure_free; +asn_struct_print_f TirePressure_print; +asn_constr_check_f TirePressure_constraint; +ber_type_decoder_f TirePressure_decode_ber; +der_type_encoder_f TirePressure_encode_der; +xer_type_decoder_f TirePressure_decode_xer; +xer_type_encoder_f TirePressure_encode_xer; +oer_type_decoder_f TirePressure_decode_oer; +oer_type_encoder_f TirePressure_encode_oer; +per_type_decoder_f TirePressure_decode_uper; +per_type_encoder_f TirePressure_encode_uper; +per_type_decoder_f TirePressure_decode_aper; +per_type_encoder_f TirePressure_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TirePressure_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TirePressureThresholdDetection.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TirePressureThresholdDetection.h new file mode 100644 index 000000000..cb27be43e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TirePressureThresholdDetection.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TirePressureThresholdDetection_H_ +#define _TirePressureThresholdDetection_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TirePressureThresholdDetection { + TirePressureThresholdDetection_noData = 0, + TirePressureThresholdDetection_overPressure = 1, + TirePressureThresholdDetection_noWarningPressure = 2, + TirePressureThresholdDetection_underPressure = 3, + TirePressureThresholdDetection_extremeUnderPressure = 4, + TirePressureThresholdDetection_undefined = 5, + TirePressureThresholdDetection_errorIndicator = 6, + TirePressureThresholdDetection_notAvailable = 7 +} e_TirePressureThresholdDetection; + +/* TirePressureThresholdDetection */ +typedef long TirePressureThresholdDetection_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TirePressureThresholdDetection_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TirePressureThresholdDetection; +extern const asn_INTEGER_specifics_t asn_SPC_TirePressureThresholdDetection_specs_1; +asn_struct_free_f TirePressureThresholdDetection_free; +asn_struct_print_f TirePressureThresholdDetection_print; +asn_constr_check_f TirePressureThresholdDetection_constraint; +ber_type_decoder_f TirePressureThresholdDetection_decode_ber; +der_type_encoder_f TirePressureThresholdDetection_encode_der; +xer_type_decoder_f TirePressureThresholdDetection_decode_xer; +xer_type_encoder_f TirePressureThresholdDetection_encode_xer; +oer_type_decoder_f TirePressureThresholdDetection_decode_oer; +oer_type_encoder_f TirePressureThresholdDetection_encode_oer; +per_type_decoder_f TirePressureThresholdDetection_decode_uper; +per_type_encoder_f TirePressureThresholdDetection_encode_uper; +per_type_decoder_f TirePressureThresholdDetection_decode_aper; +per_type_encoder_f TirePressureThresholdDetection_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TirePressureThresholdDetection_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireTemp.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireTemp.h new file mode 100644 index 000000000..fa81dd865 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TireTemp.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TireTemp_H_ +#define _TireTemp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TireTemp */ +typedef long TireTemp_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TireTemp_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TireTemp; +asn_struct_free_f TireTemp_free; +asn_struct_print_f TireTemp_print; +asn_constr_check_f TireTemp_constraint; +ber_type_decoder_f TireTemp_decode_ber; +der_type_encoder_f TireTemp_encode_der; +xer_type_decoder_f TireTemp_decode_xer; +xer_type_encoder_f TireTemp_encode_xer; +oer_type_decoder_f TireTemp_decode_oer; +oer_type_encoder_f TireTemp_encode_oer; +per_type_decoder_f TireTemp_decode_uper; +per_type_encoder_f TireTemp_encode_uper; +per_type_decoder_f TireTemp_decode_aper; +per_type_encoder_f TireTemp_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TireTemp_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TractionControlStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TractionControlStatus.h new file mode 100644 index 000000000..3f1be2b62 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TractionControlStatus.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TractionControlStatus_H_ +#define _TractionControlStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TractionControlStatus { + TractionControlStatus_unavailable = 0, + TractionControlStatus_off = 1, + TractionControlStatus_on = 2, + TractionControlStatus_engaged = 3 +} e_TractionControlStatus; + +/* TractionControlStatus */ +typedef long TractionControlStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TractionControlStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TractionControlStatus; +extern const asn_INTEGER_specifics_t asn_SPC_TractionControlStatus_specs_1; +asn_struct_free_f TractionControlStatus_free; +asn_struct_print_f TractionControlStatus_print; +asn_constr_check_f TractionControlStatus_constraint; +ber_type_decoder_f TractionControlStatus_decode_ber; +der_type_encoder_f TractionControlStatus_encode_der; +xer_type_decoder_f TractionControlStatus_decode_xer; +xer_type_encoder_f TractionControlStatus_encode_xer; +oer_type_decoder_f TractionControlStatus_decode_oer; +oer_type_encoder_f TractionControlStatus_encode_oer; +per_type_decoder_f TractionControlStatus_decode_uper; +per_type_encoder_f TractionControlStatus_encode_uper; +per_type_decoder_f TractionControlStatus_decode_aper; +per_type_encoder_f TractionControlStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TractionControlStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlBounds.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlBounds.h new file mode 100644 index 000000000..6bf623745 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlBounds.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TrafficControlBounds_H_ +#define _TrafficControlBounds_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EpochMins.h" +#include "Longitude.h" +#include "Latitude.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct OffsetPoint; + +/* TrafficControlBounds */ +typedef struct TrafficControlBounds { + EpochMins_t oldest; + Longitude_t reflon; + Latitude_t reflat; + struct TrafficControlBounds__offsets { + A_SEQUENCE_OF(struct OffsetPoint) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } offsets; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlBounds_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlBounds; +extern asn_SEQUENCE_specifics_t asn_SPC_TrafficControlBounds_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficControlBounds_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "OffsetPoint.h" + +#endif /* _TrafficControlBounds_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlDetail.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlDetail.h new file mode 100644 index 000000000..e3bf5539c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlDetail.h @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "CARMA-CLOUD" + * found in "asn/cc_traffic_control_messages_asn1.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _TrafficControlDetail_H_ +#define _TrafficControlDetail_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" +#include "NULL.h" +#include "NativeEnumerated.h" +#include "NativeInteger.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrafficControlDetail_PR { + TrafficControlDetail_PR_NOTHING, /* No components present */ + TrafficControlDetail_PR_signal, + TrafficControlDetail_PR_stop, + TrafficControlDetail_PR_yield, + TrafficControlDetail_PR_notowing, + TrafficControlDetail_PR_restricted, + TrafficControlDetail_PR_closed, + TrafficControlDetail_PR_chains, + TrafficControlDetail_PR_direction, + TrafficControlDetail_PR_lataffinity, + TrafficControlDetail_PR_latperm, + TrafficControlDetail_PR_parking, + TrafficControlDetail_PR_minspeed, + TrafficControlDetail_PR_maxspeed, + TrafficControlDetail_PR_minhdwy, + TrafficControlDetail_PR_maxvehmass, + TrafficControlDetail_PR_maxvehheight, + TrafficControlDetail_PR_maxvehwidth, + TrafficControlDetail_PR_maxvehlength, + TrafficControlDetail_PR_maxvehaxles, + TrafficControlDetail_PR_minvehocc, + TrafficControlDetail_PR_maxplatoonsize, + TrafficControlDetail_PR_minplatoonhdwy, + /* Extensions may appear below */ + +} TrafficControlDetail_PR; +typedef enum TrafficControlDetail__closed { + TrafficControlDetail__closed_open = 0, + TrafficControlDetail__closed_closed = 1, + TrafficControlDetail__closed_taperleft = 2, + TrafficControlDetail__closed_taperright = 3, + TrafficControlDetail__closed_openleft = 4, + TrafficControlDetail__closed_openright = 5 +} e_TrafficControlDetail__closed; +typedef enum TrafficControlDetail__chains { + TrafficControlDetail__chains_no = 0, + TrafficControlDetail__chains_permitted = 1, + TrafficControlDetail__chains_required = 2 +} e_TrafficControlDetail__chains; +typedef enum TrafficControlDetail__direction { + TrafficControlDetail__direction_forward = 0, + TrafficControlDetail__direction_reverse = 1 +} e_TrafficControlDetail__direction; +typedef enum TrafficControlDetail__lataffinity { + TrafficControlDetail__lataffinity_left = 0, + TrafficControlDetail__lataffinity_right = 1 +} e_TrafficControlDetail__lataffinity; +typedef enum TrafficControlDetail__latperm__Member { + TrafficControlDetail__latperm__Member_none = 0, + TrafficControlDetail__latperm__Member_permitted = 1, + TrafficControlDetail__latperm__Member_passing_only = 2, + TrafficControlDetail__latperm__Member_emergency_only = 3 +} e_TrafficControlDetail__latperm__Member; +typedef enum TrafficControlDetail__parking { + TrafficControlDetail__parking_no = 0, + TrafficControlDetail__parking_parallel = 1, + TrafficControlDetail__parking_angled = 2 +} e_TrafficControlDetail__parking; + +/* TrafficControlDetail */ +typedef struct TrafficControlDetail { + TrafficControlDetail_PR present; + union TrafficControlDetail_u { + OCTET_STRING_t signal; + NULL_t stop; + NULL_t yield; + NULL_t notowing; + NULL_t restricted; + long closed; + long chains; + long direction; + long lataffinity; + struct TrafficControlDetail__latperm { + A_SEQUENCE_OF(long) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } latperm; + long parking; + long minspeed; + long maxspeed; + long minhdwy; + long maxvehmass; + long maxvehheight; + long maxvehwidth; + long maxvehlength; + long maxvehaxles; + long minvehocc; + long maxplatoonsize; + long minplatoonhdwy; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlDetail_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_closed_7; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_chains_14; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_direction_18; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_lataffinity_21; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_Member_25; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_parking_30; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlDetail; +extern asn_CHOICE_specifics_t asn_SPC_TrafficControlDetail_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficControlDetail_1[22]; +extern asn_per_constraints_t asn_PER_type_TrafficControlDetail_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficControlDetail_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlGeometry.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlGeometry.h new file mode 100644 index 000000000..53a1f3d69 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlGeometry.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "CARMA-CLOUD" + * found in "asn/cc_traffic_control_messages_asn1.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _TrafficControlGeometry_H_ +#define _TrafficControlGeometry_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" +#include "EpochMins.h" +#include "Longitude.h" +#include "Latitude.h" +#include "Common_Elevation.h" +#include "NativeInteger.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PathNode; + +/* TrafficControlGeometry */ +typedef struct TrafficControlGeometry { + IA5String_t proj; + IA5String_t datum; + EpochMins_t reftime; + Longitude_t reflon; + Latitude_t reflat; + Common_Elevation_t refelv; + long *refwidth /* OPTIONAL */; + long heading; + struct TrafficControlGeometry__nodes { + A_SEQUENCE_OF(struct PathNode) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } nodes; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlGeometry_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlGeometry; +extern asn_SEQUENCE_specifics_t asn_SPC_TrafficControlGeometry_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficControlGeometry_1[9]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "PathNode.h" + +#endif /* _TrafficControlGeometry_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlMessage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlMessage.h new file mode 100644 index 000000000..2c0d35647 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlMessage.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TrafficControlMessage_H_ +#define _TrafficControlMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "TrafficControlMessageV01.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrafficControlMessage_PR { + TrafficControlMessage_PR_NOTHING, /* No components present */ + TrafficControlMessage_PR_reserved, + TrafficControlMessage_PR_tcmV01 + /* Extensions may appear below */ + +} TrafficControlMessage_PR; + +/* TrafficControlMessage */ +typedef struct TrafficControlMessage { + TrafficControlMessage_PR present; + union TrafficControlMessage_u { + NULL_t reserved; + TrafficControlMessageV01_t tcmV01; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlMessage; +extern asn_CHOICE_specifics_t asn_SPC_TrafficControlMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficControlMessage_1[2]; +extern asn_per_constraints_t asn_PER_type_TrafficControlMessage_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficControlMessage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlMessageV01.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlMessageV01.h new file mode 100644 index 000000000..2a77214c5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlMessageV01.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TrafficControlMessageV01_H_ +#define _TrafficControlMessageV01_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Id64b.h" +#include "NativeInteger.h" +#include "Id128b.h" +#include "EpochMins.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TrafficControlPackage; +struct TrafficControlParams; +struct TrafficControlGeometry; + +/* TrafficControlMessageV01 */ +typedef struct TrafficControlMessageV01 { + Id64b_t reqid; + long reqseq; + long msgtot; + long msgnum; + Id128b_t id; + EpochMins_t updated; + struct TrafficControlPackage *package; /* OPTIONAL */ + struct TrafficControlParams *params; /* OPTIONAL */ + struct TrafficControlGeometry *geometry; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlMessageV01_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlMessageV01; +extern asn_SEQUENCE_specifics_t asn_SPC_TrafficControlMessageV01_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficControlMessageV01_1[9]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "TrafficControlPackage.h" +#include "TrafficControlParams.h" +#include "TrafficControlGeometry.h" + +#endif /* _TrafficControlMessageV01_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlPackage.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlPackage.h new file mode 100644 index 000000000..e898b45f6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlPackage.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TrafficControlPackage_H_ +#define _TrafficControlPackage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" +#include "Id128b.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TrafficControlPackage */ +typedef struct TrafficControlPackage { + IA5String_t *label; /* OPTIONAL */ + struct TrafficControlPackage__tcids { + A_SEQUENCE_OF(Id128b_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } tcids; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlPackage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlPackage; +extern asn_SEQUENCE_specifics_t asn_SPC_TrafficControlPackage_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficControlPackage_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficControlPackage_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlParams.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlParams.h new file mode 100644 index 000000000..82aa4501c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlParams.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TrafficControlParams_H_ +#define _TrafficControlParams_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TrafficControlSchedule.h" +#include "BOOLEAN.h" +#include "TrafficControlDetail.h" +#include "TrafficControlVehClass.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TrafficControlParams */ +typedef struct TrafficControlParams { + struct TrafficControlParams__vclasses { + A_SEQUENCE_OF(TrafficControlVehClass_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } vclasses; + TrafficControlSchedule_t schedule; + BOOLEAN_t regulatory; + TrafficControlDetail_t detail; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlParams_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlParams; +extern asn_SEQUENCE_specifics_t asn_SPC_TrafficControlParams_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficControlParams_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficControlParams_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlPathPart.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlPathPart.h new file mode 100644 index 000000000..c0e8eaa5e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlPathPart.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _TrafficControlPathPart_H_ +#define _TrafficControlPathPart_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" +#include "INTEGER.h" +#include "NativeInteger.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Point; + +/* TrafficControlPathPart */ +typedef struct TrafficControlPathPart { + OCTET_STRING_t id; + INTEGER_t updated; + long pathindex; + struct TrafficControlPathPart__points { + A_SEQUENCE_OF(struct Point) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } points; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlPathPart_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlPathPart; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "Point.h" + +#endif /* _TrafficControlPathPart_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlRequest.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlRequest.h new file mode 100644 index 000000000..ae342fa87 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlRequest.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TrafficControlRequest_H_ +#define _TrafficControlRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "TrafficControlRequestV01.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrafficControlRequest_PR { + TrafficControlRequest_PR_NOTHING, /* No components present */ + TrafficControlRequest_PR_reserved, + TrafficControlRequest_PR_tcrV01 + /* Extensions may appear below */ + +} TrafficControlRequest_PR; + +/* TrafficControlRequest */ +typedef struct TrafficControlRequest { + TrafficControlRequest_PR present; + union TrafficControlRequest_u { + NULL_t reserved; + TrafficControlRequestV01_t tcrV01; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlRequest; +extern asn_CHOICE_specifics_t asn_SPC_TrafficControlRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficControlRequest_1[2]; +extern asn_per_constraints_t asn_PER_type_TrafficControlRequest_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficControlRequest_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlRequestV01.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlRequestV01.h new file mode 100644 index 000000000..093f9d0b1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlRequestV01.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TrafficControlRequestV01_H_ +#define _TrafficControlRequestV01_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Id64b.h" +#include "NativeInteger.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TrafficControlBounds; + +/* TrafficControlRequestV01 */ +typedef struct TrafficControlRequestV01 { + Id64b_t reqid; + long reqseq; + long scale; + struct TrafficControlRequestV01__bounds { + A_SEQUENCE_OF(struct TrafficControlBounds) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } bounds; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlRequestV01_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlRequestV01; +extern asn_SEQUENCE_specifics_t asn_SPC_TrafficControlRequestV01_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficControlRequestV01_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "TrafficControlBounds.h" + +#endif /* _TrafficControlRequestV01_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlSchedule.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlSchedule.h new file mode 100644 index 000000000..1a985b63d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlSchedule.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TrafficControlSchedule_H_ +#define _TrafficControlSchedule_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EpochMins.h" +#include "DSRC_DayOfWeek.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RepeatParams; +struct DailySchedule; + +/* TrafficControlSchedule */ +typedef struct TrafficControlSchedule { + EpochMins_t start; + EpochMins_t *end; /* OPTIONAL */ + DSRC_DayOfWeek_t *dow; /* OPTIONAL */ + struct TrafficControlSchedule__between { + A_SEQUENCE_OF(struct DailySchedule) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *between; + struct RepeatParams *repeat; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlSchedule_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlSchedule; +extern asn_SEQUENCE_specifics_t asn_SPC_TrafficControlSchedule_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficControlSchedule_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RepeatParams.h" +#include "DailySchedule.h" + +#endif /* _TrafficControlSchedule_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlType.h new file mode 100644 index 000000000..0bcd62292 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlType.h @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _TrafficControlType_H_ +#define _TrafficControlType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrafficControlType { + TrafficControlType_signal = 0, + TrafficControlType_stop = 1, + TrafficControlType_yield = 2, + TrafficControlType_notowing = 3, + TrafficControlType_restricted = 4, + TrafficControlType_closed = 5, + TrafficControlType_chains = 6, + TrafficControlType_direction = 7, + TrafficControlType_lataffinity = 8, + TrafficControlType_leftperm = 9, + TrafficControlType_rightperm = 10, + TrafficControlType_opening = 11, + TrafficControlType_closing = 12, + TrafficControlType_parking = 13, + TrafficControlType_minspeed = 14, + TrafficControlType_maxspeed = 15, + TrafficControlType_minhdwy = 16, + TrafficControlType_maxvehmass = 17, + TrafficControlType_maxvehheight = 18, + TrafficControlType_maxvehwidth = 19, + TrafficControlType_maxvehlength = 20, + TrafficControlType_maxaxles = 21, + TrafficControlType_minvehocc = 22 +} e_TrafficControlType; + +/* TrafficControlType */ +typedef long TrafficControlType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TrafficControlType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlType; +extern const asn_INTEGER_specifics_t asn_SPC_TrafficControlType_specs_1; +asn_struct_free_f TrafficControlType_free; +asn_struct_print_f TrafficControlType_print; +asn_constr_check_f TrafficControlType_constraint; +ber_type_decoder_f TrafficControlType_decode_ber; +der_type_encoder_f TrafficControlType_encode_der; +xer_type_decoder_f TrafficControlType_decode_xer; +xer_type_encoder_f TrafficControlType_encode_xer; +oer_type_decoder_f TrafficControlType_decode_oer; +oer_type_encoder_f TrafficControlType_encode_oer; +per_type_decoder_f TrafficControlType_decode_uper; +per_type_encoder_f TrafficControlType_encode_uper; +per_type_decoder_f TrafficControlType_decode_aper; +per_type_encoder_f TrafficControlType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficControlType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlValue.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlValue.h new file mode 100644 index 000000000..b7f0f87c6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlValue.h @@ -0,0 +1,113 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _TrafficControlValue_H_ +#define _TrafficControlValue_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "NativeEnumerated.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrafficControlValue_PR { + TrafficControlValue_PR_NOTHING, /* No components present */ + TrafficControlValue_PR_value, + TrafficControlValue_PR_chains, + TrafficControlValue_PR_direction, + TrafficControlValue_PR_lataffinity, + TrafficControlValue_PR_leftperm, + TrafficControlValue_PR_rightperm, + TrafficControlValue_PR_opening, + TrafficControlValue_PR_closing, + TrafficControlValue_PR_parking +} TrafficControlValue_PR; +typedef enum TrafficControlValue__chains { + TrafficControlValue__chains_no = 0, + TrafficControlValue__chains_permitted = 1, + TrafficControlValue__chains_required = 2 +} e_TrafficControlValue__chains; +typedef enum TrafficControlValue__direction { + TrafficControlValue__direction_forward = 0, + TrafficControlValue__direction_reverse = 1 +} e_TrafficControlValue__direction; +typedef enum TrafficControlValue__lataffinity { + TrafficControlValue__lataffinity_left = 0, + TrafficControlValue__lataffinity_right = 1 +} e_TrafficControlValue__lataffinity; +typedef enum TrafficControlValue__leftperm { + TrafficControlValue__leftperm_none = 0, + TrafficControlValue__leftperm_permitted = 1, + TrafficControlValue__leftperm_passing_only = 2, + TrafficControlValue__leftperm_emergency_only = 3 +} e_TrafficControlValue__leftperm; +typedef enum TrafficControlValue__rightperm { + TrafficControlValue__rightperm_none = 0, + TrafficControlValue__rightperm_permitted = 1, + TrafficControlValue__rightperm_passing_only = 2, + TrafficControlValue__rightperm_emergency_only = 3 +} e_TrafficControlValue__rightperm; +typedef enum TrafficControlValue__opening { + TrafficControlValue__opening_left = 0, + TrafficControlValue__opening_right = 1 +} e_TrafficControlValue__opening; +typedef enum TrafficControlValue__closing { + TrafficControlValue__closing_left = 0, + TrafficControlValue__closing_right = 1 +} e_TrafficControlValue__closing; +typedef enum TrafficControlValue__parking { + TrafficControlValue__parking_no = 0, + TrafficControlValue__parking_parallel = 1, + TrafficControlValue__parking_angled = 2 +} e_TrafficControlValue__parking; + +/* TrafficControlValue */ +typedef struct TrafficControlValue { + TrafficControlValue_PR present; + union TrafficControlValue_u { + long value; + long chains; + long direction; + long lataffinity; + long leftperm; + long rightperm; + long opening; + long closing; + long parking; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficControlValue_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_chains_3; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_direction_7; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_lataffinity_10; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_leftperm_13; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_rightperm_18; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_opening_23; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_closing_26; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_parking_29; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlValue; +extern asn_CHOICE_specifics_t asn_SPC_TrafficControlValue_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficControlValue_1[9]; +extern asn_per_constraints_t asn_PER_type_TrafficControlValue_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficControlValue_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlVehClass.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlVehClass.h new file mode 100644 index 000000000..45bce8529 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrafficControlVehClass.h @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#ifndef _TrafficControlVehClass_H_ +#define _TrafficControlVehClass_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrafficControlVehClass { + TrafficControlVehClass_any = 0, + TrafficControlVehClass_pedestrian = 1, + TrafficControlVehClass_bicycle = 2, + TrafficControlVehClass_micromobile = 3, + TrafficControlVehClass_motorcycle = 4, + TrafficControlVehClass_passenger_car = 5, + TrafficControlVehClass_light_truck_van = 6, + TrafficControlVehClass_bus = 7, + TrafficControlVehClass_two_axle_six_tire_single_unit_truck = 8, + TrafficControlVehClass_three_axle_single_unit_truck = 9, + TrafficControlVehClass_four_or_more_axle_single_unit_truck = 10, + TrafficControlVehClass_four_or_fewer_axle_single_trailer_truck = 11, + TrafficControlVehClass_five_axle_single_trailer_truck = 12, + TrafficControlVehClass_six_or_more_axle_single_trailer_truck = 13, + TrafficControlVehClass_five_or_fewer_axle_multi_trailer_truck = 14, + TrafficControlVehClass_six_axle_multi_trailer_truck = 15, + TrafficControlVehClass_seven_or_more_axle_multi_trailer_truck = 16, + TrafficControlVehClass_rail = 17, + TrafficControlVehClass_unclassified = 18 + /* + * Enumeration is extensible + */ +} e_TrafficControlVehClass; + +/* TrafficControlVehClass */ +typedef long TrafficControlVehClass_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TrafficControlVehClass_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TrafficControlVehClass; +extern const asn_INTEGER_specifics_t asn_SPC_TrafficControlVehClass_specs_1; +asn_struct_free_f TrafficControlVehClass_free; +asn_struct_print_f TrafficControlVehClass_print; +asn_constr_check_f TrafficControlVehClass_constraint; +ber_type_decoder_f TrafficControlVehClass_decode_ber; +der_type_encoder_f TrafficControlVehClass_encode_der; +xer_type_decoder_f TrafficControlVehClass_decode_xer; +xer_type_encoder_f TrafficControlVehClass_encode_xer; +oer_type_decoder_f TrafficControlVehClass_decode_oer; +oer_type_encoder_f TrafficControlVehClass_encode_oer; +per_type_decoder_f TrafficControlVehClass_decode_uper; +per_type_encoder_f TrafficControlVehClass_encode_uper; +per_type_decoder_f TrafficControlVehClass_decode_aper; +per_type_encoder_f TrafficControlVehClass_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficControlVehClass_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerData.h new file mode 100644 index 000000000..78d885b21 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerData.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TrailerData_H_ +#define _TrailerData_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SSPindex.h" +#include "PivotPointDescription.h" +#include "TrailerUnitDescriptionList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TrailerData */ +typedef struct TrailerData { + SSPindex_t notUsed; + PivotPointDescription_t connection; + TrailerUnitDescriptionList_t units; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrailerData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrailerData; +extern asn_SEQUENCE_specifics_t asn_SPC_TrailerData_specs_1; +extern asn_TYPE_member_t asn_MBR_TrailerData_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrailerData_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerHistoryPoint.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerHistoryPoint.h new file mode 100644 index 000000000..2f8efe3c1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerHistoryPoint.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TrailerHistoryPoint_H_ +#define _TrailerHistoryPoint_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Common_Angle.h" +#include "TimeOffset.h" +#include "Node-XY-24b.h" +#include "VertOffset-B07.h" +#include "CoarseHeading.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TrailerHistoryPoint */ +typedef struct TrailerHistoryPoint { + Common_Angle_t pivotAngle; + TimeOffset_t timeOffset; + Node_XY_24b_t positionOffset; + VertOffset_B07_t *elevationOffset; /* OPTIONAL */ + CoarseHeading_t *heading; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrailerHistoryPoint_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrailerHistoryPoint; +extern asn_SEQUENCE_specifics_t asn_SPC_TrailerHistoryPoint_specs_1; +extern asn_TYPE_member_t asn_MBR_TrailerHistoryPoint_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrailerHistoryPoint_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerHistoryPointList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerHistoryPointList.h new file mode 100644 index 000000000..d8f71d497 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerHistoryPointList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TrailerHistoryPointList_H_ +#define _TrailerHistoryPointList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TrailerHistoryPoint; + +/* TrailerHistoryPointList */ +typedef struct TrailerHistoryPointList { + A_SEQUENCE_OF(struct TrailerHistoryPoint) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrailerHistoryPointList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrailerHistoryPointList; +extern asn_SET_OF_specifics_t asn_SPC_TrailerHistoryPointList_specs_1; +extern asn_TYPE_member_t asn_MBR_TrailerHistoryPointList_1[1]; +extern asn_per_constraints_t asn_PER_type_TrailerHistoryPointList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "TrailerHistoryPoint.h" + +#endif /* _TrailerHistoryPointList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerMass.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerMass.h new file mode 100644 index 000000000..0a16e518c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerMass.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TrailerMass_H_ +#define _TrailerMass_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TrailerMass */ +typedef long TrailerMass_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TrailerMass_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TrailerMass; +asn_struct_free_f TrailerMass_free; +asn_struct_print_f TrailerMass_print; +asn_constr_check_f TrailerMass_constraint; +ber_type_decoder_f TrailerMass_decode_ber; +der_type_encoder_f TrailerMass_encode_der; +xer_type_decoder_f TrailerMass_decode_xer; +xer_type_encoder_f TrailerMass_encode_xer; +oer_type_decoder_f TrailerMass_decode_oer; +oer_type_encoder_f TrailerMass_encode_oer; +per_type_decoder_f TrailerMass_decode_uper; +per_type_encoder_f TrailerMass_encode_uper; +per_type_decoder_f TrailerMass_decode_aper; +per_type_encoder_f TrailerMass_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrailerMass_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerUnitDescription.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerUnitDescription.h new file mode 100644 index 000000000..b42e748fd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerUnitDescription.h @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TrailerUnitDescription_H_ +#define _TrailerUnitDescription_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IsDolly.h" +#include "VehicleWidth.h" +#include "VehicleLength.h" +#include "VehicleHeight.h" +#include "TrailerMass.h" +#include "PivotPointDescription.h" +#include "Offset-B12.h" +#include "Node-XY-24b.h" +#include "VertOffset-B07.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct BumperHeights; +struct PivotPointDescription; +struct TrailerHistoryPointList; + +/* TrailerUnitDescription */ +typedef struct TrailerUnitDescription { + IsDolly_t isDolly; + VehicleWidth_t width; + VehicleLength_t length; + VehicleHeight_t *height; /* OPTIONAL */ + TrailerMass_t *mass; /* OPTIONAL */ + struct BumperHeights *bumperHeights; /* OPTIONAL */ + VehicleHeight_t *centerOfGravity; /* OPTIONAL */ + PivotPointDescription_t frontPivot; + struct PivotPointDescription *rearPivot; /* OPTIONAL */ + Offset_B12_t *rearWheelOffset; /* OPTIONAL */ + Node_XY_24b_t positionOffset; + VertOffset_B07_t *elevationOffset; /* OPTIONAL */ + struct TrailerHistoryPointList *crumbData; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrailerUnitDescription_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrailerUnitDescription; +extern asn_SEQUENCE_specifics_t asn_SPC_TrailerUnitDescription_specs_1; +extern asn_TYPE_member_t asn_MBR_TrailerUnitDescription_1[13]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "BumperHeights.h" +#include "PivotPointDescription.h" +#include "TrailerHistoryPointList.h" + +#endif /* _TrailerUnitDescription_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerUnitDescriptionList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerUnitDescriptionList.h new file mode 100644 index 000000000..bedcffb2a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerUnitDescriptionList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TrailerUnitDescriptionList_H_ +#define _TrailerUnitDescriptionList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TrailerUnitDescription; + +/* TrailerUnitDescriptionList */ +typedef struct TrailerUnitDescriptionList { + A_SEQUENCE_OF(struct TrailerUnitDescription) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrailerUnitDescriptionList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrailerUnitDescriptionList; +extern asn_SET_OF_specifics_t asn_SPC_TrailerUnitDescriptionList_specs_1; +extern asn_TYPE_member_t asn_MBR_TrailerUnitDescriptionList_1[1]; +extern asn_per_constraints_t asn_PER_type_TrailerUnitDescriptionList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "TrailerUnitDescription.h" + +#endif /* _TrailerUnitDescriptionList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerWeight.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerWeight.h new file mode 100644 index 000000000..a46a84044 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TrailerWeight.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TrailerWeight_H_ +#define _TrailerWeight_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TrailerWeight */ +typedef long TrailerWeight_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TrailerWeight_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TrailerWeight; +asn_struct_free_f TrailerWeight_free; +asn_struct_print_f TrailerWeight_print; +asn_constr_check_f TrailerWeight_constraint; +ber_type_decoder_f TrailerWeight_decode_ber; +der_type_encoder_f TrailerWeight_encode_der; +xer_type_decoder_f TrailerWeight_decode_xer; +xer_type_encoder_f TrailerWeight_encode_xer; +oer_type_decoder_f TrailerWeight_decode_oer; +oer_type_encoder_f TrailerWeight_encode_oer; +per_type_decoder_f TrailerWeight_decode_uper; +per_type_encoder_f TrailerWeight_encode_uper; +per_type_decoder_f TrailerWeight_decode_aper; +per_type_encoder_f TrailerWeight_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrailerWeight_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransitStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransitStatus.h new file mode 100644 index 000000000..7e1192df2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransitStatus.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TransitStatus_H_ +#define _TransitStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TransitStatus { + TransitStatus_none = 0, + TransitStatus_anADAuse = 1, + TransitStatus_aBikeLoad = 2, + TransitStatus_doorOpen = 3, + TransitStatus_occM = 4, + TransitStatus_occL = 5 +} e_TransitStatus; + +/* TransitStatus */ +typedef BIT_STRING_t TransitStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TransitStatus; +asn_struct_free_f TransitStatus_free; +asn_struct_print_f TransitStatus_print; +asn_constr_check_f TransitStatus_constraint; +ber_type_decoder_f TransitStatus_decode_ber; +der_type_encoder_f TransitStatus_encode_der; +xer_type_decoder_f TransitStatus_decode_xer; +xer_type_encoder_f TransitStatus_encode_xer; +oer_type_decoder_f TransitStatus_decode_oer; +oer_type_encoder_f TransitStatus_encode_oer; +per_type_decoder_f TransitStatus_decode_uper; +per_type_encoder_f TransitStatus_encode_uper; +per_type_decoder_f TransitStatus_decode_aper; +per_type_encoder_f TransitStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TransitStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransitVehicleOccupancy.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransitVehicleOccupancy.h new file mode 100644 index 000000000..f1440d858 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransitVehicleOccupancy.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TransitVehicleOccupancy_H_ +#define _TransitVehicleOccupancy_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TransitVehicleOccupancy { + TransitVehicleOccupancy_occupancyUnknown = 0, + TransitVehicleOccupancy_occupancyEmpty = 1, + TransitVehicleOccupancy_occupancyVeryLow = 2, + TransitVehicleOccupancy_occupancyLow = 3, + TransitVehicleOccupancy_occupancyMed = 4, + TransitVehicleOccupancy_occupancyHigh = 5, + TransitVehicleOccupancy_occupancyNearlyFull = 6, + TransitVehicleOccupancy_occupancyFull = 7 +} e_TransitVehicleOccupancy; + +/* TransitVehicleOccupancy */ +typedef long TransitVehicleOccupancy_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TransitVehicleOccupancy_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TransitVehicleOccupancy; +extern const asn_INTEGER_specifics_t asn_SPC_TransitVehicleOccupancy_specs_1; +asn_struct_free_f TransitVehicleOccupancy_free; +asn_struct_print_f TransitVehicleOccupancy_print; +asn_constr_check_f TransitVehicleOccupancy_constraint; +ber_type_decoder_f TransitVehicleOccupancy_decode_ber; +der_type_encoder_f TransitVehicleOccupancy_encode_der; +xer_type_decoder_f TransitVehicleOccupancy_decode_xer; +xer_type_encoder_f TransitVehicleOccupancy_encode_xer; +oer_type_decoder_f TransitVehicleOccupancy_decode_oer; +oer_type_encoder_f TransitVehicleOccupancy_encode_oer; +per_type_decoder_f TransitVehicleOccupancy_decode_uper; +per_type_encoder_f TransitVehicleOccupancy_encode_uper; +per_type_decoder_f TransitVehicleOccupancy_decode_aper; +per_type_encoder_f TransitVehicleOccupancy_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TransitVehicleOccupancy_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransitVehicleStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransitVehicleStatus.h new file mode 100644 index 000000000..27dc74117 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransitVehicleStatus.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TransitVehicleStatus_H_ +#define _TransitVehicleStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TransitVehicleStatus { + TransitVehicleStatus_loading = 0, + TransitVehicleStatus_anADAuse = 1, + TransitVehicleStatus_aBikeLoad = 2, + TransitVehicleStatus_doorOpen = 3, + TransitVehicleStatus_charging = 4, + TransitVehicleStatus_atStopLine = 5 +} e_TransitVehicleStatus; + +/* TransitVehicleStatus */ +typedef BIT_STRING_t TransitVehicleStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TransitVehicleStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TransitVehicleStatus; +asn_struct_free_f TransitVehicleStatus_free; +asn_struct_print_f TransitVehicleStatus_print; +asn_constr_check_f TransitVehicleStatus_constraint; +ber_type_decoder_f TransitVehicleStatus_decode_ber; +der_type_encoder_f TransitVehicleStatus_encode_der; +xer_type_decoder_f TransitVehicleStatus_decode_xer; +xer_type_encoder_f TransitVehicleStatus_encode_xer; +oer_type_decoder_f TransitVehicleStatus_decode_oer; +oer_type_encoder_f TransitVehicleStatus_encode_oer; +per_type_decoder_f TransitVehicleStatus_decode_uper; +per_type_encoder_f TransitVehicleStatus_encode_uper; +per_type_decoder_f TransitVehicleStatus_decode_aper; +per_type_encoder_f TransitVehicleStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TransitVehicleStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransmissionAndSpeed.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransmissionAndSpeed.h new file mode 100644 index 000000000..d18e51043 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransmissionAndSpeed.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TransmissionAndSpeed_H_ +#define _TransmissionAndSpeed_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TransmissionState.h" +#include "Velocity.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TransmissionAndSpeed */ +typedef struct TransmissionAndSpeed { + TransmissionState_t transmisson; + Velocity_t speed; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TransmissionAndSpeed_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TransmissionAndSpeed; +extern asn_SEQUENCE_specifics_t asn_SPC_TransmissionAndSpeed_specs_1; +extern asn_TYPE_member_t asn_MBR_TransmissionAndSpeed_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TransmissionAndSpeed_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransmissionState.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransmissionState.h new file mode 100644 index 000000000..4c3d805aa --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TransmissionState.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TransmissionState_H_ +#define _TransmissionState_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TransmissionState { + TransmissionState_neutral = 0, + TransmissionState_park = 1, + TransmissionState_forwardGears = 2, + TransmissionState_reverseGears = 3, + TransmissionState_reserved1 = 4, + TransmissionState_reserved2 = 5, + TransmissionState_reserved3 = 6, + TransmissionState_unavailable = 7 +} e_TransmissionState; + +/* TransmissionState */ +typedef long TransmissionState_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TransmissionState_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TransmissionState; +extern const asn_INTEGER_specifics_t asn_SPC_TransmissionState_specs_1; +asn_struct_free_f TransmissionState_free; +asn_struct_print_f TransmissionState_print; +asn_constr_check_f TransmissionState_constraint; +ber_type_decoder_f TransmissionState_decode_ber; +der_type_encoder_f TransmissionState_encode_der; +xer_type_decoder_f TransmissionState_decode_xer; +xer_type_encoder_f TransmissionState_encode_xer; +oer_type_decoder_f TransmissionState_decode_oer; +oer_type_encoder_f TransmissionState_encode_oer; +per_type_decoder_f TransmissionState_decode_uper; +per_type_encoder_f TransmissionState_encode_uper; +per_type_decoder_f TransmissionState_decode_aper; +per_type_encoder_f TransmissionState_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TransmissionState_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerDataFrame.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerDataFrame.h new file mode 100644 index 000000000..867dc0f5d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerDataFrame.h @@ -0,0 +1,119 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TravelerDataFrame_H_ +#define _TravelerDataFrame_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SSPindex.h" +#include "TravelerInfoType.h" +#include "DYear.h" +#include "MinuteOfTheYear.h" +#include "MinutesDuration.h" +#include "SignPrority.h" +#include "URL-Short.h" +#include "FurtherInfoID.h" +#include "RoadSignID.h" +#include "constr_CHOICE.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "ITIScodesAndText.h" +#include "WorkZone.h" +#include "GenericSignage.h" +#include "SpeedLimit.h" +#include "ExitService.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TravelerDataFrame__msgId_PR { + TravelerDataFrame__msgId_PR_NOTHING, /* No components present */ + TravelerDataFrame__msgId_PR_furtherInfoID, + TravelerDataFrame__msgId_PR_roadSignID +} TravelerDataFrame__msgId_PR; +typedef enum TravelerDataFrame__content_PR { + TravelerDataFrame__content_PR_NOTHING, /* No components present */ + TravelerDataFrame__content_PR_advisory, + TravelerDataFrame__content_PR_workZone, + TravelerDataFrame__content_PR_genericSign, + TravelerDataFrame__content_PR_speedLimit, + TravelerDataFrame__content_PR_exitService +} TravelerDataFrame__content_PR; + +/* Forward declarations */ +struct GeographicalPath; + +/* TravelerDataFrame */ +typedef struct TravelerDataFrame { + SSPindex_t notUsed; + TravelerInfoType_t frameType; + struct TravelerDataFrame__msgId { + TravelerDataFrame__msgId_PR present; + union TravelerDataFrame__msgId_u { + FurtherInfoID_t furtherInfoID; + RoadSignID_t roadSignID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } msgId; + DYear_t *startYear; /* OPTIONAL */ + MinuteOfTheYear_t startTime; + MinutesDuration_t durationTime; + SignPrority_t priority; + SSPindex_t notUsed1; + struct TravelerDataFrame__regions { + A_SEQUENCE_OF(struct GeographicalPath) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } regions; + SSPindex_t notUsed2; + SSPindex_t notUsed3; + struct TravelerDataFrame__content { + TravelerDataFrame__content_PR present; + union TravelerDataFrame__content_u { + ITIScodesAndText_t advisory; + WorkZone_t workZone; + GenericSignage_t genericSign; + SpeedLimit_t speedLimit; + ExitService_t exitService; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } content; + URL_Short_t *url; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TravelerDataFrame_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TravelerDataFrame; +extern asn_SEQUENCE_specifics_t asn_SPC_TravelerDataFrame_specs_1; +extern asn_TYPE_member_t asn_MBR_TravelerDataFrame_1[13]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "GeographicalPath.h" + +#endif /* _TravelerDataFrame_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerDataFrameList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerDataFrameList.h new file mode 100644 index 000000000..c9b2c079a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerDataFrameList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TravelerDataFrameList_H_ +#define _TravelerDataFrameList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TravelerDataFrame; + +/* TravelerDataFrameList */ +typedef struct TravelerDataFrameList { + A_SEQUENCE_OF(struct TravelerDataFrame) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TravelerDataFrameList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TravelerDataFrameList; +extern asn_SET_OF_specifics_t asn_SPC_TravelerDataFrameList_specs_1; +extern asn_TYPE_member_t asn_MBR_TravelerDataFrameList_1[1]; +extern asn_per_constraints_t asn_PER_type_TravelerDataFrameList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "TravelerDataFrame.h" + +#endif /* _TravelerDataFrameList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerInfoType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerInfoType.h new file mode 100644 index 000000000..636834c60 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerInfoType.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TravelerInfoType_H_ +#define _TravelerInfoType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TravelerInfoType { + TravelerInfoType_unknown = 0, + TravelerInfoType_advisory = 1, + TravelerInfoType_roadSignage = 2, + TravelerInfoType_commercialSignage = 3 + /* + * Enumeration is extensible + */ +} e_TravelerInfoType; + +/* TravelerInfoType */ +typedef long TravelerInfoType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TravelerInfoType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TravelerInfoType; +extern const asn_INTEGER_specifics_t asn_SPC_TravelerInfoType_specs_1; +asn_struct_free_f TravelerInfoType_free; +asn_struct_print_f TravelerInfoType_print; +asn_constr_check_f TravelerInfoType_constraint; +ber_type_decoder_f TravelerInfoType_decode_ber; +der_type_encoder_f TravelerInfoType_encode_der; +xer_type_decoder_f TravelerInfoType_decode_xer; +xer_type_encoder_f TravelerInfoType_encode_xer; +oer_type_decoder_f TravelerInfoType_decode_oer; +oer_type_encoder_f TravelerInfoType_encode_oer; +per_type_decoder_f TravelerInfoType_decode_uper; +per_type_encoder_f TravelerInfoType_encode_uper; +per_type_decoder_f TravelerInfoType_decode_aper; +per_type_encoder_f TravelerInfoType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TravelerInfoType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerInformation.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerInformation.h new file mode 100644 index 000000000..ac48d5bd6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/TravelerInformation.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _TravelerInformation_H_ +#define _TravelerInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Common_MsgCount.h" +#include "MinuteOfTheYear.h" +#include "UniqueMSGID.h" +#include "URL-Base.h" +#include "TravelerDataFrameList.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_TravelerInformation; + +/* TravelerInformation */ +typedef struct TravelerInformation { + Common_MsgCount_t msgCnt; + MinuteOfTheYear_t *timeStamp; /* OPTIONAL */ + UniqueMSGID_t *packetID; /* OPTIONAL */ + URL_Base_t *urlB; /* OPTIONAL */ + TravelerDataFrameList_t dataFrames; + struct TravelerInformation__regional { + A_SEQUENCE_OF(struct Reg_TravelerInformation) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TravelerInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TravelerInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_TravelerInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_TravelerInformation_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _TravelerInformation_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/URL-Base.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/URL-Base.h new file mode 100644 index 000000000..1e2b9f020 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/URL-Base.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _URL_Base_H_ +#define _URL_Base_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* URL-Base */ +typedef IA5String_t URL_Base_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_URL_Base_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_URL_Base; +asn_struct_free_f URL_Base_free; +asn_struct_print_f URL_Base_print; +asn_constr_check_f URL_Base_constraint; +ber_type_decoder_f URL_Base_decode_ber; +der_type_encoder_f URL_Base_encode_der; +xer_type_decoder_f URL_Base_decode_xer; +xer_type_encoder_f URL_Base_encode_xer; +oer_type_decoder_f URL_Base_decode_oer; +oer_type_encoder_f URL_Base_encode_oer; +per_type_decoder_f URL_Base_decode_uper; +per_type_encoder_f URL_Base_encode_uper; +per_type_decoder_f URL_Base_decode_aper; +per_type_encoder_f URL_Base_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _URL_Base_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/URL-Link.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/URL-Link.h new file mode 100644 index 000000000..1bc04f45c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/URL-Link.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _URL_Link_H_ +#define _URL_Link_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* URL-Link */ +typedef IA5String_t URL_Link_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_URL_Link; +asn_struct_free_f URL_Link_free; +asn_struct_print_f URL_Link_print; +asn_constr_check_f URL_Link_constraint; +ber_type_decoder_f URL_Link_decode_ber; +der_type_encoder_f URL_Link_encode_der; +xer_type_decoder_f URL_Link_decode_xer; +xer_type_encoder_f URL_Link_encode_xer; +oer_type_decoder_f URL_Link_decode_oer; +oer_type_encoder_f URL_Link_encode_oer; +per_type_decoder_f URL_Link_decode_uper; +per_type_encoder_f URL_Link_encode_uper; +per_type_decoder_f URL_Link_decode_aper; +per_type_encoder_f URL_Link_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _URL_Link_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/URL-Short.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/URL-Short.h new file mode 100644 index 000000000..651306b6a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/URL-Short.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _URL_Short_H_ +#define _URL_Short_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* URL-Short */ +typedef IA5String_t URL_Short_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_URL_Short_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_URL_Short; +asn_struct_free_f URL_Short_free; +asn_struct_print_f URL_Short_print; +asn_constr_check_f URL_Short_constraint; +ber_type_decoder_f URL_Short_decode_ber; +der_type_encoder_f URL_Short_encode_der; +xer_type_decoder_f URL_Short_decode_xer; +xer_type_encoder_f URL_Short_encode_xer; +oer_type_decoder_f URL_Short_decode_oer; +oer_type_encoder_f URL_Short_encode_oer; +per_type_decoder_f URL_Short_decode_uper; +per_type_encoder_f URL_Short_encode_uper; +per_type_decoder_f URL_Short_decode_aper; +per_type_encoder_f URL_Short_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _URL_Short_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/UTCTime.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UTCTime.h new file mode 100644 index 000000000..553702013 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UTCTime.h @@ -0,0 +1,47 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UTCTime_H_ +#define _UTCTime_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t UTCTime_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_UTCTime; +extern asn_TYPE_operation_t asn_OP_UTCTime; + +asn_struct_print_f UTCTime_print; +asn_constr_check_f UTCTime_constraint; +xer_type_encoder_f UTCTime_encode_xer; + +#define UTCTime_free OCTET_STRING_free +#define UTCTime_compare OCTET_STRING_compare +#define UTCTime_decode_ber OCTET_STRING_decode_ber +#define UTCTime_encode_der OCTET_STRING_encode_der +#define UTCTime_decode_xer OCTET_STRING_decode_xer_utf8 +#define UTCTime_decode_uper OCTET_STRING_decode_uper +#define UTCTime_encode_uper OCTET_STRING_encode_uper + +/*********************** + * Some handy helpers. * + ***********************/ + +struct tm; /* */ + +/* See asn_GT2time() in GeneralizedTime.h */ +time_t asn_UT2time(const UTCTime_t *, struct tm *_optional_tm4fill, int as_gmt); + +/* See asn_time2GT() in GeneralizedTime.h */ +UTCTime_t *asn_time2UT(UTCTime_t *__opt_ut, const struct tm *, int force_gmt); + +#ifdef __cplusplus +} +#endif + +#endif /* _UTCTime_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/UTF8String.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UTF8String.h new file mode 100644 index 000000000..1853573a7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UTF8String.h @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UTF8String_H_ +#define _UTF8String_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t UTF8String_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_UTF8String; +extern asn_TYPE_operation_t asn_OP_UTF8String; + +asn_struct_print_f UTF8String_print; +asn_constr_check_f UTF8String_constraint; + +#define UTF8String_free OCTET_STRING_free +#define UTF8String_compare OCTET_STRING_compare +#define UTF8String_constraint UTF8String_constraint +#define UTF8String_decode_ber OCTET_STRING_decode_ber +#define UTF8String_encode_der OCTET_STRING_encode_der +#define UTF8String_decode_xer OCTET_STRING_decode_xer_utf8 +#define UTF8String_encode_xer OCTET_STRING_encode_xer_utf8 +#define UTF8String_decode_uper OCTET_STRING_decode_uper +#define UTF8String_encode_uper OCTET_STRING_encode_uper + +/* + * Returns length of the given UTF-8 string in characters, + * or a negative error code: + * -1: UTF-8 sequence truncated + * -2: Illegal UTF-8 sequence start + * -3: Continuation expectation failed + * -4: Not minimal length encoding + * -5: Invalid arguments + */ +ssize_t UTF8String_length(const UTF8String_t *st); + +/* + * Convert the UTF-8 string into a sequence of wide characters. + * Returns the number of characters necessary. + * Returned value might be greater than dstlen. + * In case of conversion error, 0 is returned. + * + * If st points to a valid UTF-8 string, calling + * UTF8String_to_wcs(st, 0, 0); + * is equivalent to + * UTF8String_length(const UTF8String_t *st); + */ +size_t UTF8String_to_wcs(const UTF8String_t *st, uint32_t *dst, size_t dstlen); + +#ifdef __cplusplus +} +#endif + +#endif /* _UTF8String_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/UUIDType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UUIDType.h new file mode 100644 index 000000000..d0486182e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UUIDType.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "../J2735_201603DA_with_PMM.ASN" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -S/home/gmb/TMX-OAM/Build/asn1c/skeletons` + */ + +#ifndef _UUIDType_H_ +#define _UUIDType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UUIDType */ +typedef IA5String_t UUIDType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UUIDType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UUIDType; +asn_struct_free_f UUIDType_free; +asn_struct_print_f UUIDType_print; +asn_constr_check_f UUIDType_constraint; +ber_type_decoder_f UUIDType_decode_ber; +der_type_encoder_f UUIDType_encode_der; +xer_type_decoder_f UUIDType_decode_xer; +xer_type_encoder_f UUIDType_encode_xer; +per_type_decoder_f UUIDType_decode_uper; +per_type_encoder_f UUIDType_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UUIDType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/UniqueMSGID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UniqueMSGID.h new file mode 100644 index 000000000..63b1838fb --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UniqueMSGID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _UniqueMSGID_H_ +#define _UniqueMSGID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UniqueMSGID */ +typedef OCTET_STRING_t UniqueMSGID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UniqueMSGID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UniqueMSGID; +asn_struct_free_f UniqueMSGID_free; +asn_struct_print_f UniqueMSGID_print; +asn_constr_check_f UniqueMSGID_constraint; +ber_type_decoder_f UniqueMSGID_decode_ber; +der_type_encoder_f UniqueMSGID_encode_der; +xer_type_decoder_f UniqueMSGID_decode_xer; +xer_type_encoder_f UniqueMSGID_encode_xer; +oer_type_decoder_f UniqueMSGID_decode_oer; +oer_type_encoder_f UniqueMSGID_encode_oer; +per_type_decoder_f UniqueMSGID_decode_uper; +per_type_encoder_f UniqueMSGID_encode_uper; +per_type_decoder_f UniqueMSGID_decode_aper; +per_type_encoder_f UniqueMSGID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UniqueMSGID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/UniversalString.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UniversalString.h new file mode 100644 index 000000000..ff2253739 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UniversalString.h @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UniversalString_H_ +#define _UniversalString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t UniversalString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_UniversalString; +extern asn_TYPE_operation_t asn_OP_UniversalString; +extern asn_OCTET_STRING_specifics_t asn_SPC_UniversalString_specs; + +asn_struct_print_f UniversalString_print; /* Human-readable output */ +xer_type_decoder_f UniversalString_decode_xer; +xer_type_encoder_f UniversalString_encode_xer; + +#define UniversalString_free OCTET_STRING_free +#define UniversalString_compare OCTET_STRING_compare +#define UniversalString_decode_ber OCTET_STRING_decode_ber +#define UniversalString_encode_der OCTET_STRING_encode_der +#define UniversalString_decode_uper OCTET_STRING_decode_uper +#define UniversalString_encode_uper OCTET_STRING_encode_uper + +#ifdef __cplusplus +} +#endif + +#endif /* _UniversalString_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/UserSizeAndBehaviour.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UserSizeAndBehaviour.h new file mode 100644 index 000000000..21bc96de9 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/UserSizeAndBehaviour.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _UserSizeAndBehaviour_H_ +#define _UserSizeAndBehaviour_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UserSizeAndBehaviour { + UserSizeAndBehaviour_unavailable = 0, + UserSizeAndBehaviour_smallStature = 1, + UserSizeAndBehaviour_largeStature = 2, + UserSizeAndBehaviour_erraticMoving = 3, + UserSizeAndBehaviour_slowMoving = 4 +} e_UserSizeAndBehaviour; + +/* UserSizeAndBehaviour */ +typedef BIT_STRING_t UserSizeAndBehaviour_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UserSizeAndBehaviour_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UserSizeAndBehaviour; +asn_struct_free_f UserSizeAndBehaviour_free; +asn_struct_print_f UserSizeAndBehaviour_print; +asn_constr_check_f UserSizeAndBehaviour_constraint; +ber_type_decoder_f UserSizeAndBehaviour_decode_ber; +der_type_encoder_f UserSizeAndBehaviour_encode_der; +xer_type_decoder_f UserSizeAndBehaviour_decode_xer; +xer_type_encoder_f UserSizeAndBehaviour_encode_xer; +oer_type_decoder_f UserSizeAndBehaviour_decode_oer; +oer_type_encoder_f UserSizeAndBehaviour_encode_oer; +per_type_decoder_f UserSizeAndBehaviour_decode_uper; +per_type_encoder_f UserSizeAndBehaviour_encode_uper; +per_type_decoder_f UserSizeAndBehaviour_decode_aper; +per_type_encoder_f UserSizeAndBehaviour_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UserSizeAndBehaviour_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VINstring.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VINstring.h new file mode 100644 index 000000000..21cb5b2d3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VINstring.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VINstring_H_ +#define _VINstring_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VINstring */ +typedef OCTET_STRING_t VINstring_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VINstring_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VINstring; +asn_struct_free_f VINstring_free; +asn_struct_print_f VINstring_print; +asn_constr_check_f VINstring_constraint; +ber_type_decoder_f VINstring_decode_ber; +der_type_encoder_f VINstring_encode_der; +xer_type_decoder_f VINstring_decode_xer; +xer_type_encoder_f VINstring_encode_xer; +oer_type_decoder_f VINstring_decode_oer; +oer_type_encoder_f VINstring_encode_oer; +per_type_decoder_f VINstring_decode_uper; +per_type_encoder_f VINstring_encode_uper; +per_type_decoder_f VINstring_decode_aper; +per_type_encoder_f VINstring_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VINstring_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VType.h new file mode 100644 index 000000000..6b8267016 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VType.h @@ -0,0 +1,69 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#ifndef _VType_H_ +#define _VType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VType { + VType_pedestrian = 0, + VType_bicycle = 1, + VType_micromobile = 2, + VType_motorcycle = 3, + VType_passenger_car = 4, + VType_light_truck_van = 5, + VType_bus = 6, + VType_two_axle_six_tire_single_unit_truck = 7, + VType_three_axle_single_unit_truck = 8, + VType_four_or_more_axle_single_unit_truck = 9, + VType_four_or_fewer_axle_single_trailer_truck = 10, + VType_five_axle_single_trailer_truck = 11, + VType_six_or_more_axle_single_trailer_truck = 12, + VType_five_or_fewer_axle_multi_trailer_truck = 13, + VType_six_axle_multi_trailer_truck = 14, + VType_seven_or_more_axle_multi_trailer_truck = 15, + VType_rail = 16, + VType_unclassified = 17 +} e_VType; + +/* VType */ +typedef long VType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VType; +extern const asn_INTEGER_specifics_t asn_SPC_VType_specs_1; +asn_struct_free_f VType_free; +asn_struct_print_f VType_print; +asn_constr_check_f VType_constraint; +ber_type_decoder_f VType_decode_ber; +der_type_encoder_f VType_encode_der; +xer_type_decoder_f VType_decode_xer; +xer_type_encoder_f VType_encode_xer; +oer_type_decoder_f VType_decode_oer; +oer_type_encoder_f VType_encode_oer; +per_type_decoder_f VType_decode_uper; +per_type_encoder_f VType_encode_uper; +per_type_decoder_f VType_decode_aper; +per_type_encoder_f VType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ValidRegion.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ValidRegion.h new file mode 100644 index 000000000..d0a8d75da --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ValidRegion.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ValidRegion_H_ +#define _ValidRegion_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "HeadingSlice.h" +#include "Extent.h" +#include "ShapePointSet.h" +#include "Circle.h" +#include "RegionPointSet.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ValidRegion__area_PR { + ValidRegion__area_PR_NOTHING, /* No components present */ + ValidRegion__area_PR_shapePointSet, + ValidRegion__area_PR_circle, + ValidRegion__area_PR_regionPointSet +} ValidRegion__area_PR; + +/* ValidRegion */ +typedef struct ValidRegion { + HeadingSlice_t direction; + Extent_t *extent; /* OPTIONAL */ + struct ValidRegion__area { + ValidRegion__area_PR present; + union ValidRegion__area_u { + ShapePointSet_t shapePointSet; + Circle_t circle; + RegionPointSet_t regionPointSet; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } area; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ValidRegion_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ValidRegion; +extern asn_SEQUENCE_specifics_t asn_SPC_ValidRegion_specs_1; +extern asn_TYPE_member_t asn_MBR_ValidRegion_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ValidRegion_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleClassification.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleClassification.h new file mode 100644 index 000000000..7b2049b34 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleClassification.h @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleClassification_H_ +#define _VehicleClassification_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BasicVehicleClass.h" +#include "BasicVehicleRole.h" +#include "Iso3833VehicleType.h" +#include "VehicleType.h" +#include "VehicleGroupAffected.h" +#include "IncidentResponseEquipment.h" +#include "ResponderGroupAffected.h" +#include "FuelType.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Reg_VehicleClassification; + +/* VehicleClassification */ +typedef struct VehicleClassification { + BasicVehicleClass_t *keyType; /* OPTIONAL */ + BasicVehicleRole_t *role; /* OPTIONAL */ + Iso3833VehicleType_t *iso3883; /* OPTIONAL */ + VehicleType_t *hpmsType; /* OPTIONAL */ + VehicleGroupAffected_t *vehicleType; /* OPTIONAL */ + IncidentResponseEquipment_t *responseEquip; /* OPTIONAL */ + ResponderGroupAffected_t *responderType; /* OPTIONAL */ + FuelType_t *fuelType; /* OPTIONAL */ + struct VehicleClassification__regional { + A_SEQUENCE_OF(struct Reg_VehicleClassification) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *regional; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleClassification_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleClassification; +extern asn_SEQUENCE_specifics_t asn_SPC_VehicleClassification_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleClassification_1[9]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RegionalExtension.h" + +#endif /* _VehicleClassification_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleData.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleData.h new file mode 100644 index 000000000..fcecc5e85 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleData.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleData_H_ +#define _VehicleData_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "VehicleHeight.h" +#include "VehicleMass.h" +#include "TrailerWeight.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct BumperHeights; + +/* VehicleData */ +typedef struct VehicleData { + VehicleHeight_t *height; /* OPTIONAL */ + struct BumperHeights *bumpers; /* OPTIONAL */ + VehicleMass_t *mass; /* OPTIONAL */ + TrailerWeight_t *trailerWeight; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleData; +extern asn_SEQUENCE_specifics_t asn_SPC_VehicleData_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleData_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "BumperHeights.h" + +#endif /* _VehicleData_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleDescriptionType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleDescriptionType.h new file mode 100644 index 000000000..d3daf790c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleDescriptionType.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "../J2735_201603DA_with_PMM.ASN" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -S/home/gmb/TMX-OAM/Build/asn1c/skeletons` + */ + +#ifndef _VehicleDescriptionType_H_ +#define _VehicleDescriptionType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "IA5String.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleDescriptionType */ +typedef IA5String_t VehicleDescriptionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleDescriptionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleDescriptionType; +asn_struct_free_f VehicleDescriptionType_free; +asn_struct_print_f VehicleDescriptionType_print; +asn_constr_check_f VehicleDescriptionType_constraint; +ber_type_decoder_f VehicleDescriptionType_decode_ber; +der_type_encoder_f VehicleDescriptionType_encode_der; +xer_type_decoder_f VehicleDescriptionType_decode_xer; +xer_type_encoder_f VehicleDescriptionType_encode_xer; +per_type_decoder_f VehicleDescriptionType_decode_uper; +per_type_encoder_f VehicleDescriptionType_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleDescriptionType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleEventFlags.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleEventFlags.h new file mode 100644 index 000000000..569690e2a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleEventFlags.h @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleEventFlags_H_ +#define _VehicleEventFlags_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleEventFlags { + VehicleEventFlags_eventHazardLights = 0, + VehicleEventFlags_eventStopLineViolation = 1, + VehicleEventFlags_eventABSactivated = 2, + VehicleEventFlags_eventTractionControlLoss = 3, + VehicleEventFlags_eventStabilityControlactivated = 4, + VehicleEventFlags_eventHazardousMaterials = 5, + VehicleEventFlags_eventReserved1 = 6, + VehicleEventFlags_eventHardBraking = 7, + VehicleEventFlags_eventLightsChanged = 8, + VehicleEventFlags_eventWipersChanged = 9, + VehicleEventFlags_eventFlatTire = 10, + VehicleEventFlags_eventDisabledVehicle = 11, + VehicleEventFlags_eventAirBagDeployment = 12 +} e_VehicleEventFlags; + +/* VehicleEventFlags */ +typedef BIT_STRING_t VehicleEventFlags_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleEventFlags_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleEventFlags; +asn_struct_free_f VehicleEventFlags_free; +asn_struct_print_f VehicleEventFlags_print; +asn_constr_check_f VehicleEventFlags_constraint; +ber_type_decoder_f VehicleEventFlags_decode_ber; +der_type_encoder_f VehicleEventFlags_encode_der; +xer_type_decoder_f VehicleEventFlags_decode_xer; +xer_type_encoder_f VehicleEventFlags_encode_xer; +oer_type_decoder_f VehicleEventFlags_decode_oer; +oer_type_encoder_f VehicleEventFlags_encode_oer; +per_type_decoder_f VehicleEventFlags_decode_uper; +per_type_encoder_f VehicleEventFlags_encode_uper; +per_type_decoder_f VehicleEventFlags_decode_aper; +per_type_encoder_f VehicleEventFlags_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleEventFlags_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleGroupAffected.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleGroupAffected.h new file mode 100644 index 000000000..4c825f2f7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleGroupAffected.h @@ -0,0 +1,89 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleGroupAffected_H_ +#define _VehicleGroupAffected_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleGroupAffected { + VehicleGroupAffected_all_vehicles = 9217, + VehicleGroupAffected_bicycles = 9218, + VehicleGroupAffected_motorcycles = 9219, + VehicleGroupAffected_cars = 9220, + VehicleGroupAffected_light_vehicles = 9221, + VehicleGroupAffected_cars_and_light_vehicles = 9222, + VehicleGroupAffected_cars_with_trailers = 9223, + VehicleGroupAffected_cars_with_recreational_trailers = 9224, + VehicleGroupAffected_vehicles_with_trailers = 9225, + VehicleGroupAffected_heavy_vehicles = 9226, + VehicleGroupAffected_trucks = 9227, + VehicleGroupAffected_buses = 9228, + VehicleGroupAffected_articulated_buses = 9229, + VehicleGroupAffected_school_buses = 9230, + VehicleGroupAffected_vehicles_with_semi_trailers = 9231, + VehicleGroupAffected_vehicles_with_double_trailers = 9232, + VehicleGroupAffected_high_profile_vehicles = 9233, + VehicleGroupAffected_wide_vehicles = 9234, + VehicleGroupAffected_long_vehicles = 9235, + VehicleGroupAffected_hazardous_loads = 9236, + VehicleGroupAffected_exceptional_loads = 9237, + VehicleGroupAffected_abnormal_loads = 9238, + VehicleGroupAffected_convoys = 9239, + VehicleGroupAffected_maintenance_vehicles = 9240, + VehicleGroupAffected_delivery_vehicles = 9241, + VehicleGroupAffected_vehicles_with_even_numbered_license_plates = 9242, + VehicleGroupAffected_vehicles_with_odd_numbered_license_plates = 9243, + VehicleGroupAffected_vehicles_with_parking_permits = 9244, + VehicleGroupAffected_vehicles_with_catalytic_converters = 9245, + VehicleGroupAffected_vehicles_without_catalytic_converters = 9246, + VehicleGroupAffected_gas_powered_vehicles = 9247, + VehicleGroupAffected_diesel_powered_vehicles = 9248, + VehicleGroupAffected_lPG_vehicles = 9249, + VehicleGroupAffected_military_convoys = 9250, + VehicleGroupAffected_military_vehicles = 9251 + /* + * Enumeration is extensible + */ +} e_VehicleGroupAffected; + +/* VehicleGroupAffected */ +typedef long VehicleGroupAffected_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleGroupAffected_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleGroupAffected; +extern const asn_INTEGER_specifics_t asn_SPC_VehicleGroupAffected_specs_1; +asn_struct_free_f VehicleGroupAffected_free; +asn_struct_print_f VehicleGroupAffected_print; +asn_constr_check_f VehicleGroupAffected_constraint; +ber_type_decoder_f VehicleGroupAffected_decode_ber; +der_type_encoder_f VehicleGroupAffected_encode_der; +xer_type_decoder_f VehicleGroupAffected_decode_xer; +xer_type_encoder_f VehicleGroupAffected_encode_xer; +oer_type_decoder_f VehicleGroupAffected_decode_oer; +oer_type_encoder_f VehicleGroupAffected_encode_oer; +per_type_decoder_f VehicleGroupAffected_decode_uper; +per_type_encoder_f VehicleGroupAffected_encode_uper; +per_type_decoder_f VehicleGroupAffected_decode_aper; +per_type_encoder_f VehicleGroupAffected_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleGroupAffected_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleHeight.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleHeight.h new file mode 100644 index 000000000..5d2362546 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleHeight.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleHeight_H_ +#define _VehicleHeight_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleHeight */ +typedef long VehicleHeight_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleHeight_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleHeight; +asn_struct_free_f VehicleHeight_free; +asn_struct_print_f VehicleHeight_print; +asn_constr_check_f VehicleHeight_constraint; +ber_type_decoder_f VehicleHeight_decode_ber; +der_type_encoder_f VehicleHeight_encode_der; +xer_type_decoder_f VehicleHeight_decode_xer; +xer_type_encoder_f VehicleHeight_encode_xer; +oer_type_decoder_f VehicleHeight_decode_oer; +oer_type_encoder_f VehicleHeight_encode_oer; +per_type_decoder_f VehicleHeight_decode_uper; +per_type_encoder_f VehicleHeight_encode_uper; +per_type_decoder_f VehicleHeight_decode_aper; +per_type_encoder_f VehicleHeight_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleHeight_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleID.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleID.h new file mode 100644 index 000000000..ee2eb168c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleID.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleID_H_ +#define _VehicleID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TemporaryID.h" +#include "StationID.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleID_PR { + VehicleID_PR_NOTHING, /* No components present */ + VehicleID_PR_entityID, + VehicleID_PR_stationID +} VehicleID_PR; + +/* VehicleID */ +typedef struct VehicleID { + VehicleID_PR present; + union VehicleID_u { + TemporaryID_t entityID; + StationID_t stationID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleID; +extern asn_CHOICE_specifics_t asn_SPC_VehicleID_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleID_1[2]; +extern asn_per_constraints_t asn_PER_type_VehicleID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleID_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleIdent.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleIdent.h new file mode 100644 index 000000000..308c7d073 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleIdent.h @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleIdent_H_ +#define _VehicleIdent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DescriptiveName.h" +#include "VINstring.h" +#include "IA5String.h" +#include "VehicleType.h" +#include "VehicleGroupAffected.h" +#include "ResponderGroupAffected.h" +#include "IncidentResponseEquipment.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleIdent__vehicleClass_PR { + VehicleIdent__vehicleClass_PR_NOTHING, /* No components present */ + VehicleIdent__vehicleClass_PR_vGroup, + VehicleIdent__vehicleClass_PR_rGroup, + VehicleIdent__vehicleClass_PR_rEquip +} VehicleIdent__vehicleClass_PR; + +/* Forward declarations */ +struct VehicleID; + +/* VehicleIdent */ +typedef struct VehicleIdent { + DescriptiveName_t *name; /* OPTIONAL */ + VINstring_t *vin; /* OPTIONAL */ + IA5String_t *ownerCode; /* OPTIONAL */ + struct VehicleID *id; /* OPTIONAL */ + VehicleType_t *vehicleType; /* OPTIONAL */ + struct VehicleIdent__vehicleClass { + VehicleIdent__vehicleClass_PR present; + union VehicleIdent__vehicleClass_u { + VehicleGroupAffected_t vGroup; + ResponderGroupAffected_t rGroup; + IncidentResponseEquipment_t rEquip; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *vehicleClass; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleIdent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleIdent; +extern asn_SEQUENCE_specifics_t asn_SPC_VehicleIdent_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleIdent_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "VehicleID.h" + +#endif /* _VehicleIdent_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleLength.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleLength.h new file mode 100644 index 000000000..d7301e458 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleLength.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleLength_H_ +#define _VehicleLength_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleLength */ +typedef long VehicleLength_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleLength_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleLength; +asn_struct_free_f VehicleLength_free; +asn_struct_print_f VehicleLength_print; +asn_constr_check_f VehicleLength_constraint; +ber_type_decoder_f VehicleLength_decode_ber; +der_type_encoder_f VehicleLength_encode_der; +xer_type_decoder_f VehicleLength_decode_xer; +xer_type_encoder_f VehicleLength_encode_xer; +oer_type_decoder_f VehicleLength_decode_oer; +oer_type_encoder_f VehicleLength_encode_oer; +per_type_decoder_f VehicleLength_decode_uper; +per_type_encoder_f VehicleLength_encode_uper; +per_type_decoder_f VehicleLength_decode_aper; +per_type_encoder_f VehicleLength_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleLength_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleMass.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleMass.h new file mode 100644 index 000000000..19b0c4310 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleMass.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleMass_H_ +#define _VehicleMass_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleMass */ +typedef long VehicleMass_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleMass_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleMass; +asn_struct_free_f VehicleMass_free; +asn_struct_print_f VehicleMass_print; +asn_constr_check_f VehicleMass_constraint; +ber_type_decoder_f VehicleMass_decode_ber; +der_type_encoder_f VehicleMass_encode_der; +xer_type_decoder_f VehicleMass_decode_xer; +xer_type_encoder_f VehicleMass_encode_xer; +oer_type_decoder_f VehicleMass_decode_oer; +oer_type_encoder_f VehicleMass_encode_oer; +per_type_decoder_f VehicleMass_decode_uper; +per_type_encoder_f VehicleMass_encode_uper; +per_type_decoder_f VehicleMass_decode_aper; +per_type_encoder_f VehicleMass_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleMass_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleSafetyExtensions.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleSafetyExtensions.h new file mode 100644 index 000000000..e6b3a2e9f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleSafetyExtensions.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleSafetyExtensions_H_ +#define _VehicleSafetyExtensions_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "VehicleEventFlags.h" +#include "ExteriorLights.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PathHistory; +struct PathPrediction; + +/* VehicleSafetyExtensions */ +typedef struct VehicleSafetyExtensions { + VehicleEventFlags_t *events; /* OPTIONAL */ + struct PathHistory *pathHistory; /* OPTIONAL */ + struct PathPrediction *pathPrediction; /* OPTIONAL */ + ExteriorLights_t *lights; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleSafetyExtensions_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleSafetyExtensions; +extern asn_SEQUENCE_specifics_t asn_SPC_VehicleSafetyExtensions_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleSafetyExtensions_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "PathHistory.h" +#include "PathPrediction.h" + +#endif /* _VehicleSafetyExtensions_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleSize.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleSize.h new file mode 100644 index 000000000..ea57d1cc1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleSize.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleSize_H_ +#define _VehicleSize_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "VehicleWidth.h" +#include "VehicleLength.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleSize */ +typedef struct VehicleSize { + VehicleWidth_t width; + VehicleLength_t length; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleSize_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleSize; +extern asn_SEQUENCE_specifics_t asn_SPC_VehicleSize_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleSize_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleSize_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleSizeConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleSizeConfidence.h new file mode 100644 index 000000000..7ab00134d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleSizeConfidence.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _VehicleSizeConfidence_H_ +#define _VehicleSizeConfidence_H_ + + +#include + +/* Including external dependencies */ +#include "SizeValueConfidence.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleSizeConfidence */ +typedef struct VehicleSizeConfidence { + SizeValueConfidence_t vehicleWidthConfidence; + SizeValueConfidence_t vehicleLengthConfidence; + SizeValueConfidence_t *vehicleHeightConfidence /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleSizeConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleSizeConfidence; +extern asn_SEQUENCE_specifics_t asn_SPC_VehicleSizeConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleSizeConfidence_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleSizeConfidence_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatus.h new file mode 100644 index 000000000..875f1c9ba --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatus.h @@ -0,0 +1,157 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleStatus_H_ +#define _VehicleStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ExteriorLights.h" +#include "LightbarInUse.h" +#include "BrakeAppliedPressure.h" +#include "CoefficientOfFriction.h" +#include "SunSensor.h" +#include "RainSensor.h" +#include "AmbientAirTemperature.h" +#include "AmbientAirPressure.h" +#include "ThrottlePosition.h" +#include "SpeedConfidence.h" +#include "GNSSstatus.h" +#include "SteeringWheelAngle.h" +#include "SteeringWheelAngleConfidence.h" +#include "SteeringWheelAngleRateOfChange.h" +#include "DrivingWheelAngle.h" +#include "constr_SEQUENCE.h" +#include "VerticalAccelerationThreshold.h" +#include "YawRateConfidence.h" +#include "AccelerationConfidence.h" +#include "ObstacleDistance.h" +#include "Common_Angle.h" +#include "DDateTime.h" +#include "VehicleHeight.h" +#include "BumperHeights.h" +#include "VehicleMass.h" +#include "TrailerWeight.h" +#include "VehicleType.h" +#include "EssPrecipYesNo.h" +#include "EssPrecipRate.h" +#include "EssPrecipSituation.h" +#include "EssSolarRadiation.h" +#include "EssMobileFriction.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct WiperSet; +struct BrakeSystemStatus; +struct FullPositionVector; +struct SpeedandHeadingandThrottleConfidence; +struct VehicleIdent; +struct J1939data; +struct AccelerationSet4Way; +struct ConfidenceSet; + +/* VehicleStatus */ +typedef struct VehicleStatus { + ExteriorLights_t *lights; /* OPTIONAL */ + LightbarInUse_t *lightBar; /* OPTIONAL */ + struct WiperSet *wipers; /* OPTIONAL */ + struct BrakeSystemStatus *brakeStatus; /* OPTIONAL */ + BrakeAppliedPressure_t *brakePressure; /* OPTIONAL */ + CoefficientOfFriction_t *roadFriction; /* OPTIONAL */ + SunSensor_t *sunData; /* OPTIONAL */ + RainSensor_t *rainData; /* OPTIONAL */ + AmbientAirTemperature_t *airTemp; /* OPTIONAL */ + AmbientAirPressure_t *airPres; /* OPTIONAL */ + struct VehicleStatus__steering { + SteeringWheelAngle_t angle; + SteeringWheelAngleConfidence_t *confidence; /* OPTIONAL */ + SteeringWheelAngleRateOfChange_t *rate; /* OPTIONAL */ + DrivingWheelAngle_t *wheels; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *steering; + struct VehicleStatus__accelSets { + struct AccelerationSet4Way *accel4way; /* OPTIONAL */ + VerticalAccelerationThreshold_t *vertAccelThres; /* OPTIONAL */ + YawRateConfidence_t *yawRateCon; /* OPTIONAL */ + AccelerationConfidence_t *hozAccelCon; /* OPTIONAL */ + struct ConfidenceSet *confidenceSet; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *accelSets; + struct VehicleStatus__object { + ObstacleDistance_t obDist; + Common_Angle_t obDirect; + DDateTime_t dateTime; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *object; + struct FullPositionVector *fullPos; /* OPTIONAL */ + ThrottlePosition_t *throttlePos; /* OPTIONAL */ + struct SpeedandHeadingandThrottleConfidence *speedHeadC; /* OPTIONAL */ + SpeedConfidence_t *speedC; /* OPTIONAL */ + struct VehicleStatus__vehicleData { + VehicleHeight_t height; + BumperHeights_t bumpers; + VehicleMass_t mass; + TrailerWeight_t trailerWeight; + VehicleType_t type; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *vehicleData; + struct VehicleIdent *vehicleIdent; /* OPTIONAL */ + struct J1939data *j1939data; /* OPTIONAL */ + struct VehicleStatus__weatherReport { + EssPrecipYesNo_t isRaining; + EssPrecipRate_t *rainRate; /* OPTIONAL */ + EssPrecipSituation_t *precipSituation; /* OPTIONAL */ + EssSolarRadiation_t *solarRadiation; /* OPTIONAL */ + EssMobileFriction_t *friction; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *weatherReport; + GNSSstatus_t *gnssStatus; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleStatus; +extern asn_SEQUENCE_specifics_t asn_SPC_VehicleStatus_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleStatus_1[22]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "WiperSet.h" +#include "BrakeSystemStatus.h" +#include "FullPositionVector.h" +#include "SpeedandHeadingandThrottleConfidence.h" +#include "VehicleIdent.h" +#include "J1939data.h" +#include "AccelerationSet4Way.h" +#include "ConfidenceSet.h" + +#endif /* _VehicleStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatusDeviceTypeTag.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatusDeviceTypeTag.h new file mode 100644 index 000000000..43616e158 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatusDeviceTypeTag.h @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleStatusDeviceTypeTag_H_ +#define _VehicleStatusDeviceTypeTag_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleStatusDeviceTypeTag { + VehicleStatusDeviceTypeTag_unknown = 0, + VehicleStatusDeviceTypeTag_lights = 1, + VehicleStatusDeviceTypeTag_wipers = 2, + VehicleStatusDeviceTypeTag_brakes = 3, + VehicleStatusDeviceTypeTag_stab = 4, + VehicleStatusDeviceTypeTag_trac = 5, + VehicleStatusDeviceTypeTag_abs = 6, + VehicleStatusDeviceTypeTag_sunS = 7, + VehicleStatusDeviceTypeTag_rainS = 8, + VehicleStatusDeviceTypeTag_airTemp = 9, + VehicleStatusDeviceTypeTag_steering = 10, + VehicleStatusDeviceTypeTag_vertAccelThres = 11, + VehicleStatusDeviceTypeTag_vertAccel = 12, + VehicleStatusDeviceTypeTag_hozAccelLong = 13, + VehicleStatusDeviceTypeTag_hozAccelLat = 14, + VehicleStatusDeviceTypeTag_hozAccelCon = 15, + VehicleStatusDeviceTypeTag_accel4way = 16, + VehicleStatusDeviceTypeTag_confidenceSet = 17, + VehicleStatusDeviceTypeTag_obDist = 18, + VehicleStatusDeviceTypeTag_obDirect = 19, + VehicleStatusDeviceTypeTag_yaw = 20, + VehicleStatusDeviceTypeTag_yawRateCon = 21, + VehicleStatusDeviceTypeTag_dateTime = 22, + VehicleStatusDeviceTypeTag_fullPos = 23, + VehicleStatusDeviceTypeTag_position2D = 24, + VehicleStatusDeviceTypeTag_position3D = 25, + VehicleStatusDeviceTypeTag_vehicle = 26, + VehicleStatusDeviceTypeTag_speedHeadC = 27, + VehicleStatusDeviceTypeTag_speedC = 28 + /* + * Enumeration is extensible + */ +} e_VehicleStatusDeviceTypeTag; + +/* VehicleStatusDeviceTypeTag */ +typedef long VehicleStatusDeviceTypeTag_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleStatusDeviceTypeTag_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleStatusDeviceTypeTag; +extern const asn_INTEGER_specifics_t asn_SPC_VehicleStatusDeviceTypeTag_specs_1; +asn_struct_free_f VehicleStatusDeviceTypeTag_free; +asn_struct_print_f VehicleStatusDeviceTypeTag_print; +asn_constr_check_f VehicleStatusDeviceTypeTag_constraint; +ber_type_decoder_f VehicleStatusDeviceTypeTag_decode_ber; +der_type_encoder_f VehicleStatusDeviceTypeTag_encode_der; +xer_type_decoder_f VehicleStatusDeviceTypeTag_decode_xer; +xer_type_encoder_f VehicleStatusDeviceTypeTag_encode_xer; +oer_type_decoder_f VehicleStatusDeviceTypeTag_decode_oer; +oer_type_encoder_f VehicleStatusDeviceTypeTag_encode_oer; +per_type_decoder_f VehicleStatusDeviceTypeTag_decode_uper; +per_type_encoder_f VehicleStatusDeviceTypeTag_encode_uper; +per_type_decoder_f VehicleStatusDeviceTypeTag_decode_aper; +per_type_encoder_f VehicleStatusDeviceTypeTag_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleStatusDeviceTypeTag_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatusRequest.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatusRequest.h new file mode 100644 index 000000000..ecf9f315e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatusRequest.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleStatusRequest_H_ +#define _VehicleStatusRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "VehicleStatusDeviceTypeTag.h" +#include "NativeInteger.h" +#include "BOOLEAN.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleStatusRequest */ +typedef struct VehicleStatusRequest { + VehicleStatusDeviceTypeTag_t dataType; + long *subType; /* OPTIONAL */ + long *sendOnLessThenValue; /* OPTIONAL */ + long *sendOnMoreThenValue; /* OPTIONAL */ + BOOLEAN_t *sendAll; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleStatusRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleStatusRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_VehicleStatusRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleStatusRequest_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleStatusRequest_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatusRequestList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatusRequestList.h new file mode 100644 index 000000000..e4319cd38 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleStatusRequestList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleStatusRequestList_H_ +#define _VehicleStatusRequestList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct VehicleStatusRequest; + +/* VehicleStatusRequestList */ +typedef struct VehicleStatusRequestList { + A_SEQUENCE_OF(struct VehicleStatusRequest) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleStatusRequestList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleStatusRequestList; +extern asn_SET_OF_specifics_t asn_SPC_VehicleStatusRequestList_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleStatusRequestList_1[1]; +extern asn_per_constraints_t asn_PER_type_VehicleStatusRequestList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "VehicleStatusRequest.h" + +#endif /* _VehicleStatusRequestList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleToLanePosition.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleToLanePosition.h new file mode 100644 index 000000000..133dd9bb2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleToLanePosition.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleToLanePosition_H_ +#define _VehicleToLanePosition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "StationID.h" +#include "LaneID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleToLanePosition */ +typedef struct VehicleToLanePosition { + StationID_t stationID; + LaneID_t laneID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleToLanePosition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleToLanePosition; +extern asn_SEQUENCE_specifics_t asn_SPC_VehicleToLanePosition_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleToLanePosition_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleToLanePosition_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleToLanePositionList.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleToLanePositionList.h new file mode 100644 index 000000000..3cb756a94 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleToLanePositionList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleToLanePositionList_H_ +#define _VehicleToLanePositionList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct VehicleToLanePosition; + +/* VehicleToLanePositionList */ +typedef struct VehicleToLanePositionList { + A_SEQUENCE_OF(struct VehicleToLanePosition) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleToLanePositionList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleToLanePositionList; +extern asn_SET_OF_specifics_t asn_SPC_VehicleToLanePositionList_specs_1; +extern asn_TYPE_member_t asn_MBR_VehicleToLanePositionList_1[1]; +extern asn_per_constraints_t asn_PER_type_VehicleToLanePositionList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "VehicleToLanePosition.h" + +#endif /* _VehicleToLanePositionList_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleType.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleType.h new file mode 100644 index 000000000..fb61f50f4 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleType.h @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleType_H_ +#define _VehicleType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleType { + VehicleType_none = 0, + VehicleType_unknown = 1, + VehicleType_special = 2, + VehicleType_moto = 3, + VehicleType_car = 4, + VehicleType_carOther = 5, + VehicleType_bus = 6, + VehicleType_axleCnt2 = 7, + VehicleType_axleCnt3 = 8, + VehicleType_axleCnt4 = 9, + VehicleType_axleCnt4Trailer = 10, + VehicleType_axleCnt5Trailer = 11, + VehicleType_axleCnt6Trailer = 12, + VehicleType_axleCnt5MultiTrailer = 13, + VehicleType_axleCnt6MultiTrailer = 14, + VehicleType_axleCnt7MultiTrailer = 15 + /* + * Enumeration is extensible + */ +} e_VehicleType; + +/* VehicleType */ +typedef long VehicleType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleType; +extern const asn_INTEGER_specifics_t asn_SPC_VehicleType_specs_1; +asn_struct_free_f VehicleType_free; +asn_struct_print_f VehicleType_print; +asn_constr_check_f VehicleType_constraint; +ber_type_decoder_f VehicleType_decode_ber; +der_type_encoder_f VehicleType_encode_der; +xer_type_decoder_f VehicleType_decode_xer; +xer_type_encoder_f VehicleType_encode_xer; +oer_type_decoder_f VehicleType_decode_oer; +oer_type_encoder_f VehicleType_encode_oer; +per_type_decoder_f VehicleType_decode_uper; +per_type_encoder_f VehicleType_encode_uper; +per_type_decoder_f VehicleType_decode_aper; +per_type_encoder_f VehicleType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleType_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleWidth.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleWidth.h new file mode 100644 index 000000000..b11f37ea1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VehicleWidth.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VehicleWidth_H_ +#define _VehicleWidth_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleWidth */ +typedef long VehicleWidth_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleWidth_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleWidth; +asn_struct_free_f VehicleWidth_free; +asn_struct_print_f VehicleWidth_print; +asn_constr_check_f VehicleWidth_constraint; +ber_type_decoder_f VehicleWidth_decode_ber; +der_type_encoder_f VehicleWidth_encode_der; +xer_type_decoder_f VehicleWidth_decode_xer; +xer_type_encoder_f VehicleWidth_encode_xer; +oer_type_decoder_f VehicleWidth_decode_oer; +oer_type_encoder_f VehicleWidth_encode_oer; +per_type_decoder_f VehicleWidth_decode_uper; +per_type_encoder_f VehicleWidth_encode_uper; +per_type_decoder_f VehicleWidth_decode_aper; +per_type_encoder_f VehicleWidth_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleWidth_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Velocity.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Velocity.h new file mode 100644 index 000000000..273f82660 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Velocity.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Velocity_H_ +#define _Velocity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Velocity */ +typedef long Velocity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Velocity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Velocity; +asn_struct_free_f Velocity_free; +asn_struct_print_f Velocity_print; +asn_constr_check_f Velocity_constraint; +ber_type_decoder_f Velocity_decode_ber; +der_type_encoder_f Velocity_encode_der; +xer_type_decoder_f Velocity_decode_xer; +xer_type_encoder_f Velocity_encode_xer; +oer_type_decoder_f Velocity_decode_oer; +oer_type_encoder_f Velocity_encode_oer; +per_type_decoder_f Velocity_decode_uper; +per_type_encoder_f Velocity_encode_uper; +per_type_decoder_f Velocity_decode_aper; +per_type_encoder_f Velocity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Velocity_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B07.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B07.h new file mode 100644 index 000000000..1e50d0571 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B07.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VertOffset_B07_H_ +#define _VertOffset_B07_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VertOffset-B07 */ +typedef long VertOffset_B07_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VertOffset_B07_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VertOffset_B07; +asn_struct_free_f VertOffset_B07_free; +asn_struct_print_f VertOffset_B07_print; +asn_constr_check_f VertOffset_B07_constraint; +ber_type_decoder_f VertOffset_B07_decode_ber; +der_type_encoder_f VertOffset_B07_encode_der; +xer_type_decoder_f VertOffset_B07_decode_xer; +xer_type_encoder_f VertOffset_B07_encode_xer; +oer_type_decoder_f VertOffset_B07_decode_oer; +oer_type_encoder_f VertOffset_B07_encode_oer; +per_type_decoder_f VertOffset_B07_decode_uper; +per_type_encoder_f VertOffset_B07_encode_uper; +per_type_decoder_f VertOffset_B07_decode_aper; +per_type_encoder_f VertOffset_B07_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VertOffset_B07_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B08.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B08.h new file mode 100644 index 000000000..81f2f06aa --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B08.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VertOffset_B08_H_ +#define _VertOffset_B08_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VertOffset-B08 */ +typedef long VertOffset_B08_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VertOffset_B08_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VertOffset_B08; +asn_struct_free_f VertOffset_B08_free; +asn_struct_print_f VertOffset_B08_print; +asn_constr_check_f VertOffset_B08_constraint; +ber_type_decoder_f VertOffset_B08_decode_ber; +der_type_encoder_f VertOffset_B08_encode_der; +xer_type_decoder_f VertOffset_B08_decode_xer; +xer_type_encoder_f VertOffset_B08_encode_xer; +oer_type_decoder_f VertOffset_B08_decode_oer; +oer_type_encoder_f VertOffset_B08_encode_oer; +per_type_decoder_f VertOffset_B08_decode_uper; +per_type_encoder_f VertOffset_B08_encode_uper; +per_type_decoder_f VertOffset_B08_decode_aper; +per_type_encoder_f VertOffset_B08_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VertOffset_B08_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B09.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B09.h new file mode 100644 index 000000000..e7cf5ea3f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B09.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VertOffset_B09_H_ +#define _VertOffset_B09_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VertOffset-B09 */ +typedef long VertOffset_B09_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VertOffset_B09_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VertOffset_B09; +asn_struct_free_f VertOffset_B09_free; +asn_struct_print_f VertOffset_B09_print; +asn_constr_check_f VertOffset_B09_constraint; +ber_type_decoder_f VertOffset_B09_decode_ber; +der_type_encoder_f VertOffset_B09_encode_der; +xer_type_decoder_f VertOffset_B09_decode_xer; +xer_type_encoder_f VertOffset_B09_encode_xer; +oer_type_decoder_f VertOffset_B09_decode_oer; +oer_type_encoder_f VertOffset_B09_encode_oer; +per_type_decoder_f VertOffset_B09_decode_uper; +per_type_encoder_f VertOffset_B09_encode_uper; +per_type_decoder_f VertOffset_B09_decode_aper; +per_type_encoder_f VertOffset_B09_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VertOffset_B09_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B10.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B10.h new file mode 100644 index 000000000..37125a9db --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B10.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VertOffset_B10_H_ +#define _VertOffset_B10_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VertOffset-B10 */ +typedef long VertOffset_B10_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VertOffset_B10_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VertOffset_B10; +asn_struct_free_f VertOffset_B10_free; +asn_struct_print_f VertOffset_B10_print; +asn_constr_check_f VertOffset_B10_constraint; +ber_type_decoder_f VertOffset_B10_decode_ber; +der_type_encoder_f VertOffset_B10_encode_der; +xer_type_decoder_f VertOffset_B10_decode_xer; +xer_type_encoder_f VertOffset_B10_encode_xer; +oer_type_decoder_f VertOffset_B10_decode_oer; +oer_type_encoder_f VertOffset_B10_encode_oer; +per_type_decoder_f VertOffset_B10_decode_uper; +per_type_encoder_f VertOffset_B10_encode_uper; +per_type_decoder_f VertOffset_B10_decode_aper; +per_type_encoder_f VertOffset_B10_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VertOffset_B10_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B11.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B11.h new file mode 100644 index 000000000..5b4cfbe0b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B11.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VertOffset_B11_H_ +#define _VertOffset_B11_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VertOffset-B11 */ +typedef long VertOffset_B11_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VertOffset_B11_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VertOffset_B11; +asn_struct_free_f VertOffset_B11_free; +asn_struct_print_f VertOffset_B11_print; +asn_constr_check_f VertOffset_B11_constraint; +ber_type_decoder_f VertOffset_B11_decode_ber; +der_type_encoder_f VertOffset_B11_encode_der; +xer_type_decoder_f VertOffset_B11_decode_xer; +xer_type_encoder_f VertOffset_B11_encode_xer; +oer_type_decoder_f VertOffset_B11_decode_oer; +oer_type_encoder_f VertOffset_B11_encode_oer; +per_type_decoder_f VertOffset_B11_decode_uper; +per_type_encoder_f VertOffset_B11_encode_uper; +per_type_decoder_f VertOffset_B11_decode_aper; +per_type_encoder_f VertOffset_B11_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VertOffset_B11_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B12.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B12.h new file mode 100644 index 000000000..93ddca91b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VertOffset-B12.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VertOffset_B12_H_ +#define _VertOffset_B12_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VertOffset-B12 */ +typedef long VertOffset_B12_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VertOffset_B12_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VertOffset_B12; +asn_struct_free_f VertOffset_B12_free; +asn_struct_print_f VertOffset_B12_print; +asn_constr_check_f VertOffset_B12_constraint; +ber_type_decoder_f VertOffset_B12_decode_ber; +der_type_encoder_f VertOffset_B12_encode_der; +xer_type_decoder_f VertOffset_B12_decode_xer; +xer_type_encoder_f VertOffset_B12_encode_xer; +oer_type_decoder_f VertOffset_B12_decode_oer; +oer_type_encoder_f VertOffset_B12_encode_oer; +per_type_decoder_f VertOffset_B12_decode_uper; +per_type_encoder_f VertOffset_B12_encode_uper; +per_type_decoder_f VertOffset_B12_decode_aper; +per_type_encoder_f VertOffset_B12_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VertOffset_B12_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VerticalAcceleration.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VerticalAcceleration.h new file mode 100644 index 000000000..3deb6d002 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VerticalAcceleration.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VerticalAcceleration_H_ +#define _VerticalAcceleration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* VerticalAcceleration */ +typedef long VerticalAcceleration_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VerticalAcceleration_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VerticalAcceleration; +asn_struct_free_f VerticalAcceleration_free; +asn_struct_print_f VerticalAcceleration_print; +asn_constr_check_f VerticalAcceleration_constraint; +ber_type_decoder_f VerticalAcceleration_decode_ber; +der_type_encoder_f VerticalAcceleration_encode_der; +xer_type_decoder_f VerticalAcceleration_decode_xer; +xer_type_encoder_f VerticalAcceleration_encode_xer; +oer_type_decoder_f VerticalAcceleration_decode_oer; +oer_type_encoder_f VerticalAcceleration_encode_oer; +per_type_decoder_f VerticalAcceleration_decode_uper; +per_type_encoder_f VerticalAcceleration_encode_uper; +per_type_decoder_f VerticalAcceleration_decode_aper; +per_type_encoder_f VerticalAcceleration_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VerticalAcceleration_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VerticalAccelerationThreshold.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VerticalAccelerationThreshold.h new file mode 100644 index 000000000..e833e64fe --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VerticalAccelerationThreshold.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VerticalAccelerationThreshold_H_ +#define _VerticalAccelerationThreshold_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VerticalAccelerationThreshold { + VerticalAccelerationThreshold_notEquipped = 0, + VerticalAccelerationThreshold_leftFront = 1, + VerticalAccelerationThreshold_leftRear = 2, + VerticalAccelerationThreshold_rightFront = 3, + VerticalAccelerationThreshold_rightRear = 4 +} e_VerticalAccelerationThreshold; + +/* VerticalAccelerationThreshold */ +typedef BIT_STRING_t VerticalAccelerationThreshold_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VerticalAccelerationThreshold_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VerticalAccelerationThreshold; +asn_struct_free_f VerticalAccelerationThreshold_free; +asn_struct_print_f VerticalAccelerationThreshold_print; +asn_constr_check_f VerticalAccelerationThreshold_constraint; +ber_type_decoder_f VerticalAccelerationThreshold_decode_ber; +der_type_encoder_f VerticalAccelerationThreshold_encode_der; +xer_type_decoder_f VerticalAccelerationThreshold_decode_xer; +xer_type_encoder_f VerticalAccelerationThreshold_encode_xer; +oer_type_decoder_f VerticalAccelerationThreshold_decode_oer; +oer_type_encoder_f VerticalAccelerationThreshold_encode_oer; +per_type_decoder_f VerticalAccelerationThreshold_decode_uper; +per_type_encoder_f VerticalAccelerationThreshold_encode_uper; +per_type_decoder_f VerticalAccelerationThreshold_decode_aper; +per_type_encoder_f VerticalAccelerationThreshold_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VerticalAccelerationThreshold_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VerticalOffset.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VerticalOffset.h new file mode 100644 index 000000000..9fb896b94 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VerticalOffset.h @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _VerticalOffset_H_ +#define _VerticalOffset_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "VertOffset-B07.h" +#include "VertOffset-B08.h" +#include "VertOffset-B09.h" +#include "VertOffset-B10.h" +#include "VertOffset-B11.h" +#include "VertOffset-B12.h" +#include "Common_Elevation.h" +#include "RegionalExtension.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VerticalOffset_PR { + VerticalOffset_PR_NOTHING, /* No components present */ + VerticalOffset_PR_offset1, + VerticalOffset_PR_offset2, + VerticalOffset_PR_offset3, + VerticalOffset_PR_offset4, + VerticalOffset_PR_offset5, + VerticalOffset_PR_offset6, + VerticalOffset_PR_elevation, + VerticalOffset_PR_regional +} VerticalOffset_PR; + +/* VerticalOffset */ +typedef struct VerticalOffset { + VerticalOffset_PR present; + union VerticalOffset_u { + VertOffset_B07_t offset1; + VertOffset_B08_t offset2; + VertOffset_B09_t offset3; + VertOffset_B10_t offset4; + VertOffset_B11_t offset5; + VertOffset_B12_t offset6; + Common_Elevation_t elevation; + Reg_VerticalOffset_t regional; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VerticalOffset_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VerticalOffset; + +#ifdef __cplusplus +} +#endif + +#endif /* _VerticalOffset_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VideotexString.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VideotexString.h new file mode 100644 index 000000000..1227f581d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VideotexString.h @@ -0,0 +1,34 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _VideotexString_H_ +#define _VideotexString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t VideotexString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_VideotexString; +extern asn_TYPE_operation_t asn_OP_VideotexString; + +#define VideotexString_free OCTET_STRING_free +#define VideotexString_print OCTET_STRING_print +#define VideotexString_compare OCTET_STRING_compare +#define VideotexString_constraint asn_generic_unknown_constraint +#define VideotexString_decode_ber OCTET_STRING_decode_ber +#define VideotexString_encode_der OCTET_STRING_encode_der +#define VideotexString_decode_xer OCTET_STRING_decode_xer_hex +#define VideotexString_encode_xer OCTET_STRING_encode_xer +#define VideotexString_decode_uper OCTET_STRING_decode_uper +#define VideotexString_encode_uper OCTET_STRING_encode_uper + +#ifdef __cplusplus +} +#endif + +#endif /* _VideotexString_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/VisibleString.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VisibleString.h new file mode 100644 index 000000000..a8d278bed --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/VisibleString.h @@ -0,0 +1,36 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _VisibleString_H_ +#define _VisibleString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t VisibleString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_VisibleString; +extern asn_TYPE_operation_t asn_OP_VisibleString; + +asn_constr_check_f VisibleString_constraint; + +#define VisibleString_free OCTET_STRING_free +#define VisibleString_print OCTET_STRING_print +#define VisibleString_compare OCTET_STRING_compare +#define VisibleString_constraint VisibleString_constraint +#define VisibleString_decode_ber OCTET_STRING_decode_ber +#define VisibleString_encode_der OCTET_STRING_encode_der +#define VisibleString_decode_xer OCTET_STRING_decode_xer_hex +#define VisibleString_encode_xer OCTET_STRING_encode_xer +#define VisibleString_decode_uper OCTET_STRING_decode_uper +#define VisibleString_encode_uper OCTET_STRING_encode_uper + +#ifdef __cplusplus +} +#endif + +#endif /* _VisibleString_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/WaitOnStopline.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WaitOnStopline.h new file mode 100644 index 000000000..670f6a555 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WaitOnStopline.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _WaitOnStopline_H_ +#define _WaitOnStopline_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BOOLEAN.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WaitOnStopline */ +typedef BOOLEAN_t WaitOnStopline_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WaitOnStopline; +asn_struct_free_f WaitOnStopline_free; +asn_struct_print_f WaitOnStopline_print; +asn_constr_check_f WaitOnStopline_constraint; +ber_type_decoder_f WaitOnStopline_decode_ber; +der_type_encoder_f WaitOnStopline_encode_der; +xer_type_decoder_f WaitOnStopline_decode_xer; +xer_type_encoder_f WaitOnStopline_encode_xer; +oer_type_decoder_f WaitOnStopline_decode_oer; +oer_type_encoder_f WaitOnStopline_encode_oer; +per_type_decoder_f WaitOnStopline_decode_uper; +per_type_encoder_f WaitOnStopline_encode_uper; +per_type_decoder_f WaitOnStopline_decode_aper; +per_type_encoder_f WaitOnStopline_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WaitOnStopline_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/WeatherProbe.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WeatherProbe.h new file mode 100644 index 000000000..b0f327592 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WeatherProbe.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _WeatherProbe_H_ +#define _WeatherProbe_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "AmbientAirTemperature.h" +#include "AmbientAirPressure.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct WiperSet; + +/* WeatherProbe */ +typedef struct WeatherProbe { + AmbientAirTemperature_t *airTemp; /* OPTIONAL */ + AmbientAirPressure_t *airPressure; /* OPTIONAL */ + struct WiperSet *rainRates; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WeatherProbe_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WeatherProbe; +extern asn_SEQUENCE_specifics_t asn_SPC_WeatherProbe_specs_1; +extern asn_TYPE_member_t asn_MBR_WeatherProbe_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "WiperSet.h" + +#endif /* _WeatherProbe_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/WeatherReport.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WeatherReport.h new file mode 100644 index 000000000..6fbf18749 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WeatherReport.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _WeatherReport_H_ +#define _WeatherReport_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EssPrecipYesNo.h" +#include "EssPrecipRate.h" +#include "EssPrecipSituation.h" +#include "EssSolarRadiation.h" +#include "EssMobileFriction.h" +#include "CoefficientOfFriction.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WeatherReport */ +typedef struct WeatherReport { + EssPrecipYesNo_t isRaining; + EssPrecipRate_t *rainRate; /* OPTIONAL */ + EssPrecipSituation_t *precipSituation; /* OPTIONAL */ + EssSolarRadiation_t *solarRadiation; /* OPTIONAL */ + EssMobileFriction_t *friction; /* OPTIONAL */ + CoefficientOfFriction_t *roadFriction; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WeatherReport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WeatherReport; +extern asn_SEQUENCE_specifics_t asn_SPC_WeatherReport_specs_1; +extern asn_TYPE_member_t asn_MBR_WeatherReport_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _WeatherReport_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/WheelEndElectFault.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WheelEndElectFault.h new file mode 100644 index 000000000..6a530fc57 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WheelEndElectFault.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _WheelEndElectFault_H_ +#define _WheelEndElectFault_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WheelEndElectFault { + WheelEndElectFault_isOk = 0, + WheelEndElectFault_isNotDefined = 1, + WheelEndElectFault_isError = 2, + WheelEndElectFault_isNotSupported = 3 +} e_WheelEndElectFault; + +/* WheelEndElectFault */ +typedef long WheelEndElectFault_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WheelEndElectFault_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WheelEndElectFault; +extern const asn_INTEGER_specifics_t asn_SPC_WheelEndElectFault_specs_1; +asn_struct_free_f WheelEndElectFault_free; +asn_struct_print_f WheelEndElectFault_print; +asn_constr_check_f WheelEndElectFault_constraint; +ber_type_decoder_f WheelEndElectFault_decode_ber; +der_type_encoder_f WheelEndElectFault_encode_der; +xer_type_decoder_f WheelEndElectFault_decode_xer; +xer_type_encoder_f WheelEndElectFault_encode_xer; +oer_type_decoder_f WheelEndElectFault_decode_oer; +oer_type_encoder_f WheelEndElectFault_encode_oer; +per_type_decoder_f WheelEndElectFault_decode_uper; +per_type_encoder_f WheelEndElectFault_encode_uper; +per_type_decoder_f WheelEndElectFault_decode_aper; +per_type_encoder_f WheelEndElectFault_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WheelEndElectFault_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/WheelSensorStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WheelSensorStatus.h new file mode 100644 index 000000000..8907722d5 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WheelSensorStatus.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _WheelSensorStatus_H_ +#define _WheelSensorStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WheelSensorStatus { + WheelSensorStatus_off = 0, + WheelSensorStatus_on = 1, + WheelSensorStatus_notDefined = 2, + WheelSensorStatus_notSupported = 3 +} e_WheelSensorStatus; + +/* WheelSensorStatus */ +typedef long WheelSensorStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WheelSensorStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WheelSensorStatus; +extern const asn_INTEGER_specifics_t asn_SPC_WheelSensorStatus_specs_1; +asn_struct_free_f WheelSensorStatus_free; +asn_struct_print_f WheelSensorStatus_print; +asn_constr_check_f WheelSensorStatus_constraint; +ber_type_decoder_f WheelSensorStatus_decode_ber; +der_type_encoder_f WheelSensorStatus_encode_der; +xer_type_decoder_f WheelSensorStatus_decode_xer; +xer_type_encoder_f WheelSensorStatus_encode_xer; +oer_type_decoder_f WheelSensorStatus_decode_oer; +oer_type_encoder_f WheelSensorStatus_encode_oer; +per_type_decoder_f WheelSensorStatus_decode_uper; +per_type_encoder_f WheelSensorStatus_encode_uper; +per_type_decoder_f WheelSensorStatus_decode_aper; +per_type_encoder_f WheelSensorStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WheelSensorStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/WiperRate.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WiperRate.h new file mode 100644 index 000000000..70601fd25 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WiperRate.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _WiperRate_H_ +#define _WiperRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WiperRate */ +typedef long WiperRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WiperRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WiperRate; +asn_struct_free_f WiperRate_free; +asn_struct_print_f WiperRate_print; +asn_constr_check_f WiperRate_constraint; +ber_type_decoder_f WiperRate_decode_ber; +der_type_encoder_f WiperRate_encode_der; +xer_type_decoder_f WiperRate_decode_xer; +xer_type_encoder_f WiperRate_encode_xer; +oer_type_decoder_f WiperRate_decode_oer; +oer_type_encoder_f WiperRate_encode_oer; +per_type_decoder_f WiperRate_decode_uper; +per_type_encoder_f WiperRate_encode_uper; +per_type_decoder_f WiperRate_decode_aper; +per_type_encoder_f WiperRate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WiperRate_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/WiperSet.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WiperSet.h new file mode 100644 index 000000000..b8cbd486a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WiperSet.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _WiperSet_H_ +#define _WiperSet_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "WiperStatus.h" +#include "WiperRate.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WiperSet */ +typedef struct WiperSet { + WiperStatus_t statusFront; + WiperRate_t rateFront; + WiperStatus_t *statusRear; /* OPTIONAL */ + WiperRate_t *rateRear; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WiperSet_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WiperSet; +extern asn_SEQUENCE_specifics_t asn_SPC_WiperSet_specs_1; +extern asn_TYPE_member_t asn_MBR_WiperSet_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _WiperSet_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/WiperStatus.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WiperStatus.h new file mode 100644 index 000000000..7ef58d5ad --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WiperStatus.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _WiperStatus_H_ +#define _WiperStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WiperStatus { + WiperStatus_unavailable = 0, + WiperStatus_off = 1, + WiperStatus_intermittent = 2, + WiperStatus_low = 3, + WiperStatus_high = 4, + WiperStatus_washerInUse = 5, + WiperStatus_automaticPresent = 6 + /* + * Enumeration is extensible + */ +} e_WiperStatus; + +/* WiperStatus */ +typedef long WiperStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WiperStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WiperStatus; +extern const asn_INTEGER_specifics_t asn_SPC_WiperStatus_specs_1; +asn_struct_free_f WiperStatus_free; +asn_struct_print_f WiperStatus_print; +asn_constr_check_f WiperStatus_constraint; +ber_type_decoder_f WiperStatus_decode_ber; +der_type_encoder_f WiperStatus_encode_der; +xer_type_decoder_f WiperStatus_decode_xer; +xer_type_encoder_f WiperStatus_encode_xer; +oer_type_decoder_f WiperStatus_decode_oer; +oer_type_encoder_f WiperStatus_encode_oer; +per_type_decoder_f WiperStatus_decode_uper; +per_type_encoder_f WiperStatus_encode_uper; +per_type_decoder_f WiperStatus_decode_aper; +per_type_encoder_f WiperStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WiperStatus_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/WorkZone.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WorkZone.h new file mode 100644 index 000000000..3d94670b6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/WorkZone.h @@ -0,0 +1,69 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _WorkZone_H_ +#define _WorkZone_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ITIScodes.h" +#include "ITIStextPhrase.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WorkZone__Member__item_PR { + WorkZone__Member__item_PR_NOTHING, /* No components present */ + WorkZone__Member__item_PR_itis, + WorkZone__Member__item_PR_text +} WorkZone__Member__item_PR; + +/* Forward definitions */ +typedef struct WorkZone__Member { + struct WorkZone__Member__item { + WorkZone__Member__item_PR present; + union WorkZone__Member__item_u { + ITIScodes_t itis; + ITIStextPhrase_t text; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } item; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WorkZone__Member; + +/* WorkZone */ +typedef struct WorkZone { + A_SEQUENCE_OF(WorkZone__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WorkZone_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WorkZone; +extern asn_SET_OF_specifics_t asn_SPC_WorkZone_specs_1; +extern asn_TYPE_member_t asn_MBR_WorkZone_1[1]; +extern asn_per_constraints_t asn_PER_type_WorkZone_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _WorkZone_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/YawDetected.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/YawDetected.h new file mode 100644 index 000000000..394867a92 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/YawDetected.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#ifndef _YawDetected_H_ +#define _YawDetected_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* YawDetected */ +typedef long YawDetected_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_YawDetected_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_YawDetected; +asn_struct_free_f YawDetected_free; +asn_struct_print_f YawDetected_print; +asn_constr_check_f YawDetected_constraint; +ber_type_decoder_f YawDetected_decode_ber; +der_type_encoder_f YawDetected_encode_der; +xer_type_decoder_f YawDetected_decode_xer; +xer_type_encoder_f YawDetected_encode_xer; +oer_type_decoder_f YawDetected_decode_oer; +oer_type_encoder_f YawDetected_encode_oer; +per_type_decoder_f YawDetected_decode_uper; +per_type_encoder_f YawDetected_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _YawDetected_H_ */ +#include diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/YawRate.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/YawRate.h new file mode 100644 index 000000000..5a43f46b7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/YawRate.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _YawRate_H_ +#define _YawRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* YawRate */ +typedef long YawRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_YawRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_YawRate; +asn_struct_free_f YawRate_free; +asn_struct_print_f YawRate_print; +asn_constr_check_f YawRate_constraint; +ber_type_decoder_f YawRate_decode_ber; +der_type_encoder_f YawRate_encode_der; +xer_type_decoder_f YawRate_decode_xer; +xer_type_encoder_f YawRate_encode_xer; +oer_type_decoder_f YawRate_decode_oer; +oer_type_encoder_f YawRate_encode_oer; +per_type_decoder_f YawRate_decode_uper; +per_type_encoder_f YawRate_encode_uper; +per_type_decoder_f YawRate_decode_aper; +per_type_encoder_f YawRate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _YawRate_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/YawRateConfidence.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/YawRateConfidence.h new file mode 100644 index 000000000..343eb588e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/YawRateConfidence.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _YawRateConfidence_H_ +#define _YawRateConfidence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum YawRateConfidence { + YawRateConfidence_unavailable = 0, + YawRateConfidence_degSec_100_00 = 1, + YawRateConfidence_degSec_010_00 = 2, + YawRateConfidence_degSec_005_00 = 3, + YawRateConfidence_degSec_001_00 = 4, + YawRateConfidence_degSec_000_10 = 5, + YawRateConfidence_degSec_000_05 = 6, + YawRateConfidence_degSec_000_01 = 7 +} e_YawRateConfidence; + +/* YawRateConfidence */ +typedef long YawRateConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_YawRateConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_YawRateConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_YawRateConfidence_specs_1; +asn_struct_free_f YawRateConfidence_free; +asn_struct_print_f YawRateConfidence_print; +asn_constr_check_f YawRateConfidence_constraint; +ber_type_decoder_f YawRateConfidence_decode_ber; +der_type_encoder_f YawRateConfidence_encode_der; +xer_type_decoder_f YawRateConfidence_decode_xer; +xer_type_encoder_f YawRateConfidence_encode_xer; +oer_type_decoder_f YawRateConfidence_decode_oer; +oer_type_encoder_f YawRateConfidence_encode_oer; +per_type_decoder_f YawRateConfidence_decode_uper; +per_type_encoder_f YawRateConfidence_encode_uper; +per_type_decoder_f YawRateConfidence_decode_aper; +per_type_encoder_f YawRateConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _YawRateConfidence_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Year.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Year.h new file mode 100644 index 000000000..23676c7d8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Year.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Year_H_ +#define _Year_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Year */ +typedef long Year_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Year_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Year; +asn_struct_free_f Year_free; +asn_struct_print_f Year_print; +asn_constr_check_f Year_constraint; +ber_type_decoder_f Year_decode_ber; +der_type_encoder_f Year_encode_der; +xer_type_decoder_f Year_decode_xer; +xer_type_encoder_f Year_encode_xer; +oer_type_decoder_f Year_decode_oer; +oer_type_encoder_f Year_encode_oer; +per_type_decoder_f Year_decode_uper; +per_type_encoder_f Year_encode_uper; +per_type_decoder_f Year_decode_aper; +per_type_encoder_f Year_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Year_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ZoneLength.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ZoneLength.h new file mode 100644 index 000000000..8ccaf1da8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ZoneLength.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _ZoneLength_H_ +#define _ZoneLength_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ZoneLength */ +typedef long ZoneLength_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ZoneLength_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ZoneLength; +asn_struct_free_f ZoneLength_free; +asn_struct_print_f ZoneLength_print; +asn_constr_check_f ZoneLength_constraint; +ber_type_decoder_f ZoneLength_decode_ber; +der_type_encoder_f ZoneLength_encode_der; +xer_type_decoder_f ZoneLength_decode_xer; +xer_type_encoder_f ZoneLength_encode_xer; +oer_type_decoder_f ZoneLength_decode_oer; +oer_type_encoder_f ZoneLength_encode_oer; +per_type_decoder_f ZoneLength_decode_uper; +per_type_encoder_f ZoneLength_encode_uper; +per_type_decoder_f ZoneLength_decode_aper; +per_type_encoder_f ZoneLength_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ZoneLength_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/Zoom.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Zoom.h new file mode 100644 index 000000000..8aaee8317 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/Zoom.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#ifndef _Zoom_H_ +#define _Zoom_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Zoom */ +typedef long Zoom_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Zoom_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Zoom; +asn_struct_free_f Zoom_free; +asn_struct_print_f Zoom_print; +asn_constr_check_f Zoom_constraint; +ber_type_decoder_f Zoom_decode_ber; +der_type_encoder_f Zoom_encode_der; +xer_type_decoder_f Zoom_decode_xer; +xer_type_encoder_f Zoom_encode_xer; +oer_type_decoder_f Zoom_decode_oer; +oer_type_encoder_f Zoom_encode_oer; +per_type_decoder_f Zoom_decode_uper; +per_type_encoder_f Zoom_encode_uper; +per_type_decoder_f Zoom_decode_aper; +per_type_encoder_f Zoom_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Zoom_H_ */ +#include "asn_internal.h" diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_decoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_decoder.h new file mode 100644 index 000000000..10352c710 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_decoder.h @@ -0,0 +1,47 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_DECODER_H_ +#define _APER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Aligned PER decoder of a "complete encoding" as per X.691#10.1. + * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. + */ +asn_dec_rval_t aper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ + ); + +/* + * Aligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t aper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of data buffer */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ + ); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_DECODER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_encoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_encoder.h new file mode 100644 index 000000000..957b0bdbe --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_encoder.h @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_ENCODER_H_ +#define _APER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Aligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t aper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of aper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t aper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +/* + * A variant of aper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of aper_encode() and aper_encode_to_buffer(). + */ +ssize_t +aper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *td, + const asn_per_constraints_t *constraints, + const void *sptr, + void **buffer_r +); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_ENCODER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_opentype.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_opentype.h new file mode 100644 index 000000000..451b01c3b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_opentype.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_OPENTYPE_H_ +#define _APER_OPENTYPE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + + +int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); + +int aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_OPENTYPE_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_support.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_support.h new file mode 100644 index 000000000..a3724455c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/aper_support.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_SUPPORT_H_ +#define _APER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Aligned PER stream. + */ +ssize_t aper_get_length(asn_per_data_t *pd, ssize_t lb, ssize_t ub, + int effective_bound_bits, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t aper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" to the Aligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-n is needed. + * In that case, invoke aper_put_length(po, -1, -1, 0, NULL) after encoding the + * last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t aper_put_length(asn_per_outp_t *po, ssize_t lb, ssize_t ub, size_t n, + int *opt_need_eom); + +/* Align the current bit position to octet bundary */ +int aper_put_align(asn_per_outp_t *po); +int32_t aper_get_align(asn_per_data_t *pd); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int aper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_SUPPORT_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_SEQUENCE_OF.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_SEQUENCE_OF.h new file mode 100644 index 000000000..e35bc447a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_SEQUENCE_OF.h @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SEQUENCE_OF_H +#define ASN_SEQUENCE_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SEQUENCE OF is the same as SET OF with a tiny difference: + * the delete operation preserves the initial order of elements + * and thus MAY operate in non-constant time. + */ +#define A_SEQUENCE_OF(type) A_SET_OF(type) + +#define ASN_SEQUENCE_ADD(headptr, ptr) \ + asn_sequence_add((headptr), (ptr)) + +/*********************************************** + * Implementation of the SEQUENCE OF structure. + */ + +#define asn_sequence_add asn_set_add +#define asn_sequence_empty asn_set_empty + +/* + * Delete the element from the set by its number (base 0). + * This is NOT a constant-time operation. + * The order of elements is preserved. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_; +#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr)) +#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SEQUENCE_OF_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_SET_OF.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_SET_OF.h new file mode 100644 index 000000000..882e1a47d --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_SET_OF.h @@ -0,0 +1,72 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SET_OF_H +#define ASN_SET_OF_H + +#ifdef __cplusplus +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(decltype(*array)); \ + } +#else /* C */ +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(type *); \ + } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define ASN_SET_ADD(headptr, ptr) \ + asn_set_add((headptr), (ptr)) + +/******************************************* + * Implementation of the SET OF structure. + */ + +/* + * Add another structure into the set by its pointer. + * RETURN VALUES: + * 0 for success and -1/errno for failure. + */ +int asn_set_add(void *asn_set_of_x, void *ptr); + +/* + * Delete the element from the set by its number (base 0). + * This is a constant-time operation. The order of elements before the + * deleted ones is guaranteed, the order of elements after the deleted + * one is NOT guaranteed. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_set_del(void *asn_set_of_x, int number, int _do_free); + +/* + * Empty the contents of the set. Will free the elements, if (*free) is given. + * Will NOT free the set itself. + */ +void asn_set_empty(void *asn_set_of_x); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SET_OF(void) asn_anonymous_set_; +#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr)) +#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SET_OF_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_application.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_application.h new file mode 100644 index 000000000..bf10cd3e2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_application.h @@ -0,0 +1,173 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Application-level ASN.1 callbacks. + */ +#ifndef ASN_APPLICATION_H +#define ASN_APPLICATION_H + +#include "asn_system.h" /* for platform-dependent types */ +#include "asn_codecs.h" /* for ASN.1 codecs specifics */ +#include "asn_config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A selection of ASN.1 Transfer Syntaxes to use with generalized + * encoders and decoders declared further in this .h file. + */ +enum asn_transfer_syntax { + /* Avoid appearance of a default transfer syntax. */ + ATS_INVALID = 0, + /* Plaintext output (not conforming to any standard), for debugging. */ + ATS_NONSTANDARD_PLAINTEXT, + /* Returns a randomly generated structure. */ + ATS_RANDOM, + /* + * X.690: + * BER: Basic Encoding Rules. + * DER: Distinguished Encoding Rules. + * CER: Canonical Encoding Rules. + * DER and CER are more strict variants of BER. + */ + ATS_BER, + ATS_DER, + ATS_CER, /* Only decoding is supported */ + /* + * X.696: + * OER: Octet Encoding Rules. + * CANONICAL-OER is a more strict variant of BASIC-OER. + */ + ATS_BASIC_OER, + ATS_CANONICAL_OER, + /* + * X.691: + * PER: Packed Encoding Rules. + * CANONICAL-PER is a more strict variant of BASIC-PER. + * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). + */ + ATS_UNALIGNED_BASIC_PER, + ATS_UNALIGNED_CANONICAL_PER, + ATS_ALIGNED_BASIC_PER, + ATS_ALIGNED_CANONICAL_PER, + /* + * X.693: + * XER: XML Encoding Rules. + * CANONICAL-XER is a more strict variant of BASIC-XER. + */ + ATS_BASIC_XER, + ATS_CANONICAL_XER, + ATS_JER, +}; + +/* + * A generic encoder for any supported transfer syntax. + * RETURN VALUES: + * The (.encoded) field of the return value is REDEFINED to mean the following: + * >=0: The computed size of the encoded data. Can exceed the (buffer_size). + * -1: Error encoding the structure. See the error code in (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate + * values at the place of failure, if at all possible. + * WARNING: The (.encoded) field of the return value can exceed the buffer_size. + * This is similar to snprintf(3) contract which might return values + * greater than the buffer size. + */ +asn_enc_rval_t asn_encode_to_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, void *buffer, size_t buffer_size); + +/* + * A variant of asn_encode_to_buffer() with automatically allocated buffer. + * RETURN VALUES: + * On success, returns a newly allocated (.buffer) containing the whole message. + * The message size is returned in (.result.encoded). + * On failure: + * (.buffer) is NULL, + * (.result.encoded) as in asn_encode_to_buffer(), + * The errno codes as in asn_encode_to_buffer(), plus the following: + * ENOMEM: Memory allocation failed due to system or internal limits. + * The user is responsible for freeing the (.buffer). + */ +typedef struct asn_encode_to_new_buffer_result_s { + void *buffer; /* NULL if failed to encode. */ + asn_enc_rval_t result; +} asn_encode_to_new_buffer_result_t; +asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode); + + +/* + * Generic type of an application-defined callback to return various + * types of data to the application. + * EXPECTED RETURN VALUES: + * -1: Failed to consume bytes. Abort the mission. + * Non-negative return values indicate success, and ignored. + */ +typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, + void *application_specific_key); + + +/* + * A generic encoder for any supported transfer syntax. + * Returns the comprehensive encoding result descriptor (see asn_codecs.h). + * RETURN VALUES: + * The negative (.encoded) field of the return values is accompanied with the + * following error codes (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * EIO: The (callback) has returned negative value during encoding. + */ +asn_enc_rval_t asn_encode( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, + asn_app_consume_bytes_f *callback, void *callback_key); + + +/* + * A generic decoder for any supported transfer syntax. + */ +asn_dec_rval_t asn_decode( + const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_decode, + void **structure_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + + +/* + * A callback of this type is called whenever constraint validation fails + * on some ASN.1 type. See "constraints.h" for more details on constraint + * validation. + * This callback specifies a descriptor of the ASN.1 type which failed + * the constraint check, as well as human readable message on what + * particular constraint has failed. + */ +typedef void (asn_app_constraint_failed_f)(void *application_specific_key, + const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, + const void *structure_which_failed_ptr, + const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); + + +#ifdef __cplusplus +} +#endif + +#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ + +#endif /* ASN_APPLICATION_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_bit_data.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_bit_data.h new file mode 100644 index 000000000..f14714bbd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_bit_data.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_BIT_DATA +#define ASN_BIT_DATA + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This structure describes a position inside an incoming PER bit stream. + */ +typedef struct asn_bit_data_s { + const uint8_t *buffer; /* Pointer to the octet stream */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits in the stream */ + size_t moved; /* Number of bits moved through this bit stream */ + int (*refill)(struct asn_bit_data_s *); + void *refill_key; +} asn_bit_data_t; + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits); + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits); + +/* Undo the immediately preceding "get_few_bits" operation */ +void asn_get_undo(asn_bit_data_t *, int get_nbits); + +/* + * Extract a large number of bits from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align, + int get_nbits); + +/* Non-thread-safe debugging function, don't use it */ +char *asn_bit_data_string(asn_bit_data_t *); + +/* + * This structure supports forming bit output. + */ +typedef struct asn_bit_outp_s { + uint8_t *buffer; /* Pointer into the (tmpspace) */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits left in (tmpspace) */ + uint8_t tmpspace[32]; /* Preliminary storage to hold data */ + int (*output)(const void *data, size_t size, void *op_key); + void *op_key; /* Key for (output) data callback */ + size_t flushed_bytes; /* Bytes already flushed through (output) */ +} asn_bit_outp_t; + +/* Output a small number of bits (<= 31) */ +int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits); + +/* Output a large number of bits */ +int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits); + +/* + * Flush whole bytes (0 or more) through (outper) member. + * The least significant bits which are not used are guaranteed to be set to 0. + * Returns -1 if callback returns -1. Otherwise, 0. + */ +int asn_put_aligned_flush(asn_bit_outp_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_BIT_DATA */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_codecs.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_codecs.h new file mode 100644 index 000000000..e75c2709c --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_codecs.h @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_H +#define ASN_CODECS_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * This structure defines a set of parameters that may be passed + * to every ASN.1 encoder or decoder function. + * WARNING: if max_stack_size member is set, and you are calling the + * function pointers of the asn_TYPE_descriptor_t directly, + * this structure must be ALLOCATED ON THE STACK! + * If you can't always satisfy this requirement, use ber_decode(), + * xer_decode() and uper_decode() functions instead. + */ +typedef struct asn_codec_ctx_s { + /* + * Limit the decoder routines to use no (much) more stack than a given + * number of bytes. Most of decoders are stack-based, and this + * would protect against stack overflows if the number of nested + * encodings is high. + * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based, + * and are safe from this kind of overflow. + * A value from getrlimit(RLIMIT_STACK) may be used to initialize + * this variable. Be careful in multithreaded environments, as the + * stack size is rather limited. + */ + size_t max_stack_size; /* 0 disables stack bounds checking */ +} asn_codec_ctx_t; + +/* + * Type of the return value of the encoding functions (der_encode, xer_encode). + */ +typedef struct asn_enc_rval_s { + /* + * Number of bytes encoded. + * -1 indicates failure to encode the structure. + * In this case, the members below this one are meaningful. + */ + ssize_t encoded; + + /* + * Members meaningful when (encoded == -1), for post mortem analysis. + */ + + /* Type which cannot be encoded */ + const struct asn_TYPE_descriptor_s *failed_type; + + /* Pointer to the structure of that type */ + const void *structure_ptr; +} asn_enc_rval_t; +#define ASN__ENCODE_FAILED do { \ + asn_enc_rval_t tmp_error; \ + tmp_error.encoded = -1; \ + tmp_error.failed_type = td; \ + tmp_error.structure_ptr = sptr; \ + ASN_DEBUG("Failed to encode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__ENCODED_OK(rval) do { \ + rval.structure_ptr = 0; \ + rval.failed_type = 0; \ + return rval; \ +} while(0) + +/* + * Type of the return value of the decoding functions (ber_decode, xer_decode) + * + * Please note that the number of consumed bytes is ALWAYS meaningful, + * even if code==RC_FAIL. This is to indicate the number of successfully + * decoded bytes, hence providing a possibility to fail with more diagnostics + * (i.e., print the offending remainder of the buffer). + */ +enum asn_dec_rval_code_e { + RC_OK, /* Decoded successfully */ + RC_WMORE, /* More data expected, call again */ + RC_FAIL /* Failure to decode data */ +}; +typedef struct asn_dec_rval_s { + enum asn_dec_rval_code_e code; /* Result code */ + size_t consumed; /* Number of bytes consumed */ +} asn_dec_rval_t; +#define ASN__DECODE_FAILED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_FAIL; \ + tmp_error.consumed = 0; \ + ASN_DEBUG("Failed to decode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__DECODE_STARVED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_WMORE; \ + tmp_error.consumed = 0; \ + return tmp_error; \ +} while(0) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_codecs_prim.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_codecs_prim.h new file mode 100644 index 000000000..5bbd9cfbc --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_codecs_prim.h @@ -0,0 +1,56 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_PRIM_H +#define ASN_CODECS_PRIM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ASN__PRIMITIVE_TYPE_s { + uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */ + size_t size; /* Size of the buffer */ +} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */ + +asn_struct_free_f ASN__PRIMITIVE_TYPE_free; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f ber_decode_primitive; +der_type_encoder_f der_encode_primitive; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +/* + * A callback specification for the xer_decode_primitive() function below. + */ +enum xer_pbd_rval { + XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */ + XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */ + XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */ + XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */ + XPBD_BODY_CONSUMED /* Body is recognized and consumed */ +}; +typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)( + const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf, + size_t chunk_size); + +/* + * Specific function to decode simple primitive types. + * Also see xer_decode_general() in xer_decoder.h + */ +asn_dec_rval_t xer_decode_primitive( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder); +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_PRIM_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_config.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_config.h new file mode 100644 index 000000000..10e9c328b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_config.h @@ -0,0 +1,3 @@ +// Generated automatically. Don't edit manually! + +#define ASN_DISABLE_JER_SUPPORT 1 diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_constant.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_constant.h new file mode 100644 index 000000000..cdd7ad7c7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_constant.h @@ -0,0 +1,308 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +#ifndef _ASN_CONSTANT_H +#define _ASN_CONSTANT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define min_val_AddGrpB_Angle (0) +#define max_val_AddGrpB_Angle (239) +#define min_val_Day (0) +#define max_val_Day (255) +#define min_val_DegreesLat (-90) +#define max_val_DegreesLat (90) +#define min_val_DegreesLong (-180) +#define max_val_DegreesLong (180) +#define min_val_AddGrpB_Elevation (-32768) +#define max_val_AddGrpB_Elevation (32767) +#define min_val_Hour (0) +#define max_val_Hour (255) +#define min_val_LatitudeDMS (-32400000) +#define max_val_LatitudeDMS (32400000) +#define min_val_LongitudeDMS (-64800000) +#define max_val_LongitudeDMS (64800000) +#define min_val_MaxTimetoChange (0) +#define max_val_MaxTimetoChange (2402) +#define min_val_MinTimetoChange (0) +#define max_val_MinTimetoChange (2402) +#define min_val_Minute (0) +#define max_val_Minute (255) +#define min_val_MinutesAngle (0) +#define max_val_MinutesAngle (59) +#define min_val_Month (1) +#define max_val_Month (255) +#define min_val_AddGrpB_MsgCount (0) +#define max_val_AddGrpB_MsgCount (255) +#define min_val_Second (0) +#define max_val_Second (60) +#define min_val_SecondsAngle (0) +#define max_val_SecondsAngle (5999) +#define min_val_TenthSecond (0) +#define max_val_TenthSecond (9) +#define min_val_TimeRemaining (0) +#define max_val_TimeRemaining (9001) +#define min_val_Year (1) +#define max_val_Year (65535) +#define min_val_AltitudeValue (-100000) +#define max_val_AltitudeValue (800001) +#define min_val_PartII_Id (0) +#define max_val_PartII_Id (63) +#define min_val_TrailerMass (0) +#define max_val_TrailerMass (255) +#define min_val_VertOffset_B07 (-64) +#define max_val_VertOffset_B07 (63) +#define min_val_Acceleration (-2000) +#define max_val_Acceleration (2001) +#define min_val_AmbientAirPressure (0) +#define max_val_AmbientAirPressure (255) +#define min_val_AmbientAirTemperature (0) +#define max_val_AmbientAirTemperature (191) +#define min_val_Common_Angle (0) +#define max_val_Common_Angle (28800) +#define min_val_ApproachID (0) +#define max_val_ApproachID (15) +#define min_val_BasicVehicleClass (0) +#define max_val_BasicVehicleClass (255) +#define min_val_BumperHeight (0) +#define max_val_BumperHeight (127) +#define min_val_CoarseHeading (0) +#define max_val_CoarseHeading (240) +#define min_val_CoefficientOfFriction (0) +#define max_val_CoefficientOfFriction (50) +#define min_val_Confidence (0) +#define max_val_Confidence (200) +#define min_val_Count (0) +#define max_val_Count (32) +#define min_val_DDay (0) +#define max_val_DDay (31) +#define min_val_DeltaAngle (-150) +#define max_val_DeltaAngle (150) +#define min_val_DHour (0) +#define max_val_DHour (31) +#define min_val_DMinute (0) +#define max_val_DMinute (60) +#define min_val_DMonth (0) +#define max_val_DMonth (12) +#define min_val_DOffset (-840) +#define max_val_DOffset (840) +#define min_val_DrivenLineOffsetLg (-32767) +#define max_val_DrivenLineOffsetLg (32767) +#define min_val_DrivenLineOffsetSm (-2047) +#define max_val_DrivenLineOffsetSm (2047) +#define min_val_DSecond (0) +#define max_val_DSecond (65535) +#define min_val_Duration (0) +#define max_val_Duration (3600) +#define min_val_DYear (0) +#define max_val_DYear (4095) +#define min_val_Common_Elevation (-4096) +#define max_val_Common_Elevation (61439) +#define min_val_FuelType (0) +#define max_val_FuelType (15) +#define min_val_GrossSpeed (0) +#define max_val_GrossSpeed (31) +#define min_val_Heading (0) +#define max_val_Heading (28800) +#define min_val_IntersectionID (0) +#define max_val_IntersectionID (65535) +#define min_val_Iso3833VehicleType (0) +#define max_val_Iso3833VehicleType (100) +#define min_val_TrailerWeight (0) +#define max_val_TrailerWeight (64255) +#define min_val_LaneConnectionID (0) +#define max_val_LaneConnectionID (255) +#define min_val_LaneID (0) +#define max_val_LaneID (255) +#define min_val_LaneWidth (0) +#define max_val_LaneWidth (32767) +#define min_val_Latitude (-900000000) +#define max_val_Latitude (900000001) +#define min_val_Longitude (-1799999999) +#define max_val_Longitude (1800000001) +#define min_val_MergeDivergeNodeAngle (-180) +#define max_val_MergeDivergeNodeAngle (180) +#define min_val_MinuteOfTheYear (0) +#define max_val_MinuteOfTheYear (527040) +#define min_val_Common_MsgCount (0) +#define max_val_Common_MsgCount (127) +#define min_val_ObstacleDistance (0) +#define max_val_ObstacleDistance (32767) +#define min_val_Offset_B09 (-256) +#define max_val_Offset_B09 (255) +#define min_val_Offset_B10 (-512) +#define max_val_Offset_B10 (511) +#define min_val_Offset_B11 (-1024) +#define max_val_Offset_B11 (1023) +#define min_val_Offset_B12 (-2048) +#define max_val_Offset_B12 (2047) +#define min_val_Offset_B13 (-4096) +#define max_val_Offset_B13 (4095) +#define min_val_Offset_B14 (-8192) +#define max_val_Offset_B14 (8191) +#define min_val_Offset_B16 (-32768) +#define max_val_Offset_B16 (32767) +#define min_val_OffsetLL_B18 (-131072) +#define max_val_OffsetLL_B18 (131071) +#define min_val_RadiusOfCurvature (-32767) +#define max_val_RadiusOfCurvature (32767) +#define min_val_RegionId (0) +#define max_val_RegionId (255) +#define min_val_RequestID (0) +#define max_val_RequestID (255) +#define min_val_RestrictionClassID (0) +#define max_val_RestrictionClassID (255) +#define min_val_RoadRegulatorID (0) +#define max_val_RoadRegulatorID (65535) +#define min_val_RoadSegmentID (0) +#define max_val_RoadSegmentID (65535) +#define min_val_RoadwayCrownAngle (-128) +#define max_val_RoadwayCrownAngle (127) +#define min_val_Scale_B12 (-2048) +#define max_val_Scale_B12 (2047) +#define min_val_SemiMajorAxisAccuracy (0) +#define max_val_SemiMajorAxisAccuracy (255) +#define min_val_SemiMajorAxisOrientation (0) +#define max_val_SemiMajorAxisOrientation (65535) +#define min_val_SemiMinorAxisAccuracy (0) +#define max_val_SemiMinorAxisAccuracy (255) +#define min_val_SignalGroupID (0) +#define max_val_SignalGroupID (255) +#define min_val_Speed (0) +#define max_val_Speed (8191) +#define min_val_SSPindex (0) +#define max_val_SSPindex (31) +#define min_val_StationID (0) +#define max_val_StationID (4294967295) +#define min_val_SteeringWheelAngle (-126) +#define max_val_SteeringWheelAngle (127) +#define min_val_TimeOffset (1) +#define max_val_TimeOffset (65535) +#define min_val_VehicleHeight (0) +#define max_val_VehicleHeight (127) +#define min_val_VehicleLength (0) +#define max_val_VehicleLength (4095) +#define min_val_VehicleMass (0) +#define max_val_VehicleMass (255) +#define min_val_VehicleWidth (0) +#define max_val_VehicleWidth (1023) +#define min_val_Velocity (0) +#define max_val_Velocity (8191) +#define min_val_VerticalAcceleration (-127) +#define max_val_VerticalAcceleration (127) +#define min_val_VertOffset_B08 (-128) +#define max_val_VertOffset_B08 (127) +#define min_val_VertOffset_B09 (-256) +#define max_val_VertOffset_B09 (255) +#define min_val_VertOffset_B10 (-512) +#define max_val_VertOffset_B10 (511) +#define min_val_VertOffset_B11 (-1024) +#define max_val_VertOffset_B11 (1023) +#define min_val_VertOffset_B12 (-2048) +#define max_val_VertOffset_B12 (2047) +#define min_val_WiperRate (0) +#define max_val_WiperRate (127) +#define min_val_YawRate (-32767) +#define max_val_YawRate (32767) +#define min_val_ITIScodes (0) +#define max_val_ITIScodes (65535) +#define min_val_LayerID (0) +#define max_val_LayerID (100) +#define min_val_DSRCmsgID (0) +#define max_val_DSRCmsgID (32767) +#define min_val_NMEA_MsgType (0) +#define max_val_NMEA_MsgType (32767) +#define min_val_ObjectCount (0) +#define max_val_ObjectCount (1023) +#define min_val_EssMobileFriction (0) +#define max_val_EssMobileFriction (101) +#define min_val_EssPrecipRate (0) +#define max_val_EssPrecipRate (65535) +#define min_val_EssSolarRadiation (0) +#define max_val_EssSolarRadiation (65535) +#define min_val_AttachmentRadius (0) +#define max_val_AttachmentRadius (200) +#define min_val_PersonalClusterRadius (0) +#define max_val_PersonalClusterRadius (100) +#define min_val_GrossDistance (0) +#define max_val_GrossDistance (1023) +#define min_val_SecondOfTime (0) +#define max_val_SecondOfTime (61) +#define min_val_TermDistance (1) +#define max_val_TermDistance (30000) +#define min_val_TermTime (1) +#define max_val_TermTime (1800) +#define min_val_DrivingWheelAngle (-128) +#define max_val_DrivingWheelAngle (127) +#define min_val_AxleLocation (0) +#define max_val_AxleLocation (255) +#define min_val_AxleWeight (0) +#define max_val_AxleWeight (64255) +#define min_val_CargoWeight (0) +#define max_val_CargoWeight (64255) +#define min_val_DriveAxleLiftAirPressure (0) +#define max_val_DriveAxleLiftAirPressure (1000) +#define min_val_DriveAxleLocation (0) +#define max_val_DriveAxleLocation (255) +#define min_val_DriveAxleLubePressure (0) +#define max_val_DriveAxleLubePressure (250) +#define min_val_DriveAxleTemperature (-40) +#define max_val_DriveAxleTemperature (210) +#define min_val_SteeringAxleLubePressure (0) +#define max_val_SteeringAxleLubePressure (250) +#define min_val_SteeringAxleTemperature (-40) +#define max_val_SteeringAxleTemperature (210) +#define min_val_TireLeakageRate (0) +#define max_val_TireLeakageRate (64255) +#define min_val_TireLocation (0) +#define max_val_TireLocation (255) +#define min_val_TirePressure (0) +#define max_val_TirePressure (250) +#define min_val_TireTemp (-8736) +#define max_val_TireTemp (55519) +#define min_val_ProbeSegmentNumber (0) +#define max_val_ProbeSegmentNumber (32767) +#define min_val_SteeringWheelAngleRateOfChange (-127) +#define max_val_SteeringWheelAngleRateOfChange (127) +#define min_val_SunSensor (0) +#define max_val_SunSensor (1000) +#define min_val_ThrottlePosition (0) +#define max_val_ThrottlePosition (200) +#define min_val_DeltaTime (-122) +#define max_val_DeltaTime (121) +#define min_val_SpeedAdvice (0) +#define max_val_SpeedAdvice (500) +#define min_val_TimeIntervalConfidence (0) +#define max_val_TimeIntervalConfidence (15) +#define min_val_SPAT_TimeMark (0) +#define max_val_SPAT_TimeMark (36111) +#define min_val_ZoneLength (0) +#define max_val_ZoneLength (10000) +#define min_val_MinutesDuration (0) +#define max_val_MinutesDuration (32000) +#define min_val_OffsetLL_B12 (-2048) +#define max_val_OffsetLL_B12 (2047) +#define min_val_OffsetLL_B14 (-8192) +#define max_val_OffsetLL_B14 (8191) +#define min_val_OffsetLL_B16 (-32768) +#define max_val_OffsetLL_B16 (32767) +#define min_val_OffsetLL_B22 (-2097152) +#define max_val_OffsetLL_B22 (2097151) +#define min_val_OffsetLL_B24 (-8388608) +#define max_val_OffsetLL_B24 (8388607) +#define min_val_Radius_B12 (0) +#define max_val_Radius_B12 (4095) +#define min_val_SignPrority (0) +#define max_val_SignPrority (7) +#define min_val_Zoom (0) +#define max_val_Zoom (15) + + +#ifdef __cplusplus +} +#endif + +#endif /* _ASN_CONSTANT_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_internal.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_internal.h new file mode 100644 index 000000000..7103b50fd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_internal.h @@ -0,0 +1,170 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Declarations internally useful for the ASN.1 support code. + */ +#ifndef ASN_INTERNAL_H +#define ASN_INTERNAL_H +#ifndef __EXTENSIONS__ +#define __EXTENSIONS__ /* for Sun */ +#endif + +#include "asn_application.h" /* Application-visible API */ + +#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ +#include /* for assert() macro */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#include +#include +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#include +#include +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +/* Environment version might be used to avoid running with the old library */ +#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ +int get_asn1c_environment_version(void); /* Run-time version */ + +#define CALLOC(nmemb, size) calloc(nmemb, size) +#define MALLOC(size) malloc(size) +#define REALLOC(oldptr, size) realloc(oldptr, size) +#define FREEMEM(ptr) free(ptr) + +#define asn_debug_indent 0 +#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) + +#ifdef EMIT_ASN_DEBUG +#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" +#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG +#endif + +/* + * A macro for debugging the ASN.1 internals. + * You may enable or override it. + */ +#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ +#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ +#if __STDC_VERSION__ >= 199901L +#ifdef ASN_THREAD_SAFE +/* Thread safety requires sacrifice in output indentation: + * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ +#else /* !ASN_THREAD_SAFE */ +#undef ASN_DEBUG_INDENT_ADD +#undef asn_debug_indent +int asn_debug_indent; +#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) +#endif /* ASN_THREAD_SAFE */ +#define ASN_DEBUG(fmt, args...) do { \ + int adi = asn_debug_indent; \ + while(adi--) fprintf(stderr, " "); \ + fprintf(stderr, fmt, ##args); \ + fprintf(stderr, " (%s:%d)\n", \ + __FILE__, __LINE__); \ + } while(0) +#else /* !C99 */ +void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); +#define ASN_DEBUG ASN_DEBUG_f +#endif /* C99 */ +#else /* ASN_EMIT_DEBUG != 1 */ +#if __STDC_VERSION__ >= 199901L +#define ASN_DEBUG(...) do{}while(0) +#else /* not C99 */ +static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } +#endif /* C99 or better */ +#endif /* ASN_EMIT_DEBUG */ +#endif /* ASN_DEBUG */ + +/* + * Print to a callback. + * The callback is expected to return negative values on error. + * 0 and positive values are treated as success. + * RETURN VALUES: + * -1: Failed to format or invoke the callback. + * >0: Size of the data that got delivered to the callback. + */ +ssize_t CC_PRINTFLIKE(3, 4) +asn__format_to_callback( + int (*callback)(const void *, size_t, void *key), void *key, + const char *fmt, ...); + +/* + * Invoke the application-supplied callback and fail, if something is wrong. + */ +#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) +#define ASN__E_CALLBACK(size, foo) \ + do { \ + if(foo) goto cb_failed; \ + er.encoded += (size); \ + } while(0) +#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) +#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ + ASN__E_CALLBACK((size1) + (size2), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) +#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ + ASN__E_CALLBACK((size1) + (size2) + (size3), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ + || ASN__E_cbc(buf3, size3)) + +#define ASN__TEXT_INDENT(nl, level) \ + do { \ + int tmp_level = (level); \ + int tmp_nl = ((nl) != 0); \ + int tmp_i; \ + if(tmp_nl) ASN__CALLBACK("\n", 1); \ + if(tmp_level < 0) tmp_level = 0; \ + for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ + } while(0) + +#define _i_INDENT(nl) do { \ + int tmp_i; \ + if((nl) && cb("\n", 1, app_key) < 0) \ + return -1; \ + for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ + if(cb(" ", 4, app_key) < 0) \ + return -1; \ + } while(0) + +/* + * Check stack against overflow, if limit is set. + */ +#define ASN__DEFAULT_STACK_MAX (30000) +#ifdef ASN_DISABLE_STACK_OVERFLOW_CHECK +static int CC_NOTUSED +ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { + (void)ctx; + return 0; +} +#else +static int CC_NOTUSED +ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { + if(ctx && ctx->max_stack_size) { + + /* ctx MUST be allocated on the stack */ + ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); + if(usedstack > 0) usedstack = -usedstack; /* grows up! */ + + /* double negative required to avoid int wrap-around */ + if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { + ASN_DEBUG("Stack limit %ld reached", + (long)ctx->max_stack_size); + return -1; + } + } + return 0; +} +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_INTERNAL_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_ioc.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_ioc.h new file mode 100644 index 000000000..a78d93179 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_ioc.h @@ -0,0 +1,51 @@ +/* + * Run-time support for Information Object Classes. + * Copyright (c) 2023 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_IOC_H +#define ASN_IOC_H + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; +struct asn_ioc_cell_s; + +/* + * X.681, #13 + */ +typedef struct asn_ioc_set_s { + size_t rows_count; + size_t columns_count; + const struct asn_ioc_cell_s *rows; +} asn_ioc_set_t; + + +typedef struct asn_ioc_cell_s { + const char *field_name; /* Is equal to corresponding column_name */ + enum { + aioc__undefined = 0, + aioc__value, + aioc__type, + aioc__open_type, + } cell_kind; + struct asn_TYPE_descriptor_s *type_descriptor; + const void *value_sptr; + struct { + size_t types_count; + struct { + unsigned choice_position; + } *types; + } open_type; +} asn_ioc_cell_t; + + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_IOC_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_random_fill.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_random_fill.h new file mode 100644 index 000000000..280a4b6fc --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_random_fill.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_RANDOM_FILL +#define ASN_RANDOM_FILL + +/* Forward declarations */ +struct asn_TYPE_descriptor_s; +struct asn_encoding_constraints_s; + +/* + * Initialize a structure with random data according to the type specification + * and optional member constraints. + * ARGUMENTS: + * (max_length) - See (approx_max_length_limit). + * (memb_constraints) - Member constraints, if exist. + * The type can be constrained differently according + * to PER and OER specifications, so we find a value + * at the intersection of these constraints. + * In case the return differs from ARFILL_OK, the (struct_ptr) contents + * and (current_length) value remain in their original state. + */ +typedef struct asn_random_fill_result_s { + enum { + ARFILL_FAILED = -1, /* System error (memory?) */ + ARFILL_OK = 0, /* Initialization succeeded */ + ARFILL_SKIPPED = 1 /* Not done due to (length?) constraint */ + } code; + size_t length; /* Approximate number of bytes created. */ +} asn_random_fill_result_t; +typedef asn_random_fill_result_t(asn_random_fill_f)( + const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + const struct asn_encoding_constraints_s *memb_constraints, + size_t max_length); + +/* + * Returns 0 if the structure was properly initialized, -1 otherwise. + * The (approx_max_length_limit) specifies the approximate limit of the + * resulting structure in units closely resembling bytes. The actual result + * might be several times larger or smaller than the length limit. + */ +int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t approx_max_length_limit); + +/* + * Returns a random number between min and max. + */ +intmax_t asn_random_between(intmax_t min, intmax_t max); + +#endif /* ASN_RANDOM_FILL */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_system.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_system.h new file mode 100644 index 000000000..0f0d495b2 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/asn_system.h @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Miscellaneous system-dependent types. + */ +#ifndef ASN_SYSTEM_H +#define ASN_SYSTEM_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE 1 +#endif + +#ifndef _BSD_SOURCE +#define _BSD_SOURCE /* for snprintf() on some linux systems */ +#endif + +#include /* For snprintf(3) */ +#include /* For *alloc(3) */ +#include /* For memcpy(3) */ +#include /* For size_t */ +#include /* For LONG_MAX */ +#include /* For va_start */ +#include /* for offsetof and ptrdiff_t */ +#include /* for PRIdMAX */ + +#ifdef _WIN32 + +#include +#ifndef __MINGW32__ +#define snprintf _snprintf +#define vsnprintf _vsnprintf +#endif + +/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */ +#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \ + | (((l) << 8) & 0xff0000) \ + | (((l) >> 8) & 0xff00) \ + | ((l >> 24) & 0xff)) + +#ifdef _MSC_VER /* MSVS.Net */ +#ifndef __cplusplus +#define inline __inline +#endif +#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */ +#define ssize_t SSIZE_T +#if _MSC_VER < 1600 +typedef char int8_t; +typedef short int16_t; +typedef int int32_t; +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +#else /* _MSC_VER >= 1600 */ +#include +#endif /* _MSC_VER < 1600 */ +#endif /* ASSUMESTDTYPES */ +#define WIN32_LEAN_AND_MEAN +#include +#include +#define isnan _isnan +#define finite _finite +#define copysign _copysign +#define ilogb _logb +#else /* !_MSC_VER */ +#include +#endif /* _MSC_VER */ + +#else /* !_WIN32 */ + +#if defined(__vxworks) +#include +#else /* !defined(__vxworks) */ + +#include /* C99 specifies this file */ +#ifdef HAVE_NETINET_IN_H +#include /* for ntohl() */ +#endif +#define sys_ntohl(foo) ntohl(foo) +#endif /* defined(__vxworks) */ + +#endif /* _WIN32 */ + +#if __GNUC__ >= 3 || defined(__clang__) +#define CC_ATTRIBUTE(attr) __attribute__((attr)) +#else +#define CC_ATTRIBUTE(attr) +#endif +#if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__>= 4) || __GNUC__ > 4) +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(gnu_printf, fmt, var)) +#elif defined(__GNUC__) +#if defined(ANDROID) +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(__format__(__printf__, fmt, var)) +#else +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var)) +#endif +#else +#define CC_PRINTFLIKE(fmt, var) +#endif +#define CC_NOTUSED CC_ATTRIBUTE(unused) +#ifndef CC_ATTR_NO_SANITIZE +#if __GNUC__ < 8 +#define CC_ATTR_NO_SANITIZE(what) +#else +#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what)) +#endif +#endif + +/* Figure out if thread safety is requested */ +#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) +#define ASN_THREAD_SAFE +#endif /* Thread safety */ + +#ifndef offsetof /* If not defined by */ +#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) +#endif /* offsetof */ + +#ifndef MIN /* Suitable for comparing primitive types (integers) */ +#if defined(__GNUC__) +#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ + ((_a)<(_b)?(_a):(_b)); }) +#else /* !__GNUC__ */ +#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ +#endif /* __GNUC__ */ +#endif /* MIN */ + +#if __STDC_VERSION__ >= 199901L +#ifndef SIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#endif + +#ifndef RSIZE_MAX /* C11, Annex K */ +#define RSIZE_MAX (SIZE_MAX >> 1) +#endif +#ifndef RSSIZE_MAX /* Halve signed size even further than unsigned */ +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif +#else /* Old compiler */ +#undef SIZE_MAX +#undef RSIZE_MAX +#undef RSSIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#define RSIZE_MAX (SIZE_MAX >> 1) +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif + +#if __STDC_VERSION__ >= 199901L +#define ASN_PRI_SIZE "zu" +#define ASN_PRI_SSIZE "zd" +#define ASN_PRIuMAX PRIuMAX +#define ASN_PRIdMAX PRIdMAX +#else +#define ASN_PRI_SIZE "lu" +#define ASN_PRI_SSIZE "ld" +#if LLONG_MAX > LONG_MAX +#define ASN_PRIuMAX "llu" +#define ASN_PRIdMAX "lld" +#else +#define ASN_PRIuMAX "lu" +#define ASN_PRIdMAX "ld" +#endif +#endif + +#endif /* ASN_SYSTEM_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ber_decoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ber_decoder.h new file mode 100644 index 000000000..1ac2a5ef0 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ber_decoder.h @@ -0,0 +1,66 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_DECODER_H_ +#define _BER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_codec_ctx_s; /* Forward declaration */ + +/* + * The BER decoder of any type. + * This function may be invoked directly from the application. + * Decodes BER, DER and CER data (DER and CER are different subsets of BER). + * + * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding + * which is compliant with ber_decode(). + */ +asn_dec_rval_t ber_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + +/* + * Type of generic function which decodes the byte stream into the structure. + */ +typedef asn_dec_rval_t(ber_type_decoder_f)( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const void *buf_ptr, size_t size, int tag_mode); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Check that all tags correspond to the type definition (as given in head). + * On return, last_length would contain either a non-negative length of the + * value part of the last TLV, or the negative number of expected + * "end of content" sequences. The number may only be negative if the + * head->last_tag_form is non-zero. + */ +asn_dec_rval_t ber_check_tags( + const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ + const struct asn_TYPE_descriptor_s *type_descriptor, + asn_struct_ctx_t *opt_ctx, /* saved decoding context */ + const void *ptr, size_t size, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {-1,0:1}: any, primitive, constr */ + ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_DECODER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ber_tlv_length.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ber_tlv_length.h new file mode 100644 index 000000000..d1e4d48dd --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ber_tlv_length.h @@ -0,0 +1,50 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_LENGTH_H_ +#define _BER_TLV_LENGTH_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ssize_t ber_tlv_len_t; + +/* + * This function tries to fetch the length of the BER TLV value and place it + * in *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + * On return with >0, len_r is constrained as -1..MAX, where -1 mean + * that the value is of indefinite length. + */ +ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r); + +/* + * This function expects bufptr to be positioned over L in TLV. + * It returns number of bytes occupied by L and V together, suitable + * for skipping. The function properly handles indefinite length. + * RETURN VALUES: + * Standard {-1,0,>0} convention. + */ +ssize_t ber_skip_length( + const struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */ + int _is_constructed, const void *bufptr, size_t size); + +/* + * This function serializes the length (L from TLV) in DER format. + * It always returns number of bytes necessary to represent the length, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_LENGTH_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/ber_tlv_tag.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ber_tlv_tag.h new file mode 100644 index 000000000..ce227add6 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/ber_tlv_tag.h @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_TAG_H_ +#define _BER_TLV_TAG_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +enum asn_tag_class { + ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */ + ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */ + ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */ + ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */ +}; +typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */ + +/* + * Tag class is encoded together with tag value for optimization purposes. + */ +#define BER_TAG_CLASS(tag) ((tag) & 0x3) +#define BER_TAG_VALUE(tag) ((tag) >> 2) +#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0) + +#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2)) + +/* + * Several functions for printing the TAG in the canonical form + * (i.e. "[PRIVATE 0]"). + * Return values correspond to their libc counterparts (if any). + */ +ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen); +ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *); +char *ber_tlv_tag_string(ber_tlv_tag_t tag); + + +/* + * This function tries to fetch the tag from the input stream. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering tag. + * >0: Number of bytes used from bufptr. tag_r will contain the tag. + */ +ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r); + +/* + * This function serializes the tag (T from TLV) in BER format. + * It always returns number of bytes necessary to represent the tag, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_TAG_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_CHOICE.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_CHOICE.h new file mode 100644 index 000000000..03d606c88 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_CHOICE.h @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_CHOICE_H_ +#define _CONSTR_CHOICE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_CHOICE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_codec_ctx_t member */ + unsigned pres_offset; /* Identifier of the present member */ + unsigned pres_size; /* Size of the identifier (enum) */ + + /* + * Tags to members mapping table. + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* Canonical ordering of CHOICE elements, for PER */ + const unsigned *to_canonical_order; + const unsigned *from_canonical_order; + + /* + * Extensions-related stuff. + */ + signed ext_start; /* First member of extensions, or -1 */ +} asn_CHOICE_specifics_t; + +/* + * A set specialized functions dealing with the CHOICE type. + */ +asn_struct_free_f CHOICE_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f CHOICE_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f CHOICE_compare; + +asn_constr_check_f CHOICE_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f CHOICE_decode_ber; +der_type_encoder_f CHOICE_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f CHOICE_decode_xer; +xer_type_encoder_f CHOICE_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f CHOICE_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f CHOICE_decode_oer; +oer_type_encoder_f CHOICE_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f CHOICE_decode_uper; +per_type_encoder_f CHOICE_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f CHOICE_decode_aper; +per_type_encoder_f CHOICE_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f CHOICE_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +asn_outmost_tag_f CHOICE_outmost_tag; + +extern asn_TYPE_operation_t asn_OP_CHOICE; + +unsigned _fetch_present_idx( + const void *struct_ptr, + unsigned off, + unsigned size); + +void _set_present_idx( + void *sptr, + unsigned offset, + unsigned size, + unsigned present); + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, + const void *structure_ptr); + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, + void *structure_ptr, unsigned present); + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_CHOICE_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SEQUENCE.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SEQUENCE.h new file mode 100644 index 000000000..c494f3524 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SEQUENCE.h @@ -0,0 +1,95 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin "vlm@lionet.info". All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_H_ +#define _CONSTR_SEQUENCE_H_ + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SEQUENCE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* + * Tags to members mapping table (sorted). + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* + * Optional members of the extensions root (roms) or additions (aoms). + * Meaningful for PER. + */ + const int *oms; /* Optional MemberS */ + unsigned roms_count; /* Root optional members count */ + unsigned aoms_count; /* Additions optional members count */ + + /* + * Description of an extensions group. + * Root components are clustered at the beginning of the structure, + * whereas extensions are clustered at the end. -1 means not extensible. + */ + signed first_extension; /* First extension addition */ +} asn_SEQUENCE_specifics_t; + + +/* + * A set specialized functions dealing with the SEQUENCE type. + */ +asn_struct_free_f SEQUENCE_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f SEQUENCE_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f SEQUENCE_compare; + +asn_constr_check_f SEQUENCE_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f SEQUENCE_decode_ber; +der_type_encoder_f SEQUENCE_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f SEQUENCE_decode_xer; +xer_type_encoder_f SEQUENCE_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f SEQUENCE_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f SEQUENCE_decode_oer; +oer_type_encoder_f SEQUENCE_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f SEQUENCE_decode_uper; +per_type_encoder_f SEQUENCE_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f SEQUENCE_decode_aper; +per_type_encoder_f SEQUENCE_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f SEQUENCE_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_SEQUENCE; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SEQUENCE_OF.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SEQUENCE_OF.h new file mode 100644 index 000000000..1768582bf --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SEQUENCE_OF.h @@ -0,0 +1,67 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_OF_H_ +#define _CONSTR_SEQUENCE_OF_H_ + +#include +#include /* Implemented using SET OF */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A set specialized functions dealing with the SEQUENCE OF type. + * Generally implemented using SET OF. + */ +#define SEQUENCE_OF_free SET_OF_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define SEQUENCE_OF_print SET_OF_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f SEQUENCE_OF_compare; + +#define SEQUENCE_OF_constraint SET_OF_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define SEQUENCE_OF_decode_ber SET_OF_decode_ber +der_type_encoder_f SEQUENCE_OF_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define SEQUENCE_OF_decode_xer SET_OF_decode_xer +xer_type_encoder_f SEQUENCE_OF_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f SEQUENCE_OF_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +#define SEQUENCE_OF_decode_oer SET_OF_decode_oer +#define SEQUENCE_OF_encode_oer SET_OF_encode_oer +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define SEQUENCE_OF_decode_uper SET_OF_decode_uper +per_type_encoder_f SEQUENCE_OF_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define SEQUENCE_OF_decode_aper SET_OF_decode_aper +per_type_encoder_f SEQUENCE_OF_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +#define SEQUENCE_OF_random_fill SET_OF_random_fill +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_OF_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SET.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SET.h new file mode 100644 index 000000000..eb61b5a39 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SET.h @@ -0,0 +1,86 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SET_H_ +#define _CONSTR_SET_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef const struct asn_SET_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + unsigned pres_offset; /* Offset of _presence_map member */ + + /* + * Tags to members mapping table (sorted). + * Sometimes suitable for DER encoding (untagged CHOICE is present); + * if so, tag2el_count will be greater than td->elements_count. + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* + * Tags to members mapping table, second edition. + * Suitable for CANONICAL-XER encoding. + */ + const asn_TYPE_tag2member_t *tag2el_cxer; + unsigned tag2el_cxer_count; + + /* + * Extensions-related stuff. + */ + int extensible; /* Whether SET is extensible */ + const unsigned int *_mandatory_elements; /* Bitmask of mandatory ones */ +} asn_SET_specifics_t; + +/* + * A set specialized functions dealing with the SET type. + */ +asn_struct_free_f SET_free; +asn_struct_print_f SET_print; +asn_struct_compare_f SET_compare; +asn_constr_check_f SET_constraint; +ber_type_decoder_f SET_decode_ber; +der_type_encoder_f SET_encode_der; +xer_type_decoder_f SET_decode_xer; +xer_type_encoder_f SET_encode_xer; +per_type_decoder_f SET_decode_uper; +per_type_encoder_f SET_encode_uper; +extern asn_TYPE_operation_t asn_OP_SET; + +/*********************** + * Some handy helpers. * + ***********************/ + +/* + * Figure out whether the SET member indicated by PR_x has already been decoded. + * It is very simple bitfield test, despite its visual complexity. + */ +#define ASN_SET_ISPRESENT(set_ptr, PR_x) \ + ASN_SET_ISPRESENT2(&((set_ptr)->_presence_map), PR_x) +#define ASN_SET_ISPRESENT2(map_ptr, PR_x) \ + (((unsigned int *)(map_ptr)) \ + [(PR_x) / (8 * sizeof(unsigned int))] \ + & (1 << ((8 * sizeof(unsigned int)) - 1 \ + - ((PR_x) % (8 * sizeof(unsigned int)))))) + +#define ASN_SET_MKPRESENT(map_ptr, PR_x) \ + (((unsigned int *)(map_ptr)) \ + [(PR_x) / (8 * sizeof(unsigned int))] \ + |= (1 << ((8 * sizeof(unsigned int)) - 1 \ + - ((PR_x) % (8 * sizeof(unsigned int)))))) + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SET_OF.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SET_OF.h new file mode 100644 index 000000000..0e9dd39a1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_SET_OF.h @@ -0,0 +1,102 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef CONSTR_SET_OF_H +#define CONSTR_SET_OF_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SET_OF_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* XER-specific stuff */ + int as_XMLValueList; /* The member type must be encoded like this */ +} asn_SET_OF_specifics_t; + +/* + * A set specialized functions dealing with the SET OF type. + */ +asn_struct_free_f SET_OF_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f SET_OF_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f SET_OF_compare; + +asn_constr_check_f SET_OF_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f SET_OF_decode_ber; +der_type_encoder_f SET_OF_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f SET_OF_decode_xer; +xer_type_encoder_f SET_OF_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f SET_OF_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f SET_OF_decode_oer; +oer_type_encoder_f SET_OF_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f SET_OF_decode_uper; +per_type_encoder_f SET_OF_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f SET_OF_decode_aper; +per_type_encoder_f SET_OF_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f SET_OF_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_SET_OF; + +/* + * Internally visible buffer holding a single encoded element. + */ +struct _el_buffer { + uint8_t *buf; + size_t length; + size_t allocated_size; + unsigned bits_unused; +}; + +enum SET_OF__encode_method { + SOES_DER, /* Distinguished Encoding Rules */ + SOES_CUPER, /* Canonical Unaligned Packed Encoding Rules */ + SOES_CAPER /* Canonical Aligned Packed Encoding Rules */ +}; + +struct _el_buffer * SET_OF__encode_sorted( + const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method); + +void SET_OF__encode_sorted_free( + struct _el_buffer *el_buf, + size_t count); + +#ifdef __cplusplus +} +#endif + +#endif /* CONSTR_SET_OF_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_TYPE.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_TYPE.h new file mode 100644 index 000000000..55c2574a1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constr_TYPE.h @@ -0,0 +1,295 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This file contains the declaration structure called "ASN.1 Type Definition", + * which holds all information necessary for encoding and decoding routines. + * This structure even contains pointer to these encoding and decoding routines + * for each defined ASN.1 type. + */ +#ifndef _CONSTR_TYPE_H_ +#define _CONSTR_TYPE_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_TYPE_member_s; /* Forward declaration */ + +/* + * This type provides the context information for various ASN.1 routines, + * primarily ones doing decoding. A member _asn_ctx of this type must be + * included into certain target language's structures, such as compound types. + */ +typedef struct asn_struct_ctx_s { + short phase; /* Decoding phase */ + short step; /* Elementary step of a phase */ + int context; /* Other context information */ + void *ptr; /* Decoder-specific stuff (stack elements) */ + ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */ +} asn_struct_ctx_t; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#include /* Basic Encoding Rules decoder */ +#include /* Distinguished Encoding Rules encoder */ +#else +typedef void (ber_type_decoder_f)(void); +typedef void (der_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#include /* Decoder of XER (XML, text) */ +#include /* Encoder into XER (XML, text) */ +#else +typedef void (xer_type_decoder_f)(void); +typedef void (xer_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#include /* Encoder into JER (JSON, text) */ +#else +typedef void (jer_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +#include /* Packet Encoding Rules decoder */ +#include /* Packet Encoding Rules encoder */ +#else +typedef void (per_type_decoder_f)(void); +typedef void (per_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + +#include /* Subtype constraints support */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +#include /* Random structures support */ +#else +typedef void (asn_random_fill_f)(void); +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +#include /* Octet Encoding Rules encoder */ +#include /* Octet Encoding Rules encoder */ +#else +typedef void (oer_type_decoder_f)(void); +typedef void (oer_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +/* + * Free the structure according to its specification. + * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead. + * Do not use directly. + */ +enum asn_struct_free_method { + ASFM_FREE_EVERYTHING, /* free(struct_ptr) and underlying members */ + ASFM_FREE_UNDERLYING, /* free underlying members */ + ASFM_FREE_UNDERLYING_AND_RESET /* FREE_UNDERLYING + memset(0) */ +}; +typedef void (asn_struct_free_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + void *struct_ptr, enum asn_struct_free_method); + +/* + * Free the structure including freeing the memory pointed to by ptr itself. + */ +#define ASN_STRUCT_FREE(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING) + +/* + * Free the memory used by the members of the structure without freeing the + * the structure pointer itself. + * ZERO-OUT the structure to the safe clean state. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + */ +#define ASN_STRUCT_RESET(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET) + +/* + * Free memory used by the members of the structure without freeing + * the structure pointer itself. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + * AVOID using it in the application code; + * Use a safer ASN_STRUCT_RESET() instead. + */ +#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING) + +/* + * Print the structure according to its specification. + */ +typedef int(asn_struct_print_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, + int level, /* Indentation level */ + asn_app_consume_bytes_f *callback, void *app_key); + +/* + * Compare two structs between each other. + * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater", + * and =0 if "equal to", for some type-specific, stable definition of + * "smaller", "greater" and "equal to". + */ +typedef int (asn_struct_compare_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_A, + const void *struct_B); + +/* + * Return the outmost tag of the type. + * If the type is untagged CHOICE, the dynamic operation is performed. + * NOTE: This function pointer type is only useful internally. + * Do not use it in your application. + */ +typedef ber_tlv_tag_t (asn_outmost_tag_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag); +/* The instance of the above function type; used internally. */ +asn_outmost_tag_f asn_TYPE_outmost_tag; + +/* + * Fetch the desired type of the Open Type based on the + * Information Object Set driven constraints. + */ +typedef struct asn_type_selector_result_s { + const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */ + unsigned presence_index; /* Associated choice variant. */ +} asn_type_selector_result_t; +typedef asn_type_selector_result_t(asn_type_selector_f)( + const struct asn_TYPE_descriptor_s *parent_type_descriptor, + const void *parent_structure_ptr); + +/* + * Generalized functions for dealing with the speciic type. + * May be directly invoked by applications. + */ +typedef struct asn_TYPE_operation_s { + asn_struct_free_f *free_struct; /* Free the structure */ + asn_struct_print_f *print_struct; /* Human readable output */ + asn_struct_compare_f *compare_struct; /* Compare two structures */ + ber_type_decoder_f *ber_decoder; /* Generic BER decoder */ + der_type_encoder_f *der_encoder; /* Canonical DER encoder */ + xer_type_decoder_f *xer_decoder; /* Generic XER decoder */ + xer_type_encoder_f *xer_encoder; /* [Canonical] XER encoder */ + jer_type_encoder_f *jer_encoder; /* Generic JER encoder */ + oer_type_decoder_f *oer_decoder; /* Generic OER decoder */ + oer_type_encoder_f *oer_encoder; /* Canonical OER encoder */ + per_type_decoder_f *uper_decoder; /* Unaligned PER decoder */ + per_type_encoder_f *uper_encoder; /* Unaligned PER encoder */ + per_type_decoder_f *aper_decoder; /* Aligned PER decoder */ + per_type_encoder_f *aper_encoder; /* Aligned PER encoder */ + asn_random_fill_f *random_fill; /* Initialize with a random value */ + asn_outmost_tag_f *outmost_tag; /* */ +} asn_TYPE_operation_t; + +/* + * A constraints tuple specifying both the OER and PER constraints. + */ +typedef struct asn_encoding_constraints_s { +#if !defined(ASN_DISABLE_OER_SUPPORT) + const struct asn_oer_constraints_s *oer_constraints; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + const struct asn_per_constraints_s *per_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_constr_check_f *general_constraints; +} asn_encoding_constraints_t; + +/* + * The definitive description of the destination language's structure. + */ +typedef struct asn_TYPE_descriptor_s { + const char *name; /* A name of the ASN.1 type. "" in some cases. */ + const char *xml_tag; /* Name used in XML tag */ + + /* + * Generalized functions for dealing with the specific type. + * May be directly invoked by applications. + */ + asn_TYPE_operation_t *op; + + /*********************************************************************** + * Internally useful members. Not to be used by applications directly. * + **********************************************************************/ + + /* + * Tags that are expected to occur. + */ + const ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ + unsigned tags_count; /* Number of tags which are expected */ + const ber_tlv_tag_t *all_tags; /* Every tag for BER/containment */ + unsigned all_tags_count; /* Number of tags */ + + /* OER, PER, and general constraints */ + asn_encoding_constraints_t encoding_constraints; + + /* + * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). + */ + struct asn_TYPE_member_s *elements; + unsigned elements_count; + + /* + * Additional information describing the type, used by appropriate + * functions above. + */ + const void *specifics; +} asn_TYPE_descriptor_t; + +/* + * This type describes an element of the constructed type, + * i.e. SEQUENCE, SET, CHOICE, etc. + */ + enum asn_TYPE_flags_e { + ATF_NOFLAGS, + ATF_POINTER = 0x01, /* Represented by the pointer */ + ATF_OPEN_TYPE = 0x02, /* Open Type */ + ATF_ANY_TYPE = 0x04 /* ANY type (deprecated!) */ + }; +typedef struct asn_TYPE_member_s { + enum asn_TYPE_flags_e flags; /* Element's presentation flags */ + unsigned optional; /* Following optional members, including current */ + unsigned memb_offset; /* Offset of the element */ + ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ + int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ + asn_TYPE_descriptor_t *type; /* Member type descriptor */ + asn_type_selector_f *type_selector; /* IoS runtime type selector */ + asn_encoding_constraints_t encoding_constraints; + int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT */ + int (*default_value_set)(void **sptr); /* Set DEFAULT */ + const char *name; /* ASN.1 identifier of the element */ +} asn_TYPE_member_t; + +/* + * BER tag to element number mapping. + */ +typedef struct asn_TYPE_tag2member_s { + ber_tlv_tag_t el_tag; /* Outmost tag of the member */ + unsigned el_no; /* Index of the associated member, base 0 */ + int toff_first; /* First occurrence of the el_tag, relative */ + int toff_last; /* Last occurrence of the el_tag, relative */ +} asn_TYPE_tag2member_t; + +/* + * This function prints out the contents of the target language's structure + * (struct_ptr) into the file pointer (stream) in human readable form. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem dumping the structure. + * (See also xer_fprint() in xer_encoder.h) + */ +int asn_fprint(FILE *stream, /* Destination stream descriptor */ + const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */ + const void *struct_ptr); /* Structure to be printed */ + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_TYPE_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/constraints.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constraints.h new file mode 100644 index 000000000..0c093fa82 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/constraints.h @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN1_CONSTRAINTS_VALIDATOR_H +#define ASN1_CONSTRAINTS_VALIDATOR_H + +#include /* Platform-dependent types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Validate the structure according to the ASN.1 constraints. + * If errbuf and errlen are given, they shall be pointing to the appropriate + * buffer space and its length before calling this function. Alternatively, + * they could be passed as NULL's. If constraints validation fails, + * errlen will contain the actual number of bytes taken from the errbuf + * to encode an error message (properly 0-terminated). + * + * RETURN VALUES: + * This function returns 0 in case all ASN.1 constraints are met + * and -1 if one or more constraints were failed. + */ +int asn_check_constraints( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Target language's structure */ + char *errbuf, /* Returned error description */ + size_t *errlen /* Length of the error description */ +); + + +/* + * Generic type for constraint checking callback, + * associated with every type descriptor. + */ +typedef int(asn_constr_check_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, + asn_app_constraint_failed_f *optional_callback, /* Log the error */ + void *optional_app_key /* Opaque key passed to a callback */ +); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ +asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ + +/* + * Invoke the callback with a complete error message. + */ +#define ASN__CTFAIL if(ctfailcb) ctfailcb + +#ifdef __cplusplus +} +#endif + +#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/der_encoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/der_encoder.h new file mode 100644 index 000000000..e93944edc --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/der_encoder.h @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _DER_ENCODER_H_ +#define _DER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The DER encoder of any type. May be invoked by the application. + * Produces DER- and BER-compliant encoding. (DER is a subset of BER). + * + * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data + * produced by der_encode(). + */ +asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* A variant of der_encode() which encodes data into the pre-allocated buffer */ +asn_enc_rval_t der_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +); + +/* + * Type of the generic DER encoder. + */ +typedef asn_enc_rval_t(der_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, + size_t struct_length, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {0,!0}: prim, constructed */ + ber_tlv_tag_t tag, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _DER_ENCODER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/oer_decoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/oer_decoder.h new file mode 100644 index 000000000..2d5c648a7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/oer_decoder.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2023 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef OER_DECODER_H +#define OER_DECODER_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_codec_ctx_s; /* Forward declaration */ + +/* + * The Octet Encoding Rules (OER, X.696 08/2015) decoder for any given type. + * This function may be invoked directly by the application. + * Parses CANONICAL-OER and BASIC-OER. + */ +asn_dec_rval_t oer_decode(const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ + ); + +/* + * Type of generic function which decodes the byte stream into the structure. + */ +typedef asn_dec_rval_t(oer_type_decoder_f)( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_oer_constraints_t *constraints, + void **struct_ptr, + const void *buf_ptr, + size_t size); + +/* + * Swallow the Open Type (X.696 (08/2015), #30) into /dev/null. + * RETURN VALUES: + * -1: Fatal error deciphering length. + * 0: More data expected than bufptr contains. + * >0: Number of bytes used from bufptr. + */ +ssize_t oer_open_type_skip(const void *bufptr, size_t size); + +/* + * Read the Open Type (X.696 (08/2015), #30). + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *td, + const asn_oer_constraints_t *constraints, + void **struct_ptr, const void *bufptr, size_t size); + +/* + * Length-prefixed buffer decoding for primitive types. + */ +oer_type_decoder_f oer_decode_primitive; + + +#ifdef __cplusplus +} +#endif + +#endif /* OER_DECODER_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/oer_encoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/oer_encoder.h new file mode 100644 index 000000000..bcea3d68b --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/oer_encoder.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2023 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef OER_ENCODER_H +#define OER_ENCODER_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The Octet Encoding Rules (OER, X.696 08/2015) encoder for any type. + * This function may be invoked directly by the application. + * Produces CANONICAL-OER output compatible with CANONICAL-OER + * and BASIC-OER decoders. + */ +asn_enc_rval_t oer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* A variant of oer_encode() which encodes data into the pre-allocated buffer */ +asn_enc_rval_t oer_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +); + +/* + * Type of the generic OER encoder. + */ +typedef asn_enc_rval_t(oer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * Write out the Open Type (X.696 (08/2015), #30). + * RETURN VALUES: + * -1: Fatal error encoding the type. + * >0: Number of bytes serialized. + */ +ssize_t oer_open_type_put(const struct asn_TYPE_descriptor_s *td, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key); + + +/* + * Length-prefixed buffer encoding for primitive types. + */ +oer_type_encoder_f oer_encode_primitive; + +#ifdef __cplusplus +} +#endif + +#endif /* OER_ENCODER_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/oer_support.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/oer_support.h new file mode 100644 index 000000000..6fd47a081 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/oer_support.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2023 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef OER_SUPPORT_H +#define OER_SUPPORT_H + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed OER constraints. + */ +typedef struct asn_oer_constraint_number_s { + unsigned width; /* ±8,4,2,1 fixed bytes */ + unsigned positive; /* 1 for unsigned number, 0 for signed */ +} asn_oer_constraint_number_t; +typedef struct asn_oer_constraints_s { + asn_oer_constraint_number_t value; + ssize_t size; /* -1 (no constraint) or >= 0 */ +} asn_oer_constraints_t; + + +/* + * Fetch the length determinant (X.696 (08/2015), #8.6) into *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t oer_fetch_length(const void *bufptr, size_t size, size_t *len_r); + +/* + * Serialize OER length. Returns the number of bytes serialized + * or -1 if a given callback returned with negative result. + */ +ssize_t oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, void *app_key); + + +#ifdef __cplusplus +} +#endif + +#endif /* OER_SUPPORT_H */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_decoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_decoder.h new file mode 100644 index 000000000..3cc0c6bf7 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_decoder.h @@ -0,0 +1,30 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_DECODER_H_ +#define _PER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Type of the type-specific PER decoder function. + */ +typedef asn_dec_rval_t(per_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, void **struct_ptr, + asn_per_data_t *per_data); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_DECODER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_encoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_encoder.h new file mode 100644 index 000000000..8bb077170 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_encoder.h @@ -0,0 +1,38 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_ENCODER_H_ +#define _PER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Type of the generic PER encoder function. + */ +typedef asn_enc_rval_t(per_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +int ignore_output(const void *data, size_t size, void *app_key); + +typedef struct enc_dyn_arg { + void *buffer; + size_t length; + size_t allocated; +} enc_dyn_arg; +int encode_dyn_cb(const void *buffer, size_t size, void *key); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_ENCODER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_opentype.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_opentype.h new file mode 100644 index 000000000..fc3785566 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_opentype.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_OPENTYPE_H_ +#define _PER_OPENTYPE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_sot_suck( + const asn_codec_ctx_t *, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_OPENTYPE_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_support.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_support.h new file mode 100644 index 000000000..b3056a21a --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/per_support.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_SUPPORT_H_ +#define _PER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed PER constraints. + */ +typedef struct asn_per_constraint_s { + enum asn_per_constraint_flags { + APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ + APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ + APC_CONSTRAINED = 0x2, /* Fully constrained */ + APC_EXTENSIBLE = 0x4 /* May have extension */ + } flags; + int range_bits; /* Full number of bits in the range */ + int effective_bits; /* Effective bits */ + intmax_t lower_bound; /* "lb" value */ + intmax_t upper_bound; /* "ub" value */ +} asn_per_constraint_t; +typedef struct asn_per_constraints_s { + asn_per_constraint_t value; + asn_per_constraint_t size; + int (*value2code)(unsigned int value); + int (*code2value)(unsigned int code); +} asn_per_constraints_t; + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_data_s asn_per_data_t; +#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) +#define per_get_undo(data, bits) asn_get_undo(data, bits) +#define per_get_many_bits(data, dst, align, bits) \ + asn_get_many_bits(data, dst, align, bits) + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_outp_s asn_per_outp_t; +#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) +#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) +#define per_put_aligned_flush(out) asn_put_aligned_flush(out) + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_SUPPORT_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_decoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_decoder.h new file mode 100644 index 000000000..ded851565 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_decoder.h @@ -0,0 +1,47 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_DECODER_H_ +#define _UPER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. + * On success, this call always returns (.consumed >= 1), as per #11.1.3. + */ +asn_dec_rval_t uper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t uper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of the input data buffer, in bytes */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_DECODER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_encoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_encoder.h new file mode 100644 index 000000000..8f73980c3 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_encoder.h @@ -0,0 +1,62 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_ENCODER_H_ +#define _UPER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t uper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of uper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t uper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +/* + * A variant of uper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of uper_encode() and uper_encode_to_buffer(). + */ +ssize_t uper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void **buffer_r /* Buffer allocated and returned */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_ENCODER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_opentype.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_opentype.h new file mode 100644 index 000000000..3a248225f --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_opentype.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_OPENTYPE_H_ +#define _UPER_OPENTYPE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, + asn_per_data_t *pd); + +/* + * X.691 (2015/08), #11.2 + * Returns -1 if error is encountered. 0 if all OK. + */ +int uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_OPENTYPE_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_support.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_support.h new file mode 100644 index 000000000..6c9d4ea74 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/uper_support.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_SUPPORT_H_ +#define _UPER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Unaligned PER stream. + */ +ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, + size_t lower_bound, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t uper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t uper_get_nsnnwn(asn_per_data_t *pd); + +/* X.691-2008/11, #11.5.6 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, uintmax_t *v, int nbits); + +/* + * Rebase the given value as an offset into the range specified by the + * lower bound (lb) and upper bound (ub). + * RETURN VALUES: + * -1: Conversion failed due to range problems. + * 0: Conversion was successful. + */ +int per_long_range_rebase(long, intmax_t lb, intmax_t ub, unsigned long *output); +int per_imax_range_rebase(intmax_t v, intmax_t lb, intmax_t ub, uintmax_t *output); +/* The inverse operation: restores the value by the offset and its bounds. */ +int per_long_range_unrebase(unsigned long inp, intmax_t lb, intmax_t ub, long *outp); +int per_imax_range_unrebase(uintmax_t inp, intmax_t lb, intmax_t ub, intmax_t *outp); + +/* X.691-2008/11, #11.5 */ +int uper_put_constrained_whole_number_u(asn_per_outp_t *po, uintmax_t v, int nbits); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "whole_length" to the Unaligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. + * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, + int *opt_need_eom); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int uper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int uper_put_nsnnwn(asn_per_outp_t *po, int n); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_SUPPORT_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/version.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/version.h new file mode 100644 index 000000000..b0c133f0e --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/version.h @@ -0,0 +1,14 @@ +/* + * version.h + * + * Created on: Aug 29, 2014 + * Author: ivp + */ + +#ifndef VERSION_H_ +#define VERSION_H_ + +#define TMXASN_VERSION "3.1.0" +#define TMXASN_SPEC "2020" + +#endif /* VERSION_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/xer_decoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/xer_decoder.h new file mode 100644 index 000000000..b951c41d1 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/xer_decoder.h @@ -0,0 +1,106 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_DECODER_H_ +#define _XER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The XER decoder of any ASN.1 type. May be invoked by the application. + * Decodes CANONICAL-XER and BASIC-XER. + */ +asn_dec_rval_t xer_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Type of the type-specific XER decoder function. + */ +typedef asn_dec_rval_t(xer_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const char *opt_mname, /* Member name */ + const void *buf_ptr, size_t size); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Generalized function for decoding the primitive values. + * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 + * and others. This function should not be used by applications, as its API + * is subject to changes. + */ +asn_dec_rval_t xer_decode_general( + const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, /* Treated as opaque pointer */ + const char *xml_tag, /* Expected XML tag name */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, + size_t chunk_size, int have_more)); + + +/* + * Fetch the next XER (XML) token from the stream. + * The function returns the number of bytes occupied by the chunk type, + * returned in the _ch_type. The _ch_type is only set (and valid) when + * the return value is >= 0. + */ + typedef enum pxer_chunk_type { + PXER_WMORE, /* Chunk type is not clear, more data expected. */ + PXER_TAG, /* Complete XER tag */ + PXER_TEXT, /* Plain text between XER tags */ + PXER_COMMENT /* A comment, may be part of */ + } pxer_chunk_type_e; +ssize_t xer_next_token(int *stateContext, + const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); + +/* + * This function checks the buffer against the tag name is expected to occur. + */ + typedef enum xer_check_tag { + XCT_BROKEN = 0, /* The tag is broken */ + XCT_OPENING = 1, /* This is the tag */ + XCT_CLOSING = 2, /* This is the tag */ + XCT_BOTH = 3, /* This is the tag */ + XCT__UNK__MASK = 4, /* Mask of everything unexpected */ + XCT_UNKNOWN_OP = 5, /* Unexpected tag */ + XCT_UNKNOWN_CL = 6, /* Unexpected tag */ + XCT_UNKNOWN_BO = 7 /* Unexpected tag */ + } xer_check_tag_e; +xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, + const char *need_tag); + +/* + * Get the number of bytes consisting entirely of XER whitespace characters. + * RETURN VALUES: + * >=0: Number of whitespace characters in the string. + */ +size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); + +/* + * Skip the series of anticipated extensions. + */ +int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_DECODER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/xer_encoder.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/xer_encoder.h new file mode 100644 index 000000000..6cfc505fa --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/xer_encoder.h @@ -0,0 +1,83 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_ENCODER_H_ +#define _XER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ +enum xer_encoder_flags_e { + /* Mode of encoding */ + XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ + XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ +}; + +/* + * The XER encoder of any type. May be invoked by the application. + * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). + */ +asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* + * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) + * output into the chosen file pointer. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem printing the structure. + * WARNING: No sensible errno value is returned. + */ +int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, + const void *struct_ptr); + +/* + * A helper function that uses XER encoding/decoding to verify that: + * - Both structures encode into the same BASIC XER. + * - Both resulting XER byte streams can be decoded back. + * - Both decoded structures encode into the same BASIC XER (round-trip). + * All of this verifies equivalence between structures and a round-trip. + * ARGUMENTS: + * (opt_debug_stream) - If specified, prints ongoing details. + */ +enum xer_equivalence_e { + XEQ_SUCCESS, /* The only completely positive return value */ + XEQ_FAILURE, /* General failure */ + XEQ_ENCODE1_FAILED, /* First structure XER encoding failed */ + XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ + XEQ_DIFFERENT, /* Structures encoded into different XER */ + XEQ_DECODE_FAILED, /* Decode of the XER data failed */ + XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ +}; +enum xer_equivalence_e xer_equivalent( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, + const void *struct2, FILE *opt_debug_stream); + +/* + * Type of the generic XER encoder. + */ +typedef asn_enc_rval_t(xer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int ilevel, /* Level of indentation */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_ENCODER_H_ */ diff --git a/src/tmx/Asn_J2735/include/asn_j2735_r2020/xer_support.h b/src/tmx/Asn_J2735/include/asn_j2735_r2020/xer_support.h new file mode 100644 index 000000000..2c3f369b8 --- /dev/null +++ b/src/tmx/Asn_J2735/include/asn_j2735_r2020/xer_support.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_SUPPORT_H_ +#define _XER_SUPPORT_H_ + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Types of data transferred to the application. + */ +typedef enum { + PXML_TEXT, /* Plain text between XML tags. */ + PXML_TAG, /* A tag, starting with '<'. */ + PXML_COMMENT, /* An XML comment, including "". */ + /* + * The following chunk types are reported if the chunk + * terminates the specified XML element. + */ + PXML_TAG_END, /* Tag ended */ + PXML_COMMENT_END /* Comment ended */ +} pxml_chunk_type_e; + +/* + * Callback function that is called by the parser when parsed data is + * available. The _opaque is the pointer to a field containing opaque user + * data specified in pxml_create() call. The chunk type is _type and the text + * data is the piece of buffer identified by _bufid (as supplied to + * pxml_feed() call) starting at offset _offset and of _size bytes size. + * The chunk is NOT '\0'-terminated. + */ +typedef int (pxml_callback_f)(pxml_chunk_type_e _type, + const void *_chunk_data, size_t _chunk_size, void *_key); + +/* + * Parse the given buffer as it were a chunk of XML data. + * Invoke the specified callback each time the meaningful data is found. + * This function returns number of bytes consumed from the buffer. + * It will always be lesser than or equal to the specified _size. + * The next invocation of this function must account the difference. + */ +ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, + pxml_callback_f *cb, void *_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_SUPPORT_H_ */ diff --git a/src/tmx/Asn_J2735/src/r2020/ANY.c b/src/tmx/Asn_J2735/src/r2020/ANY.c new file mode 100644 index 000000000..bf988dbda --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ANY.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = { + sizeof(ANY_t), + offsetof(ANY_t, _asn_ctx), + ASN_OSUBV_ANY +}; +asn_TYPE_operation_t asn_OP_ANY = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_hex, + ANY_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + ANY_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, + 0, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + ANY_decode_uper, + ANY_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + ANY_decode_aper, + ANY_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + 0, /* Random fill is not defined for ANY type */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_ANY = { + "ANY", + "ANY", + &asn_OP_ANY, + 0, 0, 0, 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, /* No constraints */ + 0, 0, /* No members */ + &asn_SPC_ANY_specs, +}; diff --git a/src/tmx/Asn_J2735/src/r2020/ANY_aper.c b/src/tmx/Asn_J2735/src/r2020/ANY_aper.c new file mode 100644 index 000000000..0660b09cb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ANY_aper.c @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +int +ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + uint8_t *buffer = NULL; + ssize_t erval; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + erval = aper_encode_to_new_buffer(td, td->encoding_constraints.per_constraints, sptr, (void**)&buffer); + + if(erval == -1) { + if(buffer) FREEMEM(buffer); + return -1; + } + assert((size_t)erval > 0); + + if(st->buf) FREEMEM(st->buf); + st->buf = buffer; + st->size = erval; + + return 0; +} + +ANY_t * +ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType_aper(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +int +ANY_to_type_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = aper_decode(0, td, (void **)&newst, st->buf, st->size, 0, 0); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +asn_dec_rval_t +ANY_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("APER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = aper_get_length(pd, -1, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = aper_put_length(po, -1, -1, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && aper_put_length(po, -1, -1, 0, NULL)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/ANY_ber.c b/src/tmx/Asn_J2735/src/r2020/ANY_ber.c new file mode 100644 index 000000000..2bbacaae2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ANY_ber.c @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +struct _callback_arg { + uint8_t *buffer; + size_t offset; + size_t size; +}; + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key) { + struct _callback_arg *arg = (struct _callback_arg *)key; + + if((arg->offset + size) >= arg->size) { + size_t nsize = (arg->size ? arg->size << 2 : 16) + size; + void *p = REALLOC(arg->buffer, nsize); + if(!p) return -1; + arg->buffer = (uint8_t *)p; + arg->size = nsize; + } + + memcpy(arg->buffer + arg->offset, buffer, size); + arg->offset += size; + assert(arg->offset < arg->size); + + return 0; +} + +int +ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + struct _callback_arg arg; + asn_enc_rval_t erval = {0,0,0}; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + arg.offset = arg.size = 0; + arg.buffer = 0; + + erval = der_encode(td, sptr, ANY__consume_bytes, &arg); + if(erval.encoded == -1) { + if(arg.buffer) FREEMEM(arg.buffer); + return -1; + } + assert((size_t)erval.encoded == arg.offset); + + if(st->buf) FREEMEM(st->buf); + st->buf = arg.buffer; + st->size = arg.offset; + + return 0; +} + +ANY_t * +ANY_new_fromType(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +int +ANY_to_type(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = ber_decode(0, td, (void **)&newst, st->buf, st->size); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/ANY_uper.c b/src/tmx/Asn_J2735/src/r2020/ANY_uper.c new file mode 100644 index 000000000..fd5c179d2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ANY_uper.c @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +asn_dec_rval_t +ANY_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("UPER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/ANY_xer.c b/src/tmx/Asn_J2735/src/r2020/ANY_xer.c new file mode 100644 index 000000000..78f5212f0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ANY_xer.c @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +ANY_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + if(flags & XER_F_CANONICAL) { + /* + * Canonical XER-encoding of ANY type is not supported. + */ + ASN__ENCODE_FAILED; + } + + /* Dump as binary */ + return OCTET_STRING_encode_xer(td, sptr, ilevel, flags, cb, app_key); +} diff --git a/src/tmx/Asn_J2735/src/r2020/AccelSteerYawRateConfidence.c b/src/tmx/Asn_J2735/src/r2020/AccelSteerYawRateConfidence.c new file mode 100644 index 000000000..e5238e05b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AccelSteerYawRateConfidence.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AccelSteerYawRateConfidence.h" + +asn_TYPE_member_t asn_MBR_AccelSteerYawRateConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AccelSteerYawRateConfidence, yawRate), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_YawRateConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yawRate" + }, + { ATF_NOFLAGS, 0, offsetof(struct AccelSteerYawRateConfidence, acceleration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "acceleration" + }, + { ATF_NOFLAGS, 0, offsetof(struct AccelSteerYawRateConfidence, steeringWheelAngle), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SteeringWheelAngleConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "steeringWheelAngle" + }, +}; +static const ber_tlv_tag_t asn_DEF_AccelSteerYawRateConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AccelSteerYawRateConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* yawRate */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* acceleration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* steeringWheelAngle */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AccelSteerYawRateConfidence_specs_1 = { + sizeof(struct AccelSteerYawRateConfidence), + offsetof(struct AccelSteerYawRateConfidence, _asn_ctx), + asn_MAP_AccelSteerYawRateConfidence_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AccelSteerYawRateConfidence = { + "AccelSteerYawRateConfidence", + "AccelSteerYawRateConfidence", + &asn_OP_SEQUENCE, + asn_DEF_AccelSteerYawRateConfidence_tags_1, + sizeof(asn_DEF_AccelSteerYawRateConfidence_tags_1) + /sizeof(asn_DEF_AccelSteerYawRateConfidence_tags_1[0]), /* 1 */ + asn_DEF_AccelSteerYawRateConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelSteerYawRateConfidence_tags_1) + /sizeof(asn_DEF_AccelSteerYawRateConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_AccelSteerYawRateConfidence_1, + 3, /* Elements count */ + &asn_SPC_AccelSteerYawRateConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Acceleration.c b/src/tmx/Asn_J2735/src/r2020/Acceleration.c new file mode 100644 index 000000000..2e44a0d84 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Acceleration.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Acceleration.h" + +int +Acceleration_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -2000L && value <= 2001L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Acceleration_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-2000..2001) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Acceleration_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, -2000, 2001 } /* (-2000..2001) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Acceleration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Acceleration = { + "Acceleration", + "Acceleration", + &asn_OP_NativeInteger, + asn_DEF_Acceleration_tags_1, + sizeof(asn_DEF_Acceleration_tags_1) + /sizeof(asn_DEF_Acceleration_tags_1[0]), /* 1 */ + asn_DEF_Acceleration_tags_1, /* Same as above */ + sizeof(asn_DEF_Acceleration_tags_1) + /sizeof(asn_DEF_Acceleration_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Acceleration_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Acceleration_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Acceleration_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AccelerationConfidence.c b/src/tmx/Asn_J2735/src/r2020/AccelerationConfidence.c new file mode 100644 index 000000000..53d77775f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AccelerationConfidence.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AccelerationConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AccelerationConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AccelerationConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AccelerationConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 11, "accl-100-00" }, + { 2, 11, "accl-010-00" }, + { 3, 11, "accl-005-00" }, + { 4, 11, "accl-001-00" }, + { 5, 11, "accl-000-10" }, + { 6, 11, "accl-000-05" }, + { 7, 11, "accl-000-01" } +}; +static const unsigned int asn_MAP_AccelerationConfidence_enum2value_1[] = { + 7, /* accl-000-01(7) */ + 6, /* accl-000-05(6) */ + 5, /* accl-000-10(5) */ + 4, /* accl-001-00(4) */ + 3, /* accl-005-00(3) */ + 2, /* accl-010-00(2) */ + 1, /* accl-100-00(1) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_AccelerationConfidence_specs_1 = { + asn_MAP_AccelerationConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AccelerationConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AccelerationConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationConfidence = { + "AccelerationConfidence", + "AccelerationConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_AccelerationConfidence_tags_1, + sizeof(asn_DEF_AccelerationConfidence_tags_1) + /sizeof(asn_DEF_AccelerationConfidence_tags_1[0]), /* 1 */ + asn_DEF_AccelerationConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationConfidence_tags_1) + /sizeof(asn_DEF_AccelerationConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AccelerationConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AccelerationConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AccelerationConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AccelerationSet4Way.c b/src/tmx/Asn_J2735/src/r2020/AccelerationSet4Way.c new file mode 100644 index 000000000..64f2c42fe --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AccelerationSet4Way.c @@ -0,0 +1,120 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AccelerationSet4Way.h" + +asn_TYPE_member_t asn_MBR_AccelerationSet4Way_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AccelerationSet4Way, Long), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Acceleration, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "long" + }, + { ATF_NOFLAGS, 0, offsetof(struct AccelerationSet4Way, lat), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Acceleration, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, + { ATF_NOFLAGS, 0, offsetof(struct AccelerationSet4Way, vert), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VerticalAcceleration, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vert" + }, + { ATF_NOFLAGS, 0, offsetof(struct AccelerationSet4Way, yaw), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_YawRate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yaw" + }, +}; +static const ber_tlv_tag_t asn_DEF_AccelerationSet4Way_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AccelerationSet4Way_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* long */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lat */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* vert */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* yaw */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AccelerationSet4Way_specs_1 = { + sizeof(struct AccelerationSet4Way), + offsetof(struct AccelerationSet4Way, _asn_ctx), + asn_MAP_AccelerationSet4Way_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationSet4Way = { + "AccelerationSet4Way", + "AccelerationSet4Way", + &asn_OP_SEQUENCE, + asn_DEF_AccelerationSet4Way_tags_1, + sizeof(asn_DEF_AccelerationSet4Way_tags_1) + /sizeof(asn_DEF_AccelerationSet4Way_tags_1[0]), /* 1 */ + asn_DEF_AccelerationSet4Way_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationSet4Way_tags_1) + /sizeof(asn_DEF_AccelerationSet4Way_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_AccelerationSet4Way_1, + 4, /* Elements count */ + &asn_SPC_AccelerationSet4Way_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AddGrpB_Angle.c b/src/tmx/Asn_J2735/src/r2020/AddGrpB_Angle.c new file mode 100644 index 000000000..f4c63efa6 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AddGrpB_Angle.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "AddGrpB_Angle.h" + +int +AddGrpB_Angle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 239)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_AddGrpB_Angle_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..239) */, + -1}; +static asn_per_constraints_t asn_PER_type_AddGrpB_Angle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 239 } /* (0..239) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_AddGrpB_Angle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AddGrpB_Angle = { + "Angle", + "Angle", + &asn_OP_NativeInteger, + asn_DEF_AddGrpB_Angle_tags_1, + sizeof(asn_DEF_AddGrpB_Angle_tags_1) + /sizeof(asn_DEF_AddGrpB_Angle_tags_1[0]), /* 1 */ + asn_DEF_AddGrpB_Angle_tags_1, /* Same as above */ + sizeof(asn_DEF_AddGrpB_Angle_tags_1) + /sizeof(asn_DEF_AddGrpB_Angle_tags_1[0]), /* 1 */ + { &asn_OER_type_AddGrpB_Angle_constr_1, &asn_PER_type_AddGrpB_Angle_constr_1, AddGrpB_Angle_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AddGrpB_DayOfWeek.c b/src/tmx/Asn_J2735/src/r2020/AddGrpB_DayOfWeek.c new file mode 100644 index 000000000..a441d8fd9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AddGrpB_DayOfWeek.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "AddGrpB_DayOfWeek.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_AddGrpB_DayOfWeek_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_AddGrpB_DayOfWeek_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_AddGrpB_DayOfWeek_value2enum_1[] = { + { 0, 7, "unknown" }, + { 1, 6, "monday" }, + { 2, 7, "tuesday" }, + { 3, 9, "wednesday" }, + { 4, 8, "thursday" }, + { 5, 6, "friday" }, + { 6, 8, "saturday" }, + { 7, 6, "sunday" } +}; +static const unsigned int asn_MAP_AddGrpB_DayOfWeek_enum2value_1[] = { + 5, /* friday(5) */ + 1, /* monday(1) */ + 6, /* saturday(6) */ + 7, /* sunday(7) */ + 4, /* thursday(4) */ + 2, /* tuesday(2) */ + 0, /* unknown(0) */ + 3 /* wednesday(3) */ +}; +const asn_INTEGER_specifics_t asn_SPC_AddGrpB_DayOfWeek_specs_1 = { + asn_MAP_AddGrpB_DayOfWeek_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AddGrpB_DayOfWeek_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AddGrpB_DayOfWeek_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AddGrpB_DayOfWeek = { + "DayOfWeek", + "DayOfWeek", + &asn_OP_NativeEnumerated, + asn_DEF_AddGrpB_DayOfWeek_tags_1, + sizeof(asn_DEF_AddGrpB_DayOfWeek_tags_1) + /sizeof(asn_DEF_AddGrpB_DayOfWeek_tags_1[0]), /* 1 */ + asn_DEF_AddGrpB_DayOfWeek_tags_1, /* Same as above */ + sizeof(asn_DEF_AddGrpB_DayOfWeek_tags_1) + /sizeof(asn_DEF_AddGrpB_DayOfWeek_tags_1[0]), /* 1 */ + { &asn_OER_type_AddGrpB_DayOfWeek_constr_1, &asn_PER_type_AddGrpB_DayOfWeek_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AddGrpB_DayOfWeek_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AddGrpB_Elevation.c b/src/tmx/Asn_J2735/src/r2020/AddGrpB_Elevation.c new file mode 100644 index 000000000..aad6c0a6b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AddGrpB_Elevation.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "AddGrpB_Elevation.h" + +int +AddGrpB_Elevation_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32768 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_AddGrpB_Elevation_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-32768..32767) */, + -1}; +asn_per_constraints_t asn_PER_type_AddGrpB_Elevation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32768, 32767 } /* (-32768..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_AddGrpB_Elevation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AddGrpB_Elevation = { + "Elevation", + "Elevation", + &asn_OP_NativeInteger, + asn_DEF_AddGrpB_Elevation_tags_1, + sizeof(asn_DEF_AddGrpB_Elevation_tags_1) + /sizeof(asn_DEF_AddGrpB_Elevation_tags_1[0]), /* 1 */ + asn_DEF_AddGrpB_Elevation_tags_1, /* Same as above */ + sizeof(asn_DEF_AddGrpB_Elevation_tags_1) + /sizeof(asn_DEF_AddGrpB_Elevation_tags_1[0]), /* 1 */ + { &asn_OER_type_AddGrpB_Elevation_constr_1, &asn_PER_type_AddGrpB_Elevation_constr_1, AddGrpB_Elevation_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AddGrpB_MsgCount.c b/src/tmx/Asn_J2735/src/r2020/AddGrpB_MsgCount.c new file mode 100644 index 000000000..0c4d81493 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AddGrpB_MsgCount.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "AddGrpB_MsgCount.h" + +int +AddGrpB_MsgCount_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_AddGrpB_MsgCount_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +static asn_per_constraints_t asn_PER_type_AddGrpB_MsgCount_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_AddGrpB_MsgCount_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AddGrpB_MsgCount = { + "MsgCount", + "MsgCount", + &asn_OP_NativeInteger, + asn_DEF_AddGrpB_MsgCount_tags_1, + sizeof(asn_DEF_AddGrpB_MsgCount_tags_1) + /sizeof(asn_DEF_AddGrpB_MsgCount_tags_1[0]), /* 1 */ + asn_DEF_AddGrpB_MsgCount_tags_1, /* Same as above */ + sizeof(asn_DEF_AddGrpB_MsgCount_tags_1) + /sizeof(asn_DEF_AddGrpB_MsgCount_tags_1[0]), /* 1 */ + { &asn_OER_type_AddGrpB_MsgCount_constr_1, &asn_PER_type_AddGrpB_MsgCount_constr_1, AddGrpB_MsgCount_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AddGrpB_TimeMark.c b/src/tmx/Asn_J2735/src/r2020/AddGrpB_TimeMark.c new file mode 100644 index 000000000..1e42c3ca6 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AddGrpB_TimeMark.c @@ -0,0 +1,140 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "AddGrpB_TimeMark.h" + +static asn_TYPE_member_t asn_MBR_AddGrpB_TimeMark_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AddGrpB_TimeMark, year), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Year, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "year" + }, + { ATF_NOFLAGS, 0, offsetof(struct AddGrpB_TimeMark, month), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Month, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "month" + }, + { ATF_NOFLAGS, 0, offsetof(struct AddGrpB_TimeMark, day), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Day, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "day" + }, + { ATF_NOFLAGS, 0, offsetof(struct AddGrpB_TimeMark, summerTime), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SummerTime, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "summerTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct AddGrpB_TimeMark, holiday), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Holiday, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "holiday" + }, + { ATF_NOFLAGS, 0, offsetof(struct AddGrpB_TimeMark, dayofWeek), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AddGrpB_DayOfWeek, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dayofWeek" + }, + { ATF_NOFLAGS, 0, offsetof(struct AddGrpB_TimeMark, hour), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Hour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hour" + }, + { ATF_NOFLAGS, 0, offsetof(struct AddGrpB_TimeMark, minute), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Minute, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "minute" + }, + { ATF_NOFLAGS, 0, offsetof(struct AddGrpB_TimeMark, second), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Second, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "second" + }, + { ATF_NOFLAGS, 0, offsetof(struct AddGrpB_TimeMark, tenthSecond), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TenthSecond, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tenthSecond" + }, +}; +static const ber_tlv_tag_t asn_DEF_AddGrpB_TimeMark_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AddGrpB_TimeMark_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* year */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* month */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* day */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* summerTime */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* holiday */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* dayofWeek */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* hour */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* minute */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* second */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* tenthSecond */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_AddGrpB_TimeMark_specs_1 = { + sizeof(struct AddGrpB_TimeMark), + offsetof(struct AddGrpB_TimeMark, _asn_ctx), + asn_MAP_AddGrpB_TimeMark_tag2el_1, + 10, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AddGrpB_TimeMark = { + "TimeMark", + "TimeMark", + &asn_OP_SEQUENCE, + asn_DEF_AddGrpB_TimeMark_tags_1, + sizeof(asn_DEF_AddGrpB_TimeMark_tags_1) + /sizeof(asn_DEF_AddGrpB_TimeMark_tags_1[0]), /* 1 */ + asn_DEF_AddGrpB_TimeMark_tags_1, /* Same as above */ + sizeof(asn_DEF_AddGrpB_TimeMark_tags_1) + /sizeof(asn_DEF_AddGrpB_TimeMark_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AddGrpB_TimeMark_1, + 10, /* Elements count */ + &asn_SPC_AddGrpB_TimeMark_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AdvisorySpeed.c b/src/tmx/Asn_J2735/src/r2020/AdvisorySpeed.c new file mode 100644 index 000000000..2a5a3b008 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AdvisorySpeed.c @@ -0,0 +1,261 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AdvisorySpeed.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_AdvisorySpeed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_7 = { + sizeof(struct AdvisorySpeed__regional), + offsetof(struct AdvisorySpeed__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_7 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_7, + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]) - 1, /* 1 */ + asn_DEF_regional_tags_7, /* Same as above */ + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_7, + 1, /* Single element */ + &asn_SPC_regional_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_AdvisorySpeed_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AdvisorySpeed, type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AdvisorySpeedType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "type" + }, + { ATF_POINTER, 5, offsetof(struct AdvisorySpeed, speed), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedAdvice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed" + }, + { ATF_POINTER, 4, offsetof(struct AdvisorySpeed, confidence), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, + { ATF_POINTER, 3, offsetof(struct AdvisorySpeed, distance), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ZoneLength, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "distance" + }, + { ATF_POINTER, 2, offsetof(struct AdvisorySpeed, Class), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RestrictionClassID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "class" + }, + { ATF_POINTER, 1, offsetof(struct AdvisorySpeed, regional), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + 0, + &asn_DEF_regional_7, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_AdvisorySpeed_oms_1[] = { 1, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_AdvisorySpeed_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AdvisorySpeed_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* speed */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* confidence */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* distance */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* class */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AdvisorySpeed_specs_1 = { + sizeof(struct AdvisorySpeed), + offsetof(struct AdvisorySpeed, _asn_ctx), + asn_MAP_AdvisorySpeed_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_AdvisorySpeed_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AdvisorySpeed = { + "AdvisorySpeed", + "AdvisorySpeed", + &asn_OP_SEQUENCE, + asn_DEF_AdvisorySpeed_tags_1, + sizeof(asn_DEF_AdvisorySpeed_tags_1) + /sizeof(asn_DEF_AdvisorySpeed_tags_1[0]), /* 1 */ + asn_DEF_AdvisorySpeed_tags_1, /* Same as above */ + sizeof(asn_DEF_AdvisorySpeed_tags_1) + /sizeof(asn_DEF_AdvisorySpeed_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_AdvisorySpeed_1, + 6, /* Elements count */ + &asn_SPC_AdvisorySpeed_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AdvisorySpeedList.c b/src/tmx/Asn_J2735/src/r2020/AdvisorySpeedList.c new file mode 100644 index 000000000..cf6938c2e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AdvisorySpeedList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AdvisorySpeedList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AdvisorySpeedList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AdvisorySpeedList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_AdvisorySpeedList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AdvisorySpeed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_AdvisorySpeedList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_AdvisorySpeedList_specs_1 = { + sizeof(struct AdvisorySpeedList), + offsetof(struct AdvisorySpeedList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_AdvisorySpeedList = { + "AdvisorySpeedList", + "AdvisorySpeedList", + &asn_OP_SEQUENCE_OF, + asn_DEF_AdvisorySpeedList_tags_1, + sizeof(asn_DEF_AdvisorySpeedList_tags_1) + /sizeof(asn_DEF_AdvisorySpeedList_tags_1[0]), /* 1 */ + asn_DEF_AdvisorySpeedList_tags_1, /* Same as above */ + sizeof(asn_DEF_AdvisorySpeedList_tags_1) + /sizeof(asn_DEF_AdvisorySpeedList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AdvisorySpeedList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AdvisorySpeedList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_AdvisorySpeedList_1, + 1, /* Single element */ + &asn_SPC_AdvisorySpeedList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AdvisorySpeedType.c b/src/tmx/Asn_J2735/src/r2020/AdvisorySpeedType.c new file mode 100644 index 000000000..ed317e326 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AdvisorySpeedType.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AdvisorySpeedType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AdvisorySpeedType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AdvisorySpeedType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AdvisorySpeedType_value2enum_1[] = { + { 0, 4, "none" }, + { 1, 9, "greenwave" }, + { 2, 8, "ecoDrive" }, + { 3, 7, "transit" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_AdvisorySpeedType_enum2value_1[] = { + 2, /* ecoDrive(2) */ + 1, /* greenwave(1) */ + 0, /* none(0) */ + 3 /* transit(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_AdvisorySpeedType_specs_1 = { + asn_MAP_AdvisorySpeedType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AdvisorySpeedType_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AdvisorySpeedType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AdvisorySpeedType = { + "AdvisorySpeedType", + "AdvisorySpeedType", + &asn_OP_NativeEnumerated, + asn_DEF_AdvisorySpeedType_tags_1, + sizeof(asn_DEF_AdvisorySpeedType_tags_1) + /sizeof(asn_DEF_AdvisorySpeedType_tags_1[0]), /* 1 */ + asn_DEF_AdvisorySpeedType_tags_1, /* Same as above */ + sizeof(asn_DEF_AdvisorySpeedType_tags_1) + /sizeof(asn_DEF_AdvisorySpeedType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AdvisorySpeedType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AdvisorySpeedType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AdvisorySpeedType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AllowedManeuvers.c b/src/tmx/Asn_J2735/src/r2020/AllowedManeuvers.c new file mode 100644 index 000000000..b15b9e299 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AllowedManeuvers.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AllowedManeuvers.h" + +int +AllowedManeuvers_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 12UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AllowedManeuvers_constr_1 CC_NOTUSED = { + { 0, 0 }, + 12 /* (SIZE(12..12)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AllowedManeuvers_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 12, 12 } /* (SIZE(12..12)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AllowedManeuvers_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AllowedManeuvers = { + "AllowedManeuvers", + "AllowedManeuvers", + &asn_OP_BIT_STRING, + asn_DEF_AllowedManeuvers_tags_1, + sizeof(asn_DEF_AllowedManeuvers_tags_1) + /sizeof(asn_DEF_AllowedManeuvers_tags_1[0]), /* 1 */ + asn_DEF_AllowedManeuvers_tags_1, /* Same as above */ + sizeof(asn_DEF_AllowedManeuvers_tags_1) + /sizeof(asn_DEF_AllowedManeuvers_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AllowedManeuvers_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AllowedManeuvers_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AllowedManeuvers_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Altitude.c b/src/tmx/Asn_J2735/src/r2020/Altitude.c new file mode 100644 index 000000000..ef52b6517 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Altitude.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Altitude.h" + +asn_TYPE_member_t asn_MBR_Altitude_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Altitude, value), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AltitudeValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "value" + }, + { ATF_NOFLAGS, 0, offsetof(struct Altitude, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AltitudeConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_Altitude_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Altitude_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* value */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* confidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Altitude_specs_1 = { + sizeof(struct Altitude), + offsetof(struct Altitude, _asn_ctx), + asn_MAP_Altitude_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Altitude = { + "Altitude", + "Altitude", + &asn_OP_SEQUENCE, + asn_DEF_Altitude_tags_1, + sizeof(asn_DEF_Altitude_tags_1) + /sizeof(asn_DEF_Altitude_tags_1[0]), /* 1 */ + asn_DEF_Altitude_tags_1, /* Same as above */ + sizeof(asn_DEF_Altitude_tags_1) + /sizeof(asn_DEF_Altitude_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Altitude_1, + 2, /* Elements count */ + &asn_SPC_Altitude_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AltitudeConfidence.c b/src/tmx/Asn_J2735/src/r2020/AltitudeConfidence.c new file mode 100644 index 000000000..42ba146bb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AltitudeConfidence.c @@ -0,0 +1,96 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AltitudeConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AltitudeConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AltitudeConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AltitudeConfidence_value2enum_1[] = { + { 0, 10, "alt-000-01" }, + { 1, 10, "alt-000-02" }, + { 2, 10, "alt-000-05" }, + { 3, 10, "alt-000-10" }, + { 4, 10, "alt-000-20" }, + { 5, 10, "alt-000-50" }, + { 6, 10, "alt-001-00" }, + { 7, 10, "alt-002-00" }, + { 8, 10, "alt-005-00" }, + { 9, 10, "alt-010-00" }, + { 10, 10, "alt-020-00" }, + { 11, 10, "alt-050-00" }, + { 12, 10, "alt-100-00" }, + { 13, 10, "alt-200-00" }, + { 14, 10, "outOfRange" }, + { 15, 11, "unavailable" } +}; +static const unsigned int asn_MAP_AltitudeConfidence_enum2value_1[] = { + 0, /* alt-000-01(0) */ + 1, /* alt-000-02(1) */ + 2, /* alt-000-05(2) */ + 3, /* alt-000-10(3) */ + 4, /* alt-000-20(4) */ + 5, /* alt-000-50(5) */ + 6, /* alt-001-00(6) */ + 7, /* alt-002-00(7) */ + 8, /* alt-005-00(8) */ + 9, /* alt-010-00(9) */ + 10, /* alt-020-00(10) */ + 11, /* alt-050-00(11) */ + 12, /* alt-100-00(12) */ + 13, /* alt-200-00(13) */ + 14, /* outOfRange(14) */ + 15 /* unavailable(15) */ +}; +const asn_INTEGER_specifics_t asn_SPC_AltitudeConfidence_specs_1 = { + asn_MAP_AltitudeConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AltitudeConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AltitudeConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AltitudeConfidence = { + "AltitudeConfidence", + "AltitudeConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_AltitudeConfidence_tags_1, + sizeof(asn_DEF_AltitudeConfidence_tags_1) + /sizeof(asn_DEF_AltitudeConfidence_tags_1[0]), /* 1 */ + asn_DEF_AltitudeConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_AltitudeConfidence_tags_1) + /sizeof(asn_DEF_AltitudeConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AltitudeConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AltitudeConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AltitudeConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AltitudeValue.c b/src/tmx/Asn_J2735/src/r2020/AltitudeValue.c new file mode 100644 index 000000000..61bb257e7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AltitudeValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AltitudeValue.h" + +int +AltitudeValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -100000L && value <= 800001L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AltitudeValue_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-100000..800001) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AltitudeValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 20, -1, -100000, 800001 } /* (-100000..800001) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AltitudeValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AltitudeValue = { + "AltitudeValue", + "AltitudeValue", + &asn_OP_NativeInteger, + asn_DEF_AltitudeValue_tags_1, + sizeof(asn_DEF_AltitudeValue_tags_1) + /sizeof(asn_DEF_AltitudeValue_tags_1[0]), /* 1 */ + asn_DEF_AltitudeValue_tags_1, /* Same as above */ + sizeof(asn_DEF_AltitudeValue_tags_1) + /sizeof(asn_DEF_AltitudeValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AltitudeValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AltitudeValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AltitudeValue_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AmbientAirPressure.c b/src/tmx/Asn_J2735/src/r2020/AmbientAirPressure.c new file mode 100644 index 000000000..c503ea31d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AmbientAirPressure.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AmbientAirPressure.h" + +int +AmbientAirPressure_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AmbientAirPressure_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AmbientAirPressure_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AmbientAirPressure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AmbientAirPressure = { + "AmbientAirPressure", + "AmbientAirPressure", + &asn_OP_NativeInteger, + asn_DEF_AmbientAirPressure_tags_1, + sizeof(asn_DEF_AmbientAirPressure_tags_1) + /sizeof(asn_DEF_AmbientAirPressure_tags_1[0]), /* 1 */ + asn_DEF_AmbientAirPressure_tags_1, /* Same as above */ + sizeof(asn_DEF_AmbientAirPressure_tags_1) + /sizeof(asn_DEF_AmbientAirPressure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AmbientAirPressure_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AmbientAirPressure_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AmbientAirPressure_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AmbientAirTemperature.c b/src/tmx/Asn_J2735/src/r2020/AmbientAirTemperature.c new file mode 100644 index 000000000..c86529dc6 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AmbientAirTemperature.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AmbientAirTemperature.h" + +int +AmbientAirTemperature_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 191L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AmbientAirTemperature_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..191) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AmbientAirTemperature_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 191 } /* (0..191) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AmbientAirTemperature_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AmbientAirTemperature = { + "AmbientAirTemperature", + "AmbientAirTemperature", + &asn_OP_NativeInteger, + asn_DEF_AmbientAirTemperature_tags_1, + sizeof(asn_DEF_AmbientAirTemperature_tags_1) + /sizeof(asn_DEF_AmbientAirTemperature_tags_1[0]), /* 1 */ + asn_DEF_AmbientAirTemperature_tags_1, /* Same as above */ + sizeof(asn_DEF_AmbientAirTemperature_tags_1) + /sizeof(asn_DEF_AmbientAirTemperature_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AmbientAirTemperature_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AmbientAirTemperature_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AmbientAirTemperature_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AngularVelocity.c b/src/tmx/Asn_J2735/src/r2020/AngularVelocity.c new file mode 100644 index 000000000..eedd75054 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AngularVelocity.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "AngularVelocity.h" + +asn_TYPE_member_t asn_MBR_AngularVelocity_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AngularVelocity, pitchRate), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PitchRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pitchRate" + }, + { ATF_NOFLAGS, 0, offsetof(struct AngularVelocity, rollRate), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RollRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rollRate" + }, +}; +static const ber_tlv_tag_t asn_DEF_AngularVelocity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AngularVelocity_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pitchRate */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rollRate */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AngularVelocity_specs_1 = { + sizeof(struct AngularVelocity), + offsetof(struct AngularVelocity, _asn_ctx), + asn_MAP_AngularVelocity_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AngularVelocity = { + "AngularVelocity", + "AngularVelocity", + &asn_OP_SEQUENCE, + asn_DEF_AngularVelocity_tags_1, + sizeof(asn_DEF_AngularVelocity_tags_1) + /sizeof(asn_DEF_AngularVelocity_tags_1[0]), /* 1 */ + asn_DEF_AngularVelocity_tags_1, /* Same as above */ + sizeof(asn_DEF_AngularVelocity_tags_1) + /sizeof(asn_DEF_AngularVelocity_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AngularVelocity_1, + 2, /* Elements count */ + &asn_SPC_AngularVelocity_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AngularVelocityConfidence.c b/src/tmx/Asn_J2735/src/r2020/AngularVelocityConfidence.c new file mode 100644 index 000000000..8ff44510f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AngularVelocityConfidence.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "AngularVelocityConfidence.h" + +asn_TYPE_member_t asn_MBR_AngularVelocityConfidence_1[] = { + { ATF_POINTER, 2, offsetof(struct AngularVelocityConfidence, pitchRateConfidence), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PitchRateConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pitchRateConfidence" + }, + { ATF_POINTER, 1, offsetof(struct AngularVelocityConfidence, rollRateConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RollRateConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rollRateConfidence" + }, +}; +static const int asn_MAP_AngularVelocityConfidence_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_AngularVelocityConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AngularVelocityConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pitchRateConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rollRateConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AngularVelocityConfidence_specs_1 = { + sizeof(struct AngularVelocityConfidence), + offsetof(struct AngularVelocityConfidence, _asn_ctx), + asn_MAP_AngularVelocityConfidence_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_AngularVelocityConfidence_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AngularVelocityConfidence = { + "AngularVelocityConfidence", + "AngularVelocityConfidence", + &asn_OP_SEQUENCE, + asn_DEF_AngularVelocityConfidence_tags_1, + sizeof(asn_DEF_AngularVelocityConfidence_tags_1) + /sizeof(asn_DEF_AngularVelocityConfidence_tags_1[0]), /* 1 */ + asn_DEF_AngularVelocityConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_AngularVelocityConfidence_tags_1) + /sizeof(asn_DEF_AngularVelocityConfidence_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AngularVelocityConfidence_1, + 2, /* Elements count */ + &asn_SPC_AngularVelocityConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AnimalPropelledType.c b/src/tmx/Asn_J2735/src/r2020/AnimalPropelledType.c new file mode 100644 index 000000000..4e2ed5dec --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AnimalPropelledType.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AnimalPropelledType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AnimalPropelledType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AnimalPropelledType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AnimalPropelledType_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 10, "otherTypes" }, + { 2, 13, "animalMounted" }, + { 3, 19, "animalDrawnCarriage" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_AnimalPropelledType_enum2value_1[] = { + 3, /* animalDrawnCarriage(3) */ + 2, /* animalMounted(2) */ + 1, /* otherTypes(1) */ + 0 /* unavailable(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_AnimalPropelledType_specs_1 = { + asn_MAP_AnimalPropelledType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AnimalPropelledType_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AnimalPropelledType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AnimalPropelledType = { + "AnimalPropelledType", + "AnimalPropelledType", + &asn_OP_NativeEnumerated, + asn_DEF_AnimalPropelledType_tags_1, + sizeof(asn_DEF_AnimalPropelledType_tags_1) + /sizeof(asn_DEF_AnimalPropelledType_tags_1[0]), /* 1 */ + asn_DEF_AnimalPropelledType_tags_1, /* Same as above */ + sizeof(asn_DEF_AnimalPropelledType_tags_1) + /sizeof(asn_DEF_AnimalPropelledType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AnimalPropelledType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AnimalPropelledType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AnimalPropelledType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AnimalType.c b/src/tmx/Asn_J2735/src/r2020/AnimalType.c new file mode 100644 index 000000000..a17783cca --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AnimalType.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AnimalType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AnimalType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AnimalType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AnimalType_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 10, "serviceUse" }, + { 2, 3, "pet" }, + { 3, 4, "farm" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_AnimalType_enum2value_1[] = { + 3, /* farm(3) */ + 2, /* pet(2) */ + 1, /* serviceUse(1) */ + 0 /* unavailable(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_AnimalType_specs_1 = { + asn_MAP_AnimalType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AnimalType_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AnimalType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AnimalType = { + "AnimalType", + "AnimalType", + &asn_OP_NativeEnumerated, + asn_DEF_AnimalType_tags_1, + sizeof(asn_DEF_AnimalType_tags_1) + /sizeof(asn_DEF_AnimalType_tags_1[0]), /* 1 */ + asn_DEF_AnimalType_tags_1, /* Same as above */ + sizeof(asn_DEF_AnimalType_tags_1) + /sizeof(asn_DEF_AnimalType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AnimalType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AnimalType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AnimalType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AntennaOffsetSet.c b/src/tmx/Asn_J2735/src/r2020/AntennaOffsetSet.c new file mode 100644 index 000000000..9ccba3a13 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AntennaOffsetSet.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AntennaOffsetSet.h" + +asn_TYPE_member_t asn_MBR_AntennaOffsetSet_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AntennaOffsetSet, antOffsetX), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "antOffsetX" + }, + { ATF_NOFLAGS, 0, offsetof(struct AntennaOffsetSet, antOffsetY), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B09, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "antOffsetY" + }, + { ATF_NOFLAGS, 0, offsetof(struct AntennaOffsetSet, antOffsetZ), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "antOffsetZ" + }, +}; +static const ber_tlv_tag_t asn_DEF_AntennaOffsetSet_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AntennaOffsetSet_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* antOffsetX */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* antOffsetY */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* antOffsetZ */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AntennaOffsetSet_specs_1 = { + sizeof(struct AntennaOffsetSet), + offsetof(struct AntennaOffsetSet, _asn_ctx), + asn_MAP_AntennaOffsetSet_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AntennaOffsetSet = { + "AntennaOffsetSet", + "AntennaOffsetSet", + &asn_OP_SEQUENCE, + asn_DEF_AntennaOffsetSet_tags_1, + sizeof(asn_DEF_AntennaOffsetSet_tags_1) + /sizeof(asn_DEF_AntennaOffsetSet_tags_1[0]), /* 1 */ + asn_DEF_AntennaOffsetSet_tags_1, /* Same as above */ + sizeof(asn_DEF_AntennaOffsetSet_tags_1) + /sizeof(asn_DEF_AntennaOffsetSet_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_AntennaOffsetSet_1, + 3, /* Elements count */ + &asn_SPC_AntennaOffsetSet_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AntiLockBrakeStatus.c b/src/tmx/Asn_J2735/src/r2020/AntiLockBrakeStatus.c new file mode 100644 index 000000000..976587ba3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AntiLockBrakeStatus.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AntiLockBrakeStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AntiLockBrakeStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AntiLockBrakeStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AntiLockBrakeStatus_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 3, "off" }, + { 2, 2, "on" }, + { 3, 7, "engaged" } +}; +static const unsigned int asn_MAP_AntiLockBrakeStatus_enum2value_1[] = { + 3, /* engaged(3) */ + 1, /* off(1) */ + 2, /* on(2) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_AntiLockBrakeStatus_specs_1 = { + asn_MAP_AntiLockBrakeStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AntiLockBrakeStatus_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AntiLockBrakeStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AntiLockBrakeStatus = { + "AntiLockBrakeStatus", + "AntiLockBrakeStatus", + &asn_OP_NativeEnumerated, + asn_DEF_AntiLockBrakeStatus_tags_1, + sizeof(asn_DEF_AntiLockBrakeStatus_tags_1) + /sizeof(asn_DEF_AntiLockBrakeStatus_tags_1[0]), /* 1 */ + asn_DEF_AntiLockBrakeStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_AntiLockBrakeStatus_tags_1) + /sizeof(asn_DEF_AntiLockBrakeStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AntiLockBrakeStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AntiLockBrakeStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AntiLockBrakeStatus_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ApproachID.c b/src/tmx/Asn_J2735/src/r2020/ApproachID.c new file mode 100644 index 000000000..94ca08c31 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ApproachID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ApproachID.h" + +int +ApproachID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 15L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ApproachID_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..15) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ApproachID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ApproachID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ApproachID = { + "ApproachID", + "ApproachID", + &asn_OP_NativeInteger, + asn_DEF_ApproachID_tags_1, + sizeof(asn_DEF_ApproachID_tags_1) + /sizeof(asn_DEF_ApproachID_tags_1[0]), /* 1 */ + asn_DEF_ApproachID_tags_1, /* Same as above */ + sizeof(asn_DEF_ApproachID_tags_1) + /sizeof(asn_DEF_ApproachID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ApproachID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ApproachID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ApproachID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ApproachOrLane.c b/src/tmx/Asn_J2735/src/r2020/ApproachOrLane.c new file mode 100644 index 000000000..29f0d7302 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ApproachOrLane.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "IntersectionCollision" + * found in "J2735-IntersectionCollision.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ApproachOrLane.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ApproachOrLane_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ApproachOrLane_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_ApproachOrLane_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ApproachOrLane, choice.approach), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ApproachID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "approach" + }, + { ATF_NOFLAGS, 0, offsetof(struct ApproachOrLane, choice.lane), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lane" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ApproachOrLane_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* approach */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lane */ +}; +asn_CHOICE_specifics_t asn_SPC_ApproachOrLane_specs_1 = { + sizeof(struct ApproachOrLane), + offsetof(struct ApproachOrLane, _asn_ctx), + offsetof(struct ApproachOrLane, present), + sizeof(((struct ApproachOrLane *)0)->present), + asn_MAP_ApproachOrLane_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ApproachOrLane = { + "ApproachOrLane", + "ApproachOrLane", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ApproachOrLane_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ApproachOrLane_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_ApproachOrLane_1, + 2, /* Elements count */ + &asn_SPC_ApproachOrLane_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Attachment.c b/src/tmx/Asn_J2735/src/r2020/Attachment.c new file mode 100644 index 000000000..5b5a92c8f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Attachment.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Attachment.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Attachment_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Attachment_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_Attachment_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 8, "stroller" }, + { 2, 14, "bicycleTrailer" }, + { 3, 4, "cart" }, + { 4, 10, "wheelchair" }, + { 5, 26, "otherWalkAssistAttachments" }, + { 6, 3, "pet" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Attachment_enum2value_1[] = { + 2, /* bicycleTrailer(2) */ + 3, /* cart(3) */ + 5, /* otherWalkAssistAttachments(5) */ + 6, /* pet(6) */ + 1, /* stroller(1) */ + 0, /* unavailable(0) */ + 4 /* wheelchair(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Attachment_specs_1 = { + asn_MAP_Attachment_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Attachment_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Attachment_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Attachment = { + "Attachment", + "Attachment", + &asn_OP_NativeEnumerated, + asn_DEF_Attachment_tags_1, + sizeof(asn_DEF_Attachment_tags_1) + /sizeof(asn_DEF_Attachment_tags_1[0]), /* 1 */ + asn_DEF_Attachment_tags_1, /* Same as above */ + sizeof(asn_DEF_Attachment_tags_1) + /sizeof(asn_DEF_Attachment_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Attachment_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Attachment_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Attachment_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AttachmentRadius.c b/src/tmx/Asn_J2735/src/r2020/AttachmentRadius.c new file mode 100644 index 000000000..4c38db7a7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AttachmentRadius.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AttachmentRadius.h" + +int +AttachmentRadius_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 200L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AttachmentRadius_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..200) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AttachmentRadius_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 200 } /* (0..200) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AttachmentRadius_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AttachmentRadius = { + "AttachmentRadius", + "AttachmentRadius", + &asn_OP_NativeInteger, + asn_DEF_AttachmentRadius_tags_1, + sizeof(asn_DEF_AttachmentRadius_tags_1) + /sizeof(asn_DEF_AttachmentRadius_tags_1[0]), /* 1 */ + asn_DEF_AttachmentRadius_tags_1, /* Same as above */ + sizeof(asn_DEF_AttachmentRadius_tags_1) + /sizeof(asn_DEF_AttachmentRadius_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AttachmentRadius_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AttachmentRadius_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AttachmentRadius_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Attitude.c b/src/tmx/Asn_J2735/src/r2020/Attitude.c new file mode 100644 index 000000000..4af80a825 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Attitude.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "Attitude.h" + +asn_TYPE_member_t asn_MBR_Attitude_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Attitude, pitch), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PitchDetected, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pitch" + }, + { ATF_NOFLAGS, 0, offsetof(struct Attitude, roll), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RollDetected, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "roll" + }, + { ATF_NOFLAGS, 0, offsetof(struct Attitude, yaw), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_YawDetected, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "yaw" + }, +}; +static const ber_tlv_tag_t asn_DEF_Attitude_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Attitude_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pitch */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* roll */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* yaw */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Attitude_specs_1 = { + sizeof(struct Attitude), + offsetof(struct Attitude, _asn_ctx), + asn_MAP_Attitude_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Attitude = { + "Attitude", + "Attitude", + &asn_OP_SEQUENCE, + asn_DEF_Attitude_tags_1, + sizeof(asn_DEF_Attitude_tags_1) + /sizeof(asn_DEF_Attitude_tags_1[0]), /* 1 */ + asn_DEF_Attitude_tags_1, /* Same as above */ + sizeof(asn_DEF_Attitude_tags_1) + /sizeof(asn_DEF_Attitude_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Attitude_1, + 3, /* Elements count */ + &asn_SPC_Attitude_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AttitudeConfidence.c b/src/tmx/Asn_J2735/src/r2020/AttitudeConfidence.c new file mode 100644 index 000000000..f521222c5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AttitudeConfidence.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "AttitudeConfidence.h" + +asn_TYPE_member_t asn_MBR_AttitudeConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AttitudeConfidence, pitchConfidence), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pitchConfidence" + }, + { ATF_NOFLAGS, 0, offsetof(struct AttitudeConfidence, rollConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rollConfidence" + }, + { ATF_NOFLAGS, 0, offsetof(struct AttitudeConfidence, yawConfidence), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "yawConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_AttitudeConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AttitudeConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pitchConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rollConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* yawConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AttitudeConfidence_specs_1 = { + sizeof(struct AttitudeConfidence), + offsetof(struct AttitudeConfidence, _asn_ctx), + asn_MAP_AttitudeConfidence_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AttitudeConfidence = { + "AttitudeConfidence", + "AttitudeConfidence", + &asn_OP_SEQUENCE, + asn_DEF_AttitudeConfidence_tags_1, + sizeof(asn_DEF_AttitudeConfidence_tags_1) + /sizeof(asn_DEF_AttitudeConfidence_tags_1[0]), /* 1 */ + asn_DEF_AttitudeConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_AttitudeConfidence_tags_1) + /sizeof(asn_DEF_AttitudeConfidence_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AttitudeConfidence_1, + 3, /* Elements count */ + &asn_SPC_AttitudeConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AuxiliaryBrakeStatus.c b/src/tmx/Asn_J2735/src/r2020/AuxiliaryBrakeStatus.c new file mode 100644 index 000000000..8e504397b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AuxiliaryBrakeStatus.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AuxiliaryBrakeStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AuxiliaryBrakeStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AuxiliaryBrakeStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AuxiliaryBrakeStatus_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 3, "off" }, + { 2, 2, "on" }, + { 3, 8, "reserved" } +}; +static const unsigned int asn_MAP_AuxiliaryBrakeStatus_enum2value_1[] = { + 1, /* off(1) */ + 2, /* on(2) */ + 3, /* reserved(3) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_AuxiliaryBrakeStatus_specs_1 = { + asn_MAP_AuxiliaryBrakeStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AuxiliaryBrakeStatus_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AuxiliaryBrakeStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AuxiliaryBrakeStatus = { + "AuxiliaryBrakeStatus", + "AuxiliaryBrakeStatus", + &asn_OP_NativeEnumerated, + asn_DEF_AuxiliaryBrakeStatus_tags_1, + sizeof(asn_DEF_AuxiliaryBrakeStatus_tags_1) + /sizeof(asn_DEF_AuxiliaryBrakeStatus_tags_1[0]), /* 1 */ + asn_DEF_AuxiliaryBrakeStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_AuxiliaryBrakeStatus_tags_1) + /sizeof(asn_DEF_AuxiliaryBrakeStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AuxiliaryBrakeStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AuxiliaryBrakeStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AuxiliaryBrakeStatus_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AxleLocation.c b/src/tmx/Asn_J2735/src/r2020/AxleLocation.c new file mode 100644 index 000000000..6efdbb189 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AxleLocation.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AxleLocation.h" + +int +AxleLocation_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AxleLocation_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AxleLocation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AxleLocation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AxleLocation = { + "AxleLocation", + "AxleLocation", + &asn_OP_NativeInteger, + asn_DEF_AxleLocation_tags_1, + sizeof(asn_DEF_AxleLocation_tags_1) + /sizeof(asn_DEF_AxleLocation_tags_1[0]), /* 1 */ + asn_DEF_AxleLocation_tags_1, /* Same as above */ + sizeof(asn_DEF_AxleLocation_tags_1) + /sizeof(asn_DEF_AxleLocation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AxleLocation_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AxleLocation_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AxleLocation_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AxleWeight.c b/src/tmx/Asn_J2735/src/r2020/AxleWeight.c new file mode 100644 index 000000000..307ee89e9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AxleWeight.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AxleWeight.h" + +int +AxleWeight_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 64255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AxleWeight_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..64255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AxleWeight_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 64255 } /* (0..64255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AxleWeight_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AxleWeight = { + "AxleWeight", + "AxleWeight", + &asn_OP_NativeInteger, + asn_DEF_AxleWeight_tags_1, + sizeof(asn_DEF_AxleWeight_tags_1) + /sizeof(asn_DEF_AxleWeight_tags_1[0]), /* 1 */ + asn_DEF_AxleWeight_tags_1, /* Same as above */ + sizeof(asn_DEF_AxleWeight_tags_1) + /sizeof(asn_DEF_AxleWeight_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AxleWeight_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AxleWeight_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AxleWeight_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AxleWeightList.c b/src/tmx/Asn_J2735/src/r2020/AxleWeightList.c new file mode 100644 index 000000000..ed769ee4d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AxleWeightList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AxleWeightList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AxleWeightList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AxleWeightList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_AxleWeightList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AxleWeightSet, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_AxleWeightList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_AxleWeightList_specs_1 = { + sizeof(struct AxleWeightList), + offsetof(struct AxleWeightList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_AxleWeightList = { + "AxleWeightList", + "AxleWeightList", + &asn_OP_SEQUENCE_OF, + asn_DEF_AxleWeightList_tags_1, + sizeof(asn_DEF_AxleWeightList_tags_1) + /sizeof(asn_DEF_AxleWeightList_tags_1[0]), /* 1 */ + asn_DEF_AxleWeightList_tags_1, /* Same as above */ + sizeof(asn_DEF_AxleWeightList_tags_1) + /sizeof(asn_DEF_AxleWeightList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AxleWeightList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AxleWeightList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_AxleWeightList_1, + 1, /* Single element */ + &asn_SPC_AxleWeightList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/AxleWeightSet.c b/src/tmx/Asn_J2735/src/r2020/AxleWeightSet.c new file mode 100644 index 000000000..1e846d665 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/AxleWeightSet.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "AxleWeightSet.h" + +asn_TYPE_member_t asn_MBR_AxleWeightSet_1[] = { + { ATF_POINTER, 2, offsetof(struct AxleWeightSet, location), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AxleLocation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "location" + }, + { ATF_POINTER, 1, offsetof(struct AxleWeightSet, weight), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AxleWeight, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "weight" + }, +}; +static const int asn_MAP_AxleWeightSet_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_AxleWeightSet_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AxleWeightSet_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* location */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* weight */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AxleWeightSet_specs_1 = { + sizeof(struct AxleWeightSet), + offsetof(struct AxleWeightSet, _asn_ctx), + asn_MAP_AxleWeightSet_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_AxleWeightSet_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AxleWeightSet = { + "AxleWeightSet", + "AxleWeightSet", + &asn_OP_SEQUENCE, + asn_DEF_AxleWeightSet_tags_1, + sizeof(asn_DEF_AxleWeightSet_tags_1) + /sizeof(asn_DEF_AxleWeightSet_tags_1[0]), /* 1 */ + asn_DEF_AxleWeightSet_tags_1, /* Same as above */ + sizeof(asn_DEF_AxleWeightSet_tags_1) + /sizeof(asn_DEF_AxleWeightSet_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_AxleWeightSet_1, + 2, /* Elements count */ + &asn_SPC_AxleWeightSet_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/BIT_STRING.c b/src/tmx/Asn_J2735/src/r2020/BIT_STRING.c new file mode 100644 index 000000000..b5ba94017 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BIT_STRING.c @@ -0,0 +1,213 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * BIT STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { + sizeof(BIT_STRING_t), + offsetof(BIT_STRING_t, _asn_ctx), + ASN_OSUBV_BIT +}; +asn_TYPE_operation_t asn_OP_BIT_STRING = { + OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + BIT_STRING_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + BIT_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_binary, + BIT_STRING_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + BIT_STRING_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + BIT_STRING_decode_oer, + BIT_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + BIT_STRING_decode_uper, /* Unaligned PER decoder */ + BIT_STRING_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + BIT_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { + "BIT STRING", + "BIT_STRING", + &asn_OP_BIT_STRING, + asn_DEF_BIT_STRING_tags, + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + asn_DEF_BIT_STRING_tags, /* Same as above */ + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BIT_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs +}; + +/* + * BIT STRING generic constraint. + */ +int +BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + + if(st && st->buf) { + if((st->size == 0 && st->bits_unused) + || st->bits_unused < 0 || st->bits_unused > 7) { + ASN__CTFAIL(app_key, td, sptr, + "%s: invalid padding byte (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +/* + * Non-destructively remove the trailing 0-bits from the given bit string. + */ +const BIT_STRING_t * +BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { + const uint8_t *b; + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + + if(st->size == 0) { + assert(st->bits_unused == 0); + return st; + } else { + for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { + ; + } + /* b points to the last byte which may contain data */ + if(*b) { + int unused = 7; + uint8_t v = *b; + v &= -(int8_t)v; + if(v & 0x0F) unused -= 4; + if(v & 0x33) unused -= 2; + if(v & 0x55) unused -= 1; + tmp->size = b-st->buf + 1; + tmp->bits_unused = unused; + } else { + tmp->size = b-st->buf; + tmp->bits_unused = 0; + } + + assert(b >= st->buf); + } + + unconst.c_buf = st->buf; + tmp->buf = unconst.nc_buf; + return tmp; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + /* + * Remove information about trailing bits, since + * X.680 (08/2015) #22.7 "ensure that different semantics are not" + * "associated with [values that differ only in] the trailing 0 bits." + */ + BIT_STRING_t compact_a, compact_b; + const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); + const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + + (void)specs; + assert(specs && specs->subvariant == ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + /* Figure out how many unused bits */ + if(a->bits_unused > b->bits_unused) { + return -1; + } else if(a->bits_unused < b->bits_unused) { + return 1; + } else { + return 0; + } + } + } else { + return ret; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/BIT_STRING_oer.c b/src/tmx/Asn_J2735/src/r2020/BIT_STRING_oer.c new file mode 100644 index 000000000..53e55fcd4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BIT_STRING_oer.c @@ -0,0 +1,168 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +BIT_STRING_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + asn_dec_rval_t rval = {RC_OK, 0}; + size_t expected_length = 0; + + (void)opt_codec_ctx; + + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(ct_size >= 0) { + expected_length = (ct_size + 7) >> 3; + st->bits_unused = (8 - (ct_size & 7)) & 7; + } else { + /* + * X.696 (08/2015) #13.3.1 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + ssize_t len_len = oer_fetch_length(ptr, size, &expected_length); + if(len_len > 0) { + ptr = (const char *)ptr + len_len; + size -= len_len; + } else if(len_len == 0) { + ASN__DECODE_STARVED; + } else if(len_len < 0) { + ASN__DECODE_FAILED; + } + + if(expected_length < 1) { + ASN__DECODE_FAILED; + } else if(expected_length > size) { + ASN__DECODE_STARVED; + } + + st->bits_unused = ((const uint8_t *)ptr)[0]; + if(st->bits_unused & ~7) { + ASN_DEBUG("%s: unused bits outside of 0..7 range", td->name); + ASN__DECODE_FAILED; + } + ptr = (const char *)ptr + 1; + size--; + expected_length--; + rval.consumed = len_len + 1; + } + + if(size < expected_length) { + ASN__DECODE_STARVED; + } else { + uint8_t *buf = MALLOC(expected_length + 1); + if(buf == NULL) { + ASN__DECODE_FAILED; + } else { + memcpy(buf, ptr, expected_length); + buf[expected_length] = '\0'; + } + FREEMEM(st->buf); + st->buf = buf; + st->size = expected_length; + if(expected_length > 0) { + buf[expected_length - 1] &= (0xff << st->bits_unused); + } + + rval.consumed += expected_length; + return rval; + } +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +BIT_STRING_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + asn_enc_rval_t erval = {0, 0, 0}; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + size_t trailing_zeros = 0; + int fix_last_byte = 0; + + if(!st) ASN__ENCODE_FAILED; + + if(st->bits_unused & ~7) { + ASN_DEBUG("BIT STRING unused bits %d out of 0..7 range", + st->bits_unused); + ASN__ENCODE_FAILED; + } + if(st->bits_unused && !(st->size && st->buf)) { + ASN_DEBUG("BIT STRING %s size 0 can't support unused bits %d", td->name, + st->bits_unused); + ASN__ENCODE_FAILED; + } + + if(ct_size >= 0) { + size_t ct_bytes = (ct_size + 7) >> 3; + if(st->size > ct_bytes) { + ASN_DEBUG("More bits in BIT STRING %s (%" ASN_PRI_SSIZE ") than constrained %" ASN_PRI_SSIZE "", + td->name, 8 * st->size - st->bits_unused, ct_size); + ASN__ENCODE_FAILED; + } + trailing_zeros = ct_bytes - st->size; /* Allow larger constraint */ + } else { + uint8_t ub = st->bits_unused & 7; + ssize_t len_len = oer_serialize_length(1 + st->size, cb, app_key); + if(len_len < 0) ASN__ENCODE_FAILED; + if(cb(&ub, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } + erval.encoded += len_len + 1; + } + + if(st->bits_unused) { + if(st->buf[st->size - 1] & (0xff << st->bits_unused)) { + fix_last_byte = 1; + } + } + + if(cb(st->buf, st->size - fix_last_byte, app_key) < 0) { + ASN__ENCODE_FAILED; + } + + if(fix_last_byte) { + uint8_t b = st->buf[st->size - 1] & (0xff << st->bits_unused); + if(cb(&b, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } + } + + erval.encoded += st->size; + + if(trailing_zeros) { + static uint8_t zeros[16]; + while(trailing_zeros > 0) { + int ret; + if(trailing_zeros < sizeof(zeros)) { + ret = cb(zeros, trailing_zeros, app_key); + erval.encoded += trailing_zeros; + } else { + ret = cb(zeros, sizeof(zeros), app_key); + erval.encoded += sizeof(zeros); + } + if(ret < 0) ASN__ENCODE_FAILED; + } + } + + return erval; +} diff --git a/src/tmx/Asn_J2735/src/r2020/BIT_STRING_print.c b/src/tmx/Asn_J2735/src/r2020/BIT_STRING_print.c new file mode 100644 index 000000000..79331a065 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BIT_STRING_print.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * BIT STRING specific contents printer. + */ +int +BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + char scratch[64]; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + uint8_t *buf; + uint8_t *end; + char *p = scratch; + + (void)td; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + ilevel++; + buf = st->buf; + end = buf + st->size; + + /* + * Hexadecimal dump. + */ + for(; buf < end; buf++) { + if((buf - st->buf) % 16 == 0 && (st->size > 16) + && buf != st->buf) { + _i_INDENT(1); + /* Dump the string */ + if(cb(scratch, p - scratch, app_key) < 0) return -1; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Eat the tailing space */ + + if((st->size > 16)) { + _i_INDENT(1); + } + + /* Dump the incomplete 16-bytes row */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + if(st->bits_unused) { + int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", + st->bits_unused, st->bits_unused == 1 ? "" : "s"); + assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); + if(ret > 0 && ret < (ssize_t)sizeof(scratch) + && cb(scratch, ret, app_key) < 0) + return -1; + } + + return 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/BIT_STRING_rfill.c b/src/tmx/Asn_J2735/src/r2020/BIT_STRING_rfill.c new file mode 100644 index 000000000..2ac4c0428 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BIT_STRING_rfill.c @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + static unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_bits, rnd_len; + BIT_STRING_t *st; + + if(max_length == 0) return result_skipped; + + switch(specs->subvariant) { + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + break; + default: + break; + } + + /* Figure out how far we should go */ + rnd_bits = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length < (size_t)pc->lower_bound) { + return result_skipped; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_bits = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_bits = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_bits from the table */ + if(rnd_bits < max_length) { + break; + } + /* Fall through */ + default: + rnd_bits = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_bits = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_bits = asn_random_between(0, max_length - 1); + } + } else { +#else + if(!constraints) constraints = &td->encoding_constraints; + { +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + if(rnd_bits >= max_length) { + rnd_bits = asn_random_between(0, max_length - 1); + } + } + + rnd_len = (rnd_bits + 7) / 8; + buf = CALLOC(1, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[rnd_len]; + + for(b = buf; b < bend; b++) { + *(uint8_t *)b = asn_random_between(0, 255); + } + *b = 0; /* Zero-terminate just in case. */ + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = rnd_len; + st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; + if(st->bits_unused) { + assert(st->size > 0); + st->buf[st->size-1] &= 0xff << st->bits_unused; + } + + result_ok.length = st->size; + return result_ok; +} diff --git a/src/tmx/Asn_J2735/src/r2020/BIT_STRING_uper.c b/src/tmx/Asn_J2735/src/r2020/BIT_STRING_uper.c new file mode 100644 index 000000000..1c9ab5a65 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BIT_STRING_uper.c @@ -0,0 +1,244 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { + APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; + +asn_dec_rval_t +BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + + (void)opt_codec_ctx; + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + + if(specs->subvariant != ASN_OSUBV_BIT) { + ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); + RETURN(RC_FAIL); + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + st->size = (csiz->upper_bound + 7) >> 3; + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += csiz->upper_bound; + st->buf[st->size] = 0; + st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + BIT_STRING_t compact_bstr; /* Do not modify this directly! */ + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + size_t size_in_bits; + const uint8_t *buf; + int ret; + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(specs->subvariant == ASN_OSUBV_BIT) { + if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + /* Figure out the size without the trailing bits */ + st = BIT_STRING__compactify(st, &compact_bstr); + size_in_bits = 8 * st->size - st->bits_unused; + + ASN_DEBUG( + "Encoding %s into %" ASN_PRI_SIZE " bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_bits > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; + ASN_DEBUG( + "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " + "value %" ASN_PRI_SSIZE "", + st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, + add_trailer, + add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); + ret = per_put_few_bits( + po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = per_put_many_bits(po, st->buf, size_in_bits); + if(ret) ASN__ENCODE_FAILED; + if(add_trailer) { + static const uint8_t zeros[16]; + size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; + while(trailing_zero_bits > 0) { + if(trailing_zero_bits > 8 * sizeof(zeros)) { + ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); + trailing_zero_bits -= 8 * sizeof(zeros); + } else { + ret = per_put_many_bits(po, zeros, trailing_zero_bits); + trailing_zero_bits = 0; + } + if(ret) ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + do { + int need_eom = 0; + ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); + + ret = per_put_many_bits(po, buf, maySave); + if(ret) ASN__ENCODE_FAILED; + + buf += maySave >> 3; + size_in_bits -= maySave; + assert(!(maySave & 0x07) || !size_in_bits); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_bits); + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/BIT_STRING_xer.c b/src/tmx/Asn_J2735/src/r2020/BIT_STRING_xer.c new file mode 100644 index 000000000..8b584cf35 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BIT_STRING_xer.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static const char *_bit_pattern[16] = { + "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", + "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" +}; + +asn_enc_rval_t +BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + char scratch[128]; + char *p = scratch; + char *scend = scratch + (sizeof(scratch) - 10); + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + int xcan = (flags & XER_F_CANONICAL); + uint8_t *buf; + uint8_t *end; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size - 1; /* Last byte is special */ + + /* + * Binary dump + */ + for(; buf < end; buf++) { + int v = *buf; + int nline = xcan?0:(((buf - st->buf) % 8) == 0); + if(p >= scend || nline) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + if(nline) ASN__TEXT_INDENT(1, ilevel); + } + memcpy(p + 0, _bit_pattern[v >> 4], 4); + memcpy(p + 4, _bit_pattern[v & 0x0f], 4); + p += 8; + } + + if(!xcan && ((buf - st->buf) % 8) == 0) + ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + + if(buf == end) { + int v = *buf; + int ubits = st->bits_unused; + int i; + for(i = 7; i >= ubits; i--) + *p++ = (v & (1 << i)) ? 0x31 : 0x30; + ASN__CALLBACK(scratch, p - scratch); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/src/tmx/Asn_J2735/src/r2020/BOOLEAN.c b/src/tmx/Asn_J2735/src/r2020/BOOLEAN.c new file mode 100644 index 000000000..1373a6f15 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BOOLEAN.c @@ -0,0 +1,128 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * BOOLEAN basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BOOLEAN_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_operation_t asn_OP_BOOLEAN = { + BOOLEAN_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + BOOLEAN_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + BOOLEAN_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + BOOLEAN_decode_ber, + BOOLEAN_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + BOOLEAN_decode_xer, + BOOLEAN_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + BOOLEAN_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + BOOLEAN_decode_oer, + BOOLEAN_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + BOOLEAN_decode_uper, /* Unaligned PER decoder */ + BOOLEAN_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + BOOLEAN_decode_aper, /* Aligned PER decoder */ + BOOLEAN_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + BOOLEAN_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BOOLEAN = { + "BOOLEAN", + "BOOLEAN", + &asn_OP_BOOLEAN, + asn_DEF_BOOLEAN_tags, + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + asn_DEF_BOOLEAN_tags, /* Same as above */ + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +void +BOOLEAN_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(BOOLEAN_t)); + break; + } + } +} + +int +BOOLEAN_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const BOOLEAN_t *a = aptr; + const BOOLEAN_t *b = bptr; + + (void)td; + + if(a && b) { + if(!*a == !*b) { /* TRUE can be encoded by any non-zero byte. */ + return 0; + } else if(!*a) { + return -1; + } else { + return 1; + } + } else if(!a) { + return -1; + } else { + return 1; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/BOOLEAN_aper.c b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_aper.c new file mode 100644 index 000000000..fe7a7e937 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_aper.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +BOOLEAN_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + (void)td; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: + *st = 1; + break; + case 0: + *st = 0; + break; + case -1: + default: + ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + +asn_enc_rval_t +BOOLEAN_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/BOOLEAN_ber.c b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_ber.c new file mode 100644 index 000000000..cec1055cf --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_ber.c @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Decode BOOLEAN type. + */ +asn_dec_rval_t +BOOLEAN_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **bool_value, + const void *buf_ptr, size_t size, int tag_mode) { + BOOLEAN_t *st = (BOOLEAN_t *)*bool_value; + asn_dec_rval_t rval; + ber_tlv_len_t length; + ber_tlv_len_t lidx; + + if(st == NULL) { + st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st))); + if(st == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("Boolean length is %d bytes", (int)length); + + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * Compute boolean value. + */ + for(*st = 0, lidx = 0; + (lidx < length) && *st == 0; lidx++) { + /* + * Very simple approach: read bytes until the end or + * value is already TRUE. + * BOOLEAN is not supposed to contain meaningful data anyway. + */ + *st |= ((const uint8_t *)buf_ptr)[lidx]; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d", + (long)rval.consumed, (long)length, + td->name, *st); + + return rval; +} + +asn_enc_rval_t +BOOLEAN_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + + erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb) { + uint8_t bool_value; + + bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */ + + if(cb(&bool_value, 1, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } + + erval.encoded += 1; + + ASN__ENCODED_OK(erval); +} diff --git a/src/tmx/Asn_J2735/src/r2020/BOOLEAN_oer.c b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_oer.c new file mode 100644 index 000000000..e925d3a42 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_oer.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +BOOLEAN_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 1, 0, 0 }; + const BOOLEAN_t *st = sptr; + uint8_t bool_value = *st ? 0xff : 0; /* 0xff mandated by OER */ + + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(cb(&bool_value, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} + +asn_dec_rval_t +BOOLEAN_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t ok = {RC_OK, 1}; + BOOLEAN_t *st; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(size < 1) { + ASN__DECODE_STARVED; + } + + if(!(st = *sptr)) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + *st = *(const uint8_t *)ptr; + + return ok; +} diff --git a/src/tmx/Asn_J2735/src/r2020/BOOLEAN_print.c b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_print.c new file mode 100644 index 000000000..a92a40df0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_print.c @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +BOOLEAN_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + const char *buf; + size_t buflen; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st) { + if(*st) { + buf = "TRUE"; + buflen = 4; + } else { + buf = "FALSE"; + buflen = 5; + } + } else { + buf = ""; + buflen = 8; + } + + return (cb(buf, buflen, app_key) < 0) ? -1 : 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/BOOLEAN_rfill.c b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_rfill.c new file mode 100644 index 000000000..5eb60193d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_rfill.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +BOOLEAN_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + BOOLEAN_t *st = *sptr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_CONSTRAINED) { + *st = asn_random_between(pc->lower_bound, pc->upper_bound); + return result_ok; + } + } +#else + if(!constraints) constraints = &td->encoding_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + + /* Simulate booleans that are sloppily set and biased. */ + switch(asn_random_between(0, 7)) { + case 0: + case 1: + case 2: + *st = 0; break; + case 3: *st = -1; break; + case 4: *st = 1; break; + case 5: *st = INT_MIN; break; + case 6: *st = INT_MAX; break; + default: + *st = asn_random_between(INT_MIN, INT_MAX); + break; + } + return result_ok; +} diff --git a/src/tmx/Asn_J2735/src/r2020/BOOLEAN_uper.c b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_uper.c new file mode 100644 index 000000000..dc9a64801 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_uper.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +BOOLEAN_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: *st = 1; break; + case 0: *st = 0; break; + case -1: default: ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + + +asn_enc_rval_t +BOOLEAN_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/BOOLEAN_xer.c b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_xer.c new file mode 100644 index 000000000..2d84d4a2b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BOOLEAN_xer.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +BOOLEAN__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + BOOLEAN_t *st = (BOOLEAN_t *)sptr; + const char *p = (const char *)chunk_buf; + + (void)td; + + if(chunk_size && p[0] == 0x3c /* '<' */) { + switch(xer_check_tag(chunk_buf, chunk_size, "false")) { + case XCT_BOTH: + /* "" */ + *st = 0; + break; + case XCT_UNKNOWN_BO: + if(xer_check_tag(chunk_buf, chunk_size, "true") != XCT_BOTH) + return XPBD_BROKEN_ENCODING; + /* "" */ + *st = 1; /* Or 0xff as in DER?.. */ + break; + default: + return XPBD_BROKEN_ENCODING; + } + return XPBD_BODY_CONSUMED; + } else { + return XPBD_BROKEN_ENCODING; + } +} + + +asn_dec_rval_t +BOOLEAN_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size, + BOOLEAN__xer_body_decode); +} + +asn_enc_rval_t +BOOLEAN_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + + (void)ilevel; + (void)flags; + + if(!st) ASN__ENCODE_FAILED; + + if(*st) { + ASN__CALLBACK("", 7); + } else { + ASN__CALLBACK("", 8); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/src/tmx/Asn_J2735/src/r2020/BSMcoreData.c b/src/tmx/Asn_J2735/src/r2020/BSMcoreData.c new file mode 100644 index 000000000..face6a111 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BSMcoreData.c @@ -0,0 +1,300 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "BSMcoreData.h" + +asn_TYPE_member_t asn_MBR_BSMcoreData_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, msgCnt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgCnt" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TemporaryID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, secMark), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "secMark" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, lat), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, Long), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "long" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, elev), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_Elevation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elev" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, accuracy), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PositionalAccuracy, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accuracy" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, transmission), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransmissionState, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "transmission" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, speed), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Speed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, heading), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Heading, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "heading" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, angle), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SteeringWheelAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "angle" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, accelSet), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationSet4Way, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accelSet" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, brakes), + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BrakeSystemStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "brakes" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMcoreData, size), + (ASN_TAG_CLASS_CONTEXT | (13 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleSize, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "size" + }, +}; +static const ber_tlv_tag_t asn_DEF_BSMcoreData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BSMcoreData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* msgCnt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* secMark */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* lat */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* long */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* elev */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* accuracy */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* transmission */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* speed */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* heading */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* angle */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* accelSet */ + { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* brakes */ + { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 } /* size */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BSMcoreData_specs_1 = { + sizeof(struct BSMcoreData), + offsetof(struct BSMcoreData, _asn_ctx), + asn_MAP_BSMcoreData_tag2el_1, + 14, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BSMcoreData = { + "BSMcoreData", + "BSMcoreData", + &asn_OP_SEQUENCE, + asn_DEF_BSMcoreData_tags_1, + sizeof(asn_DEF_BSMcoreData_tags_1) + /sizeof(asn_DEF_BSMcoreData_tags_1[0]), /* 1 */ + asn_DEF_BSMcoreData_tags_1, /* Same as above */ + sizeof(asn_DEF_BSMcoreData_tags_1) + /sizeof(asn_DEF_BSMcoreData_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_BSMcoreData_1, + 14, /* Elements count */ + &asn_SPC_BSMcoreData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/BasicSafetyMessage-addGrpCarma.c b/src/tmx/Asn_J2735/src/r2020/BasicSafetyMessage-addGrpCarma.c new file mode 100644 index 000000000..d4a4cadb1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BasicSafetyMessage-addGrpCarma.c @@ -0,0 +1,171 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpCarma" + * found in "J2735_201603_2022-11-21.asn" + * `asn1c -fcompound-names -D ../include/generated/` + */ + +#include "BasicSafetyMessage-addGrpCarma.h" + +static int +memb_routeDestinationPoints_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 8UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_routeDestinationPoints_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_routeDestinationPoints_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_routeDestinationPoints_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_routeDestinationPoints_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_routeDestinationPoints_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Position3D_addGrpCarma, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_routeDestinationPoints_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_routeDestinationPoints_specs_2 = { + sizeof(struct BasicSafetyMessage_addGrpCarma__routeDestinationPoints), + offsetof(struct BasicSafetyMessage_addGrpCarma__routeDestinationPoints, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_routeDestinationPoints_2 = { + "routeDestinationPoints", + "routeDestinationPoints", + &asn_OP_SEQUENCE_OF, + asn_DEF_routeDestinationPoints_tags_2, + sizeof(asn_DEF_routeDestinationPoints_tags_2) + /sizeof(asn_DEF_routeDestinationPoints_tags_2[0]) - 1, /* 1 */ + asn_DEF_routeDestinationPoints_tags_2, /* Same as above */ + sizeof(asn_DEF_routeDestinationPoints_tags_2) + /sizeof(asn_DEF_routeDestinationPoints_tags_2[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_routeDestinationPoints_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_routeDestinationPoints_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_routeDestinationPoints_2, + 1, /* Single element */ + &asn_SPC_routeDestinationPoints_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_BasicSafetyMessage_addGrpCarma_1[] = { + { ATF_POINTER, 1, offsetof(struct BasicSafetyMessage_addGrpCarma, routeDestinationPoints), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_routeDestinationPoints_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_routeDestinationPoints_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_routeDestinationPoints_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_routeDestinationPoints_constraint_1 + }, + 0, 0, /* No default value */ + "routeDestinationPoints" + }, +}; +static const int asn_MAP_BasicSafetyMessage_addGrpCarma_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_BasicSafetyMessage_addGrpCarma_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BasicSafetyMessage_addGrpCarma_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routeDestinationPoints */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BasicSafetyMessage_addGrpCarma_specs_1 = { + sizeof(struct BasicSafetyMessage_addGrpCarma), + offsetof(struct BasicSafetyMessage_addGrpCarma, _asn_ctx), + asn_MAP_BasicSafetyMessage_addGrpCarma_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_BasicSafetyMessage_addGrpCarma_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BasicSafetyMessage_addGrpCarma = { + "BasicSafetyMessage-addGrpCarma", + "BasicSafetyMessage-addGrpCarma", + &asn_OP_SEQUENCE, + asn_DEF_BasicSafetyMessage_addGrpCarma_tags_1, + sizeof(asn_DEF_BasicSafetyMessage_addGrpCarma_tags_1) + /sizeof(asn_DEF_BasicSafetyMessage_addGrpCarma_tags_1[0]), /* 1 */ + asn_DEF_BasicSafetyMessage_addGrpCarma_tags_1, /* Same as above */ + sizeof(asn_DEF_BasicSafetyMessage_addGrpCarma_tags_1) + /sizeof(asn_DEF_BasicSafetyMessage_addGrpCarma_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_BasicSafetyMessage_addGrpCarma_1, + 1, /* Elements count */ + &asn_SPC_BasicSafetyMessage_addGrpCarma_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/BasicSafetyMessage.c b/src/tmx/Asn_J2735/src/r2020/BasicSafetyMessage.c new file mode 100644 index 000000000..00c6e07e8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BasicSafetyMessage.c @@ -0,0 +1,310 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "BasicSafetyMessage.h" + +static int +memb_partII_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 8UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_partII_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_partII_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_partII_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_partII_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_partII_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BSMpartIIExtension, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_partII_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_partII_specs_3 = { + sizeof(struct BasicSafetyMessage__partII), + offsetof(struct BasicSafetyMessage__partII, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_partII_3 = { + "partII", + "partII", + &asn_OP_SEQUENCE_OF, + asn_DEF_partII_tags_3, + sizeof(asn_DEF_partII_tags_3) + /sizeof(asn_DEF_partII_tags_3[0]) - 1, /* 1 */ + asn_DEF_partII_tags_3, /* Same as above */ + sizeof(asn_DEF_partII_tags_3) + /sizeof(asn_DEF_partII_tags_3[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_partII_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_partII_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_partII_3, + 1, /* Single element */ + &asn_SPC_partII_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regional_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_BasicSafetyMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_5 = { + sizeof(struct BasicSafetyMessage__regional), + offsetof(struct BasicSafetyMessage__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_5 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_5, + sizeof(asn_DEF_regional_tags_5) + /sizeof(asn_DEF_regional_tags_5[0]) - 1, /* 1 */ + asn_DEF_regional_tags_5, /* Same as above */ + sizeof(asn_DEF_regional_tags_5) + /sizeof(asn_DEF_regional_tags_5[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_5, + 1, /* Single element */ + &asn_SPC_regional_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_BasicSafetyMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BasicSafetyMessage, coreData), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BSMcoreData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "coreData" + }, + { ATF_POINTER, 2, offsetof(struct BasicSafetyMessage, partII), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_partII_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_partII_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_partII_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_partII_constraint_1 + }, + 0, 0, /* No default value */ + "partII" + }, + { ATF_POINTER, 1, offsetof(struct BasicSafetyMessage, regional), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + 0, + &asn_DEF_regional_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_BasicSafetyMessage_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_BasicSafetyMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BasicSafetyMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* coreData */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* partII */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BasicSafetyMessage_specs_1 = { + sizeof(struct BasicSafetyMessage), + offsetof(struct BasicSafetyMessage, _asn_ctx), + asn_MAP_BasicSafetyMessage_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_BasicSafetyMessage_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BasicSafetyMessage = { + "BasicSafetyMessage", + "BasicSafetyMessage", + &asn_OP_SEQUENCE, + asn_DEF_BasicSafetyMessage_tags_1, + sizeof(asn_DEF_BasicSafetyMessage_tags_1) + /sizeof(asn_DEF_BasicSafetyMessage_tags_1[0]), /* 1 */ + asn_DEF_BasicSafetyMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_BasicSafetyMessage_tags_1) + /sizeof(asn_DEF_BasicSafetyMessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_BasicSafetyMessage_1, + 3, /* Elements count */ + &asn_SPC_BasicSafetyMessage_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/BasicVehicleClass.c b/src/tmx/Asn_J2735/src/r2020/BasicVehicleClass.c new file mode 100644 index 000000000..3b8f98632 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BasicVehicleClass.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "BasicVehicleClass.h" + +int +BasicVehicleClass_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_BasicVehicleClass_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_BasicVehicleClass_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_BasicVehicleClass_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BasicVehicleClass = { + "BasicVehicleClass", + "BasicVehicleClass", + &asn_OP_NativeInteger, + asn_DEF_BasicVehicleClass_tags_1, + sizeof(asn_DEF_BasicVehicleClass_tags_1) + /sizeof(asn_DEF_BasicVehicleClass_tags_1[0]), /* 1 */ + asn_DEF_BasicVehicleClass_tags_1, /* Same as above */ + sizeof(asn_DEF_BasicVehicleClass_tags_1) + /sizeof(asn_DEF_BasicVehicleClass_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_BasicVehicleClass_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_BasicVehicleClass_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BasicVehicleClass_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/BasicVehicleRole.c b/src/tmx/Asn_J2735/src/r2020/BasicVehicleRole.c new file mode 100644 index 000000000..ce64fea86 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BasicVehicleRole.c @@ -0,0 +1,112 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "BasicVehicleRole.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_BasicVehicleRole_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_BasicVehicleRole_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 22 } /* (0..22,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_BasicVehicleRole_value2enum_1[] = { + { 0, 12, "basicVehicle" }, + { 1, 15, "publicTransport" }, + { 2, 16, "specialTransport" }, + { 3, 14, "dangerousGoods" }, + { 4, 8, "roadWork" }, + { 5, 10, "roadRescue" }, + { 6, 9, "emergency" }, + { 7, 9, "safetyCar" }, + { 8, 12, "none-unknown" }, + { 9, 5, "truck" }, + { 10, 10, "motorcycle" }, + { 11, 14, "roadSideSource" }, + { 12, 6, "police" }, + { 13, 4, "fire" }, + { 14, 9, "ambulance" }, + { 15, 3, "dot" }, + { 16, 7, "transit" }, + { 17, 10, "slowMoving" }, + { 18, 7, "stopNgo" }, + { 19, 7, "cyclist" }, + { 20, 10, "pedestrian" }, + { 21, 12, "nonMotorized" }, + { 22, 8, "military" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_BasicVehicleRole_enum2value_1[] = { + 14, /* ambulance(14) */ + 0, /* basicVehicle(0) */ + 19, /* cyclist(19) */ + 3, /* dangerousGoods(3) */ + 15, /* dot(15) */ + 6, /* emergency(6) */ + 13, /* fire(13) */ + 22, /* military(22) */ + 10, /* motorcycle(10) */ + 21, /* nonMotorized(21) */ + 8, /* none-unknown(8) */ + 20, /* pedestrian(20) */ + 12, /* police(12) */ + 1, /* publicTransport(1) */ + 5, /* roadRescue(5) */ + 11, /* roadSideSource(11) */ + 4, /* roadWork(4) */ + 7, /* safetyCar(7) */ + 17, /* slowMoving(17) */ + 2, /* specialTransport(2) */ + 18, /* stopNgo(18) */ + 16, /* transit(16) */ + 9 /* truck(9) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_BasicVehicleRole_specs_1 = { + asn_MAP_BasicVehicleRole_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_BasicVehicleRole_enum2value_1, /* N => "tag"; sorted by N */ + 23, /* Number of elements in the maps */ + 24, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_BasicVehicleRole_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BasicVehicleRole = { + "BasicVehicleRole", + "BasicVehicleRole", + &asn_OP_NativeEnumerated, + asn_DEF_BasicVehicleRole_tags_1, + sizeof(asn_DEF_BasicVehicleRole_tags_1) + /sizeof(asn_DEF_BasicVehicleRole_tags_1[0]), /* 1 */ + asn_DEF_BasicVehicleRole_tags_1, /* Same as above */ + sizeof(asn_DEF_BasicVehicleRole_tags_1) + /sizeof(asn_DEF_BasicVehicleRole_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_BasicVehicleRole_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_BasicVehicleRole_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BasicVehicleRole_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/BrakeAppliedPressure.c b/src/tmx/Asn_J2735/src/r2020/BrakeAppliedPressure.c new file mode 100644 index 000000000..57ae99d8b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BrakeAppliedPressure.c @@ -0,0 +1,96 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "BrakeAppliedPressure.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_BrakeAppliedPressure_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_BrakeAppliedPressure_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_BrakeAppliedPressure_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 11, "minPressure" }, + { 2, 7, "bkLvl-2" }, + { 3, 7, "bkLvl-3" }, + { 4, 7, "bkLvl-4" }, + { 5, 7, "bkLvl-5" }, + { 6, 7, "bkLvl-6" }, + { 7, 7, "bkLvl-7" }, + { 8, 7, "bkLvl-8" }, + { 9, 7, "bkLvl-9" }, + { 10, 8, "bkLvl-10" }, + { 11, 8, "bkLvl-11" }, + { 12, 8, "bkLvl-12" }, + { 13, 8, "bkLvl-13" }, + { 14, 8, "bkLvl-14" }, + { 15, 11, "maxPressure" } +}; +static const unsigned int asn_MAP_BrakeAppliedPressure_enum2value_1[] = { + 10, /* bkLvl-10(10) */ + 11, /* bkLvl-11(11) */ + 12, /* bkLvl-12(12) */ + 13, /* bkLvl-13(13) */ + 14, /* bkLvl-14(14) */ + 2, /* bkLvl-2(2) */ + 3, /* bkLvl-3(3) */ + 4, /* bkLvl-4(4) */ + 5, /* bkLvl-5(5) */ + 6, /* bkLvl-6(6) */ + 7, /* bkLvl-7(7) */ + 8, /* bkLvl-8(8) */ + 9, /* bkLvl-9(9) */ + 15, /* maxPressure(15) */ + 1, /* minPressure(1) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_BrakeAppliedPressure_specs_1 = { + asn_MAP_BrakeAppliedPressure_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_BrakeAppliedPressure_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_BrakeAppliedPressure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BrakeAppliedPressure = { + "BrakeAppliedPressure", + "BrakeAppliedPressure", + &asn_OP_NativeEnumerated, + asn_DEF_BrakeAppliedPressure_tags_1, + sizeof(asn_DEF_BrakeAppliedPressure_tags_1) + /sizeof(asn_DEF_BrakeAppliedPressure_tags_1[0]), /* 1 */ + asn_DEF_BrakeAppliedPressure_tags_1, /* Same as above */ + sizeof(asn_DEF_BrakeAppliedPressure_tags_1) + /sizeof(asn_DEF_BrakeAppliedPressure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_BrakeAppliedPressure_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_BrakeAppliedPressure_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BrakeAppliedPressure_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/BrakeAppliedStatus.c b/src/tmx/Asn_J2735/src/r2020/BrakeAppliedStatus.c new file mode 100644 index 000000000..a0fbb6dc6 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BrakeAppliedStatus.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "BrakeAppliedStatus.h" + +int +BrakeAppliedStatus_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 5UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_BrakeAppliedStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + 5 /* (SIZE(5..5)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_BrakeAppliedStatus_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 5, 5 } /* (SIZE(5..5)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_BrakeAppliedStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BrakeAppliedStatus = { + "BrakeAppliedStatus", + "BrakeAppliedStatus", + &asn_OP_BIT_STRING, + asn_DEF_BrakeAppliedStatus_tags_1, + sizeof(asn_DEF_BrakeAppliedStatus_tags_1) + /sizeof(asn_DEF_BrakeAppliedStatus_tags_1[0]), /* 1 */ + asn_DEF_BrakeAppliedStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_BrakeAppliedStatus_tags_1) + /sizeof(asn_DEF_BrakeAppliedStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_BrakeAppliedStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_BrakeAppliedStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BrakeAppliedStatus_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/BrakeBoostApplied.c b/src/tmx/Asn_J2735/src/r2020/BrakeBoostApplied.c new file mode 100644 index 000000000..e6640fd59 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BrakeBoostApplied.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "BrakeBoostApplied.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_BrakeBoostApplied_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_BrakeBoostApplied_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_BrakeBoostApplied_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 3, "off" }, + { 2, 2, "on" } +}; +static const unsigned int asn_MAP_BrakeBoostApplied_enum2value_1[] = { + 1, /* off(1) */ + 2, /* on(2) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_BrakeBoostApplied_specs_1 = { + asn_MAP_BrakeBoostApplied_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_BrakeBoostApplied_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_BrakeBoostApplied_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BrakeBoostApplied = { + "BrakeBoostApplied", + "BrakeBoostApplied", + &asn_OP_NativeEnumerated, + asn_DEF_BrakeBoostApplied_tags_1, + sizeof(asn_DEF_BrakeBoostApplied_tags_1) + /sizeof(asn_DEF_BrakeBoostApplied_tags_1[0]), /* 1 */ + asn_DEF_BrakeBoostApplied_tags_1, /* Same as above */ + sizeof(asn_DEF_BrakeBoostApplied_tags_1) + /sizeof(asn_DEF_BrakeBoostApplied_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_BrakeBoostApplied_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_BrakeBoostApplied_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BrakeBoostApplied_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/BrakeSystemStatus.c b/src/tmx/Asn_J2735/src/r2020/BrakeSystemStatus.c new file mode 100644 index 000000000..cbaed8c1f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BrakeSystemStatus.c @@ -0,0 +1,156 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "BrakeSystemStatus.h" + +asn_TYPE_member_t asn_MBR_BrakeSystemStatus_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BrakeSystemStatus, wheelBrakes), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BrakeAppliedStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "wheelBrakes" + }, + { ATF_NOFLAGS, 0, offsetof(struct BrakeSystemStatus, traction), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TractionControlStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "traction" + }, + { ATF_NOFLAGS, 0, offsetof(struct BrakeSystemStatus, abs), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AntiLockBrakeStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "abs" + }, + { ATF_NOFLAGS, 0, offsetof(struct BrakeSystemStatus, scs), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StabilityControlStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "scs" + }, + { ATF_NOFLAGS, 0, offsetof(struct BrakeSystemStatus, brakeBoost), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BrakeBoostApplied, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "brakeBoost" + }, + { ATF_NOFLAGS, 0, offsetof(struct BrakeSystemStatus, auxBrakes), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AuxiliaryBrakeStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "auxBrakes" + }, +}; +static const ber_tlv_tag_t asn_DEF_BrakeSystemStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BrakeSystemStatus_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* wheelBrakes */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* traction */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* abs */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* scs */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* brakeBoost */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* auxBrakes */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BrakeSystemStatus_specs_1 = { + sizeof(struct BrakeSystemStatus), + offsetof(struct BrakeSystemStatus, _asn_ctx), + asn_MAP_BrakeSystemStatus_tag2el_1, + 6, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BrakeSystemStatus = { + "BrakeSystemStatus", + "BrakeSystemStatus", + &asn_OP_SEQUENCE, + asn_DEF_BrakeSystemStatus_tags_1, + sizeof(asn_DEF_BrakeSystemStatus_tags_1) + /sizeof(asn_DEF_BrakeSystemStatus_tags_1[0]), /* 1 */ + asn_DEF_BrakeSystemStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_BrakeSystemStatus_tags_1) + /sizeof(asn_DEF_BrakeSystemStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_BrakeSystemStatus_1, + 6, /* Elements count */ + &asn_SPC_BrakeSystemStatus_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/BumperHeight.c b/src/tmx/Asn_J2735/src/r2020/BumperHeight.c new file mode 100644 index 000000000..ae8bf8cb0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BumperHeight.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "BumperHeight.h" + +int +BumperHeight_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 127L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_BumperHeight_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_BumperHeight_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_BumperHeight_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BumperHeight = { + "BumperHeight", + "BumperHeight", + &asn_OP_NativeInteger, + asn_DEF_BumperHeight_tags_1, + sizeof(asn_DEF_BumperHeight_tags_1) + /sizeof(asn_DEF_BumperHeight_tags_1[0]), /* 1 */ + asn_DEF_BumperHeight_tags_1, /* Same as above */ + sizeof(asn_DEF_BumperHeight_tags_1) + /sizeof(asn_DEF_BumperHeight_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_BumperHeight_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_BumperHeight_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BumperHeight_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/BumperHeights.c b/src/tmx/Asn_J2735/src/r2020/BumperHeights.c new file mode 100644 index 000000000..3c1c7e6cb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/BumperHeights.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "BumperHeights.h" + +asn_TYPE_member_t asn_MBR_BumperHeights_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BumperHeights, front), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BumperHeight, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "front" + }, + { ATF_NOFLAGS, 0, offsetof(struct BumperHeights, rear), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BumperHeight, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rear" + }, +}; +static const ber_tlv_tag_t asn_DEF_BumperHeights_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BumperHeights_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* front */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rear */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BumperHeights_specs_1 = { + sizeof(struct BumperHeights), + offsetof(struct BumperHeights, _asn_ctx), + asn_MAP_BumperHeights_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BumperHeights = { + "BumperHeights", + "BumperHeights", + &asn_OP_SEQUENCE, + asn_DEF_BumperHeights_tags_1, + sizeof(asn_DEF_BumperHeights_tags_1) + /sizeof(asn_DEF_BumperHeights_tags_1[0]), /* 1 */ + asn_DEF_BumperHeights_tags_1, /* Same as above */ + sizeof(asn_DEF_BumperHeights_tags_1) + /sizeof(asn_DEF_BumperHeights_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_BumperHeights_1, + 2, /* Elements count */ + &asn_SPC_BumperHeights_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/CargoWeight.c b/src/tmx/Asn_J2735/src/r2020/CargoWeight.c new file mode 100644 index 000000000..21d846bcd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/CargoWeight.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "CargoWeight.h" + +int +CargoWeight_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 64255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CargoWeight_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..64255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CargoWeight_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 64255 } /* (0..64255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CargoWeight_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CargoWeight = { + "CargoWeight", + "CargoWeight", + &asn_OP_NativeInteger, + asn_DEF_CargoWeight_tags_1, + sizeof(asn_DEF_CargoWeight_tags_1) + /sizeof(asn_DEF_CargoWeight_tags_1[0]), /* 1 */ + asn_DEF_CargoWeight_tags_1, /* Same as above */ + sizeof(asn_DEF_CargoWeight_tags_1) + /sizeof(asn_DEF_CargoWeight_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CargoWeight_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CargoWeight_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CargoWeight_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Circle.c b/src/tmx/Asn_J2735/src/r2020/Circle.c new file mode 100644 index 000000000..797587b38 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Circle.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Circle.h" + +asn_TYPE_member_t asn_MBR_Circle_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Circle, center), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Position3D, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "center" + }, + { ATF_NOFLAGS, 0, offsetof(struct Circle, radius), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Radius_B12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "radius" + }, + { ATF_NOFLAGS, 0, offsetof(struct Circle, units), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DistanceUnits, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "units" + }, +}; +static const ber_tlv_tag_t asn_DEF_Circle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Circle_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* center */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* radius */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* units */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Circle_specs_1 = { + sizeof(struct Circle), + offsetof(struct Circle, _asn_ctx), + asn_MAP_Circle_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Circle = { + "Circle", + "Circle", + &asn_OP_SEQUENCE, + asn_DEF_Circle_tags_1, + sizeof(asn_DEF_Circle_tags_1) + /sizeof(asn_DEF_Circle_tags_1[0]), /* 1 */ + asn_DEF_Circle_tags_1, /* Same as above */ + sizeof(asn_DEF_Circle_tags_1) + /sizeof(asn_DEF_Circle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Circle_1, + 3, /* Elements count */ + &asn_SPC_Circle_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ClassificationConfidence.c b/src/tmx/Asn_J2735/src/r2020/ClassificationConfidence.c new file mode 100644 index 000000000..423fdca04 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ClassificationConfidence.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "ClassificationConfidence.h" + +int +ClassificationConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 101)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_ClassificationConfidence_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..101) */, + -1}; +asn_per_constraints_t asn_PER_type_ClassificationConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 101 } /* (0..101) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ClassificationConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ClassificationConfidence = { + "ClassificationConfidence", + "ClassificationConfidence", + &asn_OP_NativeInteger, + asn_DEF_ClassificationConfidence_tags_1, + sizeof(asn_DEF_ClassificationConfidence_tags_1) + /sizeof(asn_DEF_ClassificationConfidence_tags_1[0]), /* 1 */ + asn_DEF_ClassificationConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_ClassificationConfidence_tags_1) + /sizeof(asn_DEF_ClassificationConfidence_tags_1[0]), /* 1 */ + { &asn_OER_type_ClassificationConfidence_constr_1, &asn_PER_type_ClassificationConfidence_constr_1, ClassificationConfidence_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/CoarseHeading.c b/src/tmx/Asn_J2735/src/r2020/CoarseHeading.c new file mode 100644 index 000000000..34ceecfa8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/CoarseHeading.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "CoarseHeading.h" + +int +CoarseHeading_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 240L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CoarseHeading_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..240) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CoarseHeading_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 240 } /* (0..240) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CoarseHeading_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CoarseHeading = { + "CoarseHeading", + "CoarseHeading", + &asn_OP_NativeInteger, + asn_DEF_CoarseHeading_tags_1, + sizeof(asn_DEF_CoarseHeading_tags_1) + /sizeof(asn_DEF_CoarseHeading_tags_1[0]), /* 1 */ + asn_DEF_CoarseHeading_tags_1, /* Same as above */ + sizeof(asn_DEF_CoarseHeading_tags_1) + /sizeof(asn_DEF_CoarseHeading_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CoarseHeading_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CoarseHeading_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CoarseHeading_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/CodeWord.c b/src/tmx/Asn_J2735/src/r2020/CodeWord.c new file mode 100644 index 000000000..ec3eaee10 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/CodeWord.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "CodeWord.h" + +int +CodeWord_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CodeWord_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_CodeWord_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CodeWord_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CodeWord = { + "CodeWord", + "CodeWord", + &asn_OP_OCTET_STRING, + asn_DEF_CodeWord_tags_1, + sizeof(asn_DEF_CodeWord_tags_1) + /sizeof(asn_DEF_CodeWord_tags_1[0]), /* 1 */ + asn_DEF_CodeWord_tags_1, /* Same as above */ + sizeof(asn_DEF_CodeWord_tags_1) + /sizeof(asn_DEF_CodeWord_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CodeWord_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CodeWord_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CodeWord_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/CoefficientOfFriction.c b/src/tmx/Asn_J2735/src/r2020/CoefficientOfFriction.c new file mode 100644 index 000000000..f7fdefdd8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/CoefficientOfFriction.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "CoefficientOfFriction.h" + +int +CoefficientOfFriction_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 50L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CoefficientOfFriction_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..50) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CoefficientOfFriction_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 50 } /* (0..50) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CoefficientOfFriction_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CoefficientOfFriction = { + "CoefficientOfFriction", + "CoefficientOfFriction", + &asn_OP_NativeInteger, + asn_DEF_CoefficientOfFriction_tags_1, + sizeof(asn_DEF_CoefficientOfFriction_tags_1) + /sizeof(asn_DEF_CoefficientOfFriction_tags_1[0]), /* 1 */ + asn_DEF_CoefficientOfFriction_tags_1, /* Same as above */ + sizeof(asn_DEF_CoefficientOfFriction_tags_1) + /sizeof(asn_DEF_CoefficientOfFriction_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CoefficientOfFriction_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CoefficientOfFriction_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CoefficientOfFriction_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/CommonSafetyRequest.c b/src/tmx/Asn_J2735/src/r2020/CommonSafetyRequest.c new file mode 100644 index 000000000..ae496efb4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/CommonSafetyRequest.c @@ -0,0 +1,243 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "CommonSafetyRequest" + * found in "J2735-CommonSafetyRequest.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "CommonSafetyRequest.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_6[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_CommonSafetyRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_6[] = { + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_6 = { + sizeof(struct CommonSafetyRequest__regional), + offsetof(struct CommonSafetyRequest__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_6 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_6, + sizeof(asn_DEF_regional_tags_6) + /sizeof(asn_DEF_regional_tags_6[0]) - 1, /* 1 */ + asn_DEF_regional_tags_6, /* Same as above */ + sizeof(asn_DEF_regional_tags_6) + /sizeof(asn_DEF_regional_tags_6[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_6, + 1, /* Single element */ + &asn_SPC_regional_specs_6 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CommonSafetyRequest_1[] = { + { ATF_POINTER, 3, offsetof(struct CommonSafetyRequest, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_POINTER, 2, offsetof(struct CommonSafetyRequest, msgCnt), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgCnt" + }, + { ATF_POINTER, 1, offsetof(struct CommonSafetyRequest, id), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TemporaryID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CommonSafetyRequest, requests), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RequestedItemList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "requests" + }, + { ATF_POINTER, 1, offsetof(struct CommonSafetyRequest, regional), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + 0, + &asn_DEF_regional_6, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_CommonSafetyRequest_oms_1[] = { 0, 1, 2, 4 }; +static const ber_tlv_tag_t asn_DEF_CommonSafetyRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CommonSafetyRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* msgCnt */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* requests */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CommonSafetyRequest_specs_1 = { + sizeof(struct CommonSafetyRequest), + offsetof(struct CommonSafetyRequest, _asn_ctx), + asn_MAP_CommonSafetyRequest_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_CommonSafetyRequest_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CommonSafetyRequest = { + "CommonSafetyRequest", + "CommonSafetyRequest", + &asn_OP_SEQUENCE, + asn_DEF_CommonSafetyRequest_tags_1, + sizeof(asn_DEF_CommonSafetyRequest_tags_1) + /sizeof(asn_DEF_CommonSafetyRequest_tags_1[0]), /* 1 */ + asn_DEF_CommonSafetyRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_CommonSafetyRequest_tags_1) + /sizeof(asn_DEF_CommonSafetyRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CommonSafetyRequest_1, + 5, /* Elements count */ + &asn_SPC_CommonSafetyRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Common_Angle.c b/src/tmx/Asn_J2735/src/r2020/Common_Angle.c new file mode 100644 index 000000000..9f5bacafa --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Common_Angle.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Common_Angle.h" + +int +Common_Angle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 28800L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Common_Angle_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..28800) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Common_Angle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 28800 } /* (0..28800) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Common_Angle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Common_Angle = { + "Angle", + "Angle", + &asn_OP_NativeInteger, + asn_DEF_Common_Angle_tags_1, + sizeof(asn_DEF_Common_Angle_tags_1) + /sizeof(asn_DEF_Common_Angle_tags_1[0]), /* 1 */ + asn_DEF_Common_Angle_tags_1, /* Same as above */ + sizeof(asn_DEF_Common_Angle_tags_1) + /sizeof(asn_DEF_Common_Angle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Common_Angle_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Common_Angle_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Common_Angle_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Common_Elevation.c b/src/tmx/Asn_J2735/src/r2020/Common_Elevation.c new file mode 100644 index 000000000..a8c842517 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Common_Elevation.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Common_Elevation.h" + +int +Common_Elevation_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -4096L && value <= 61439L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Common_Elevation_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-4096..61439) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Common_Elevation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -4096, 61439 } /* (-4096..61439) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Common_Elevation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Common_Elevation = { + "Elevation", + "Elevation", + &asn_OP_NativeInteger, + asn_DEF_Common_Elevation_tags_1, + sizeof(asn_DEF_Common_Elevation_tags_1) + /sizeof(asn_DEF_Common_Elevation_tags_1[0]), /* 1 */ + asn_DEF_Common_Elevation_tags_1, /* Same as above */ + sizeof(asn_DEF_Common_Elevation_tags_1) + /sizeof(asn_DEF_Common_Elevation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Common_Elevation_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Common_Elevation_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Common_Elevation_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Common_MsgCount.c b/src/tmx/Asn_J2735/src/r2020/Common_MsgCount.c new file mode 100644 index 000000000..be20944d0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Common_MsgCount.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Common_MsgCount.h" + +int +Common_MsgCount_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 127L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Common_MsgCount_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Common_MsgCount_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Common_MsgCount_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Common_MsgCount = { + "MsgCount", + "MsgCount", + &asn_OP_NativeInteger, + asn_DEF_Common_MsgCount_tags_1, + sizeof(asn_DEF_Common_MsgCount_tags_1) + /sizeof(asn_DEF_Common_MsgCount_tags_1[0]), /* 1 */ + asn_DEF_Common_MsgCount_tags_1, /* Same as above */ + sizeof(asn_DEF_Common_MsgCount_tags_1) + /sizeof(asn_DEF_Common_MsgCount_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Common_MsgCount_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Common_MsgCount_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Common_MsgCount_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ComputedLane.c b/src/tmx/Asn_J2735/src/r2020/ComputedLane.c new file mode 100644 index 000000000..0078e0e38 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ComputedLane.c @@ -0,0 +1,449 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ComputedLane.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_offsetXaxis_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_offsetXaxis_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_offsetYaxis_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_offsetYaxis_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_12 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_12 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_offsetXaxis_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct ComputedLane__offsetXaxis, choice.small), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DrivenLineOffsetSm, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "small" + }, + { ATF_NOFLAGS, 0, offsetof(struct ComputedLane__offsetXaxis, choice.large), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DrivenLineOffsetLg, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "large" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_offsetXaxis_tag2el_3[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* small */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* large */ +}; +static asn_CHOICE_specifics_t asn_SPC_offsetXaxis_specs_3 = { + sizeof(struct ComputedLane__offsetXaxis), + offsetof(struct ComputedLane__offsetXaxis, _asn_ctx), + offsetof(struct ComputedLane__offsetXaxis, present), + sizeof(((struct ComputedLane__offsetXaxis *)0)->present), + asn_MAP_offsetXaxis_tag2el_3, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_offsetXaxis_3 = { + "offsetXaxis", + "offsetXaxis", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_offsetXaxis_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_offsetXaxis_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_offsetXaxis_3, + 2, /* Elements count */ + &asn_SPC_offsetXaxis_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_offsetYaxis_6[] = { + { ATF_NOFLAGS, 0, offsetof(struct ComputedLane__offsetYaxis, choice.small), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DrivenLineOffsetSm, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "small" + }, + { ATF_NOFLAGS, 0, offsetof(struct ComputedLane__offsetYaxis, choice.large), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DrivenLineOffsetLg, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "large" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_offsetYaxis_tag2el_6[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* small */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* large */ +}; +static asn_CHOICE_specifics_t asn_SPC_offsetYaxis_specs_6 = { + sizeof(struct ComputedLane__offsetYaxis), + offsetof(struct ComputedLane__offsetYaxis, _asn_ctx), + offsetof(struct ComputedLane__offsetYaxis, present), + sizeof(((struct ComputedLane__offsetYaxis *)0)->present), + asn_MAP_offsetYaxis_tag2el_6, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_offsetYaxis_6 = { + "offsetYaxis", + "offsetYaxis", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_offsetYaxis_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_offsetYaxis_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_offsetYaxis_6, + 2, /* Elements count */ + &asn_SPC_offsetYaxis_specs_6 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regional_12[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_ComputedLane, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_12[] = { + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_12 = { + sizeof(struct ComputedLane__regional), + offsetof(struct ComputedLane__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_12 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_12, + sizeof(asn_DEF_regional_tags_12) + /sizeof(asn_DEF_regional_tags_12[0]) - 1, /* 1 */ + asn_DEF_regional_tags_12, /* Same as above */ + sizeof(asn_DEF_regional_tags_12) + /sizeof(asn_DEF_regional_tags_12[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_12, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_12, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_12, + 1, /* Single element */ + &asn_SPC_regional_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ComputedLane_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ComputedLane, referenceLaneId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "referenceLaneId" + }, + { ATF_NOFLAGS, 0, offsetof(struct ComputedLane, offsetXaxis), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_offsetXaxis_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offsetXaxis" + }, + { ATF_NOFLAGS, 0, offsetof(struct ComputedLane, offsetYaxis), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_offsetYaxis_6, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offsetYaxis" + }, + { ATF_POINTER, 4, offsetof(struct ComputedLane, rotateXY), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_Angle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rotateXY" + }, + { ATF_POINTER, 3, offsetof(struct ComputedLane, scaleXaxis), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Scale_B12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "scaleXaxis" + }, + { ATF_POINTER, 2, offsetof(struct ComputedLane, scaleYaxis), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Scale_B12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "scaleYaxis" + }, + { ATF_POINTER, 1, offsetof(struct ComputedLane, regional), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + 0, + &asn_DEF_regional_12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_12, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_12, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_ComputedLane_oms_1[] = { 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_ComputedLane_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ComputedLane_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* referenceLaneId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* offsetXaxis */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* offsetYaxis */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rotateXY */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* scaleXaxis */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* scaleYaxis */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ComputedLane_specs_1 = { + sizeof(struct ComputedLane), + offsetof(struct ComputedLane, _asn_ctx), + asn_MAP_ComputedLane_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_ComputedLane_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ComputedLane = { + "ComputedLane", + "ComputedLane", + &asn_OP_SEQUENCE, + asn_DEF_ComputedLane_tags_1, + sizeof(asn_DEF_ComputedLane_tags_1) + /sizeof(asn_DEF_ComputedLane_tags_1[0]), /* 1 */ + asn_DEF_ComputedLane_tags_1, /* Same as above */ + sizeof(asn_DEF_ComputedLane_tags_1) + /sizeof(asn_DEF_ComputedLane_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ComputedLane_1, + 7, /* Elements count */ + &asn_SPC_ComputedLane_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Confidence.c b/src/tmx/Asn_J2735/src/r2020/Confidence.c new file mode 100644 index 000000000..b0e51583e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Confidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Confidence.h" + +int +Confidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 200L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Confidence_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..200) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Confidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 200 } /* (0..200) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Confidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Confidence = { + "Confidence", + "Confidence", + &asn_OP_NativeInteger, + asn_DEF_Confidence_tags_1, + sizeof(asn_DEF_Confidence_tags_1) + /sizeof(asn_DEF_Confidence_tags_1[0]), /* 1 */ + asn_DEF_Confidence_tags_1, /* Same as above */ + sizeof(asn_DEF_Confidence_tags_1) + /sizeof(asn_DEF_Confidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Confidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Confidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Confidence_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ConfidenceSet.c b/src/tmx/Asn_J2735/src/r2020/ConfidenceSet.c new file mode 100644 index 000000000..6bc8888d1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ConfidenceSet.c @@ -0,0 +1,176 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ConfidenceSet.h" + +asn_TYPE_member_t asn_MBR_ConfidenceSet_1[] = { + { ATF_POINTER, 7, offsetof(struct ConfidenceSet, accelConfidence), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelSteerYawRateConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accelConfidence" + }, + { ATF_POINTER, 6, offsetof(struct ConfidenceSet, speedConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedandHeadingandThrottleConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedConfidence" + }, + { ATF_POINTER, 5, offsetof(struct ConfidenceSet, timeConfidence), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeConfidence" + }, + { ATF_POINTER, 4, offsetof(struct ConfidenceSet, posConfidence), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PositionConfidenceSet, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "posConfidence" + }, + { ATF_POINTER, 3, offsetof(struct ConfidenceSet, steerConfidence), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SteeringWheelAngleConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "steerConfidence" + }, + { ATF_POINTER, 2, offsetof(struct ConfidenceSet, headingConfidence), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "headingConfidence" + }, + { ATF_POINTER, 1, offsetof(struct ConfidenceSet, throttleConfidence), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ThrottleConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "throttleConfidence" + }, +}; +static const int asn_MAP_ConfidenceSet_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_ConfidenceSet_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ConfidenceSet_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* accelConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* speedConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* timeConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* posConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* steerConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* headingConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* throttleConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ConfidenceSet_specs_1 = { + sizeof(struct ConfidenceSet), + offsetof(struct ConfidenceSet, _asn_ctx), + asn_MAP_ConfidenceSet_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_ConfidenceSet_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ConfidenceSet = { + "ConfidenceSet", + "ConfidenceSet", + &asn_OP_SEQUENCE, + asn_DEF_ConfidenceSet_tags_1, + sizeof(asn_DEF_ConfidenceSet_tags_1) + /sizeof(asn_DEF_ConfidenceSet_tags_1[0]), /* 1 */ + asn_DEF_ConfidenceSet_tags_1, /* Same as above */ + sizeof(asn_DEF_ConfidenceSet_tags_1) + /sizeof(asn_DEF_ConfidenceSet_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ConfidenceSet_1, + 7, /* Elements count */ + &asn_SPC_ConfidenceSet_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ConnectingLane.c b/src/tmx/Asn_J2735/src/r2020/ConnectingLane.c new file mode 100644 index 000000000..e6a32b48a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ConnectingLane.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ConnectingLane.h" + +asn_TYPE_member_t asn_MBR_ConnectingLane_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ConnectingLane, lane), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lane" + }, + { ATF_POINTER, 1, offsetof(struct ConnectingLane, maneuver), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AllowedManeuvers, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "maneuver" + }, +}; +static const int asn_MAP_ConnectingLane_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ConnectingLane_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ConnectingLane_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lane */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* maneuver */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ConnectingLane_specs_1 = { + sizeof(struct ConnectingLane), + offsetof(struct ConnectingLane, _asn_ctx), + asn_MAP_ConnectingLane_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ConnectingLane_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ConnectingLane = { + "ConnectingLane", + "ConnectingLane", + &asn_OP_SEQUENCE, + asn_DEF_ConnectingLane_tags_1, + sizeof(asn_DEF_ConnectingLane_tags_1) + /sizeof(asn_DEF_ConnectingLane_tags_1[0]), /* 1 */ + asn_DEF_ConnectingLane_tags_1, /* Same as above */ + sizeof(asn_DEF_ConnectingLane_tags_1) + /sizeof(asn_DEF_ConnectingLane_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ConnectingLane_1, + 2, /* Elements count */ + &asn_SPC_ConnectingLane_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Connection.c b/src/tmx/Asn_J2735/src/r2020/Connection.c new file mode 100644 index 000000000..da2855a7d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Connection.c @@ -0,0 +1,140 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Connection.h" + +asn_TYPE_member_t asn_MBR_Connection_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Connection, connectingLane), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ConnectingLane, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "connectingLane" + }, + { ATF_POINTER, 4, offsetof(struct Connection, remoteIntersection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntersectionReferenceID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "remoteIntersection" + }, + { ATF_POINTER, 3, offsetof(struct Connection, signalGroup), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignalGroupID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "signalGroup" + }, + { ATF_POINTER, 2, offsetof(struct Connection, userClass), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RestrictionClassID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "userClass" + }, + { ATF_POINTER, 1, offsetof(struct Connection, connectionID), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneConnectionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "connectionID" + }, +}; +static const int asn_MAP_Connection_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_Connection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Connection_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* connectingLane */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* remoteIntersection */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* signalGroup */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* userClass */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* connectionID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Connection_specs_1 = { + sizeof(struct Connection), + offsetof(struct Connection, _asn_ctx), + asn_MAP_Connection_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_Connection_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Connection = { + "Connection", + "Connection", + &asn_OP_SEQUENCE, + asn_DEF_Connection_tags_1, + sizeof(asn_DEF_Connection_tags_1) + /sizeof(asn_DEF_Connection_tags_1[0]), /* 1 */ + asn_DEF_Connection_tags_1, /* Same as above */ + sizeof(asn_DEF_Connection_tags_1) + /sizeof(asn_DEF_Connection_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Connection_1, + 5, /* Elements count */ + &asn_SPC_Connection_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ConnectionManeuverAssist-addGrpC.c b/src/tmx/Asn_J2735/src/r2020/ConnectionManeuverAssist-addGrpC.c new file mode 100644 index 000000000..936177f07 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ConnectionManeuverAssist-addGrpC.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ConnectionManeuverAssist-addGrpC.h" + +asn_TYPE_member_t asn_MBR_ConnectionManeuverAssist_addGrpC_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ConnectionManeuverAssist_addGrpC, vehicleToLanePositions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleToLanePositionList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleToLanePositions" + }, + { ATF_POINTER, 1, offsetof(struct ConnectionManeuverAssist_addGrpC, rsuDistanceFromAnchor), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NodeOffsetPointXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rsuDistanceFromAnchor" + }, +}; +static const int asn_MAP_ConnectionManeuverAssist_addGrpC_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ConnectionManeuverAssist_addGrpC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ConnectionManeuverAssist_addGrpC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vehicleToLanePositions */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rsuDistanceFromAnchor */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ConnectionManeuverAssist_addGrpC_specs_1 = { + sizeof(struct ConnectionManeuverAssist_addGrpC), + offsetof(struct ConnectionManeuverAssist_addGrpC, _asn_ctx), + asn_MAP_ConnectionManeuverAssist_addGrpC_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ConnectionManeuverAssist_addGrpC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ConnectionManeuverAssist_addGrpC = { + "ConnectionManeuverAssist-addGrpC", + "ConnectionManeuverAssist-addGrpC", + &asn_OP_SEQUENCE, + asn_DEF_ConnectionManeuverAssist_addGrpC_tags_1, + sizeof(asn_DEF_ConnectionManeuverAssist_addGrpC_tags_1) + /sizeof(asn_DEF_ConnectionManeuverAssist_addGrpC_tags_1[0]), /* 1 */ + asn_DEF_ConnectionManeuverAssist_addGrpC_tags_1, /* Same as above */ + sizeof(asn_DEF_ConnectionManeuverAssist_addGrpC_tags_1) + /sizeof(asn_DEF_ConnectionManeuverAssist_addGrpC_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ConnectionManeuverAssist_addGrpC_1, + 2, /* Elements count */ + &asn_SPC_ConnectionManeuverAssist_addGrpC_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ConnectionManeuverAssist.c b/src/tmx/Asn_J2735/src/r2020/ConnectionManeuverAssist.c new file mode 100644 index 000000000..d334707c1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ConnectionManeuverAssist.c @@ -0,0 +1,261 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ConnectionManeuverAssist.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_ConnectionManeuverAssist, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_7 = { + sizeof(struct ConnectionManeuverAssist__regional), + offsetof(struct ConnectionManeuverAssist__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_7 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_7, + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]) - 1, /* 1 */ + asn_DEF_regional_tags_7, /* Same as above */ + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_7, + 1, /* Single element */ + &asn_SPC_regional_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ConnectionManeuverAssist_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ConnectionManeuverAssist, connectionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneConnectionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "connectionID" + }, + { ATF_POINTER, 5, offsetof(struct ConnectionManeuverAssist, queueLength), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ZoneLength, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "queueLength" + }, + { ATF_POINTER, 4, offsetof(struct ConnectionManeuverAssist, availableStorageLength), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ZoneLength, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "availableStorageLength" + }, + { ATF_POINTER, 3, offsetof(struct ConnectionManeuverAssist, waitOnStop), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WaitOnStopline, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "waitOnStop" + }, + { ATF_POINTER, 2, offsetof(struct ConnectionManeuverAssist, pedBicycleDetect), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PedestrianBicycleDetect, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pedBicycleDetect" + }, + { ATF_POINTER, 1, offsetof(struct ConnectionManeuverAssist, regional), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + 0, + &asn_DEF_regional_7, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_ConnectionManeuverAssist_oms_1[] = { 1, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_ConnectionManeuverAssist_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ConnectionManeuverAssist_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* connectionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* queueLength */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* availableStorageLength */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* waitOnStop */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pedBicycleDetect */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ConnectionManeuverAssist_specs_1 = { + sizeof(struct ConnectionManeuverAssist), + offsetof(struct ConnectionManeuverAssist, _asn_ctx), + asn_MAP_ConnectionManeuverAssist_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_ConnectionManeuverAssist_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ConnectionManeuverAssist = { + "ConnectionManeuverAssist", + "ConnectionManeuverAssist", + &asn_OP_SEQUENCE, + asn_DEF_ConnectionManeuverAssist_tags_1, + sizeof(asn_DEF_ConnectionManeuverAssist_tags_1) + /sizeof(asn_DEF_ConnectionManeuverAssist_tags_1[0]), /* 1 */ + asn_DEF_ConnectionManeuverAssist_tags_1, /* Same as above */ + sizeof(asn_DEF_ConnectionManeuverAssist_tags_1) + /sizeof(asn_DEF_ConnectionManeuverAssist_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ConnectionManeuverAssist_1, + 6, /* Elements count */ + &asn_SPC_ConnectionManeuverAssist_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ConnectsToList.c b/src/tmx/Asn_J2735/src/r2020/ConnectsToList.c new file mode 100644 index 000000000..02e41d343 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ConnectsToList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ConnectsToList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ConnectsToList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ConnectsToList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_ConnectsToList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Connection, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ConnectsToList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ConnectsToList_specs_1 = { + sizeof(struct ConnectsToList), + offsetof(struct ConnectsToList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ConnectsToList = { + "ConnectsToList", + "ConnectsToList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ConnectsToList_tags_1, + sizeof(asn_DEF_ConnectsToList_tags_1) + /sizeof(asn_DEF_ConnectsToList_tags_1[0]), /* 1 */ + asn_DEF_ConnectsToList_tags_1, /* Same as above */ + sizeof(asn_DEF_ConnectsToList_tags_1) + /sizeof(asn_DEF_ConnectsToList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ConnectsToList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ConnectsToList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ConnectsToList_1, + 1, /* Single element */ + &asn_SPC_ConnectsToList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Count.c b/src/tmx/Asn_J2735/src/r2020/Count.c new file mode 100644 index 000000000..b8fca8cbd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Count.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Count.h" + +int +Count_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 32L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Count_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..32) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_Count_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 32 } /* (0..32) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Count_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Count = { + "Count", + "Count", + &asn_OP_NativeInteger, + asn_DEF_Count_tags_1, + sizeof(asn_DEF_Count_tags_1) + /sizeof(asn_DEF_Count_tags_1[0]), /* 1 */ + asn_DEF_Count_tags_1, /* Same as above */ + sizeof(asn_DEF_Count_tags_1) + /sizeof(asn_DEF_Count_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Count_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Count_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Count_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DDate.c b/src/tmx/Asn_J2735/src/r2020/DDate.c new file mode 100644 index 000000000..277948836 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DDate.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DDate.h" + +static asn_TYPE_member_t asn_MBR_DDate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DDate, year), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "year" + }, + { ATF_NOFLAGS, 0, offsetof(struct DDate, month), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DMonth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "month" + }, + { ATF_NOFLAGS, 0, offsetof(struct DDate, day), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DDay, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "day" + }, +}; +static const ber_tlv_tag_t asn_DEF_DDate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DDate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* year */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* month */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* day */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_DDate_specs_1 = { + sizeof(struct DDate), + offsetof(struct DDate, _asn_ctx), + asn_MAP_DDate_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DDate = { + "DDate", + "DDate", + &asn_OP_SEQUENCE, + asn_DEF_DDate_tags_1, + sizeof(asn_DEF_DDate_tags_1) + /sizeof(asn_DEF_DDate_tags_1[0]), /* 1 */ + asn_DEF_DDate_tags_1, /* Same as above */ + sizeof(asn_DEF_DDate_tags_1) + /sizeof(asn_DEF_DDate_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_DDate_1, + 3, /* Elements count */ + &asn_SPC_DDate_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DDateTime.c b/src/tmx/Asn_J2735/src/r2020/DDateTime.c new file mode 100644 index 000000000..24f8bf649 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DDateTime.c @@ -0,0 +1,176 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DDateTime.h" + +asn_TYPE_member_t asn_MBR_DDateTime_1[] = { + { ATF_POINTER, 7, offsetof(struct DDateTime, year), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "year" + }, + { ATF_POINTER, 6, offsetof(struct DDateTime, month), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DMonth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "month" + }, + { ATF_POINTER, 5, offsetof(struct DDateTime, day), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DDay, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "day" + }, + { ATF_POINTER, 4, offsetof(struct DDateTime, hour), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DHour, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hour" + }, + { ATF_POINTER, 3, offsetof(struct DDateTime, minute), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DMinute, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "minute" + }, + { ATF_POINTER, 2, offsetof(struct DDateTime, second), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "second" + }, + { ATF_POINTER, 1, offsetof(struct DDateTime, offset), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DOffset, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offset" + }, +}; +static const int asn_MAP_DDateTime_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_DDateTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DDateTime_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* year */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* month */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* day */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* hour */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* minute */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* second */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* offset */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DDateTime_specs_1 = { + sizeof(struct DDateTime), + offsetof(struct DDateTime, _asn_ctx), + asn_MAP_DDateTime_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_DDateTime_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DDateTime = { + "DDateTime", + "DDateTime", + &asn_OP_SEQUENCE, + asn_DEF_DDateTime_tags_1, + sizeof(asn_DEF_DDateTime_tags_1) + /sizeof(asn_DEF_DDateTime_tags_1[0]), /* 1 */ + asn_DEF_DDateTime_tags_1, /* Same as above */ + sizeof(asn_DEF_DDateTime_tags_1) + /sizeof(asn_DEF_DDateTime_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_DDateTime_1, + 7, /* Elements count */ + &asn_SPC_DDateTime_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DDay.c b/src/tmx/Asn_J2735/src/r2020/DDay.c new file mode 100644 index 000000000..40c71af80 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DDay.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DDay.h" + +int +DDay_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 31L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DDay_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..31) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DDay_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 31 } /* (0..31) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DDay_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DDay = { + "DDay", + "DDay", + &asn_OP_NativeInteger, + asn_DEF_DDay_tags_1, + sizeof(asn_DEF_DDay_tags_1) + /sizeof(asn_DEF_DDay_tags_1[0]), /* 1 */ + asn_DEF_DDay_tags_1, /* Same as above */ + sizeof(asn_DEF_DDay_tags_1) + /sizeof(asn_DEF_DDay_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DDay_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DDay_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DDay_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DFullTime.c b/src/tmx/Asn_J2735/src/r2020/DFullTime.c new file mode 100644 index 000000000..5df7c4281 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DFullTime.c @@ -0,0 +1,138 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DFullTime.h" + +static asn_TYPE_member_t asn_MBR_DFullTime_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DFullTime, year), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "year" + }, + { ATF_NOFLAGS, 0, offsetof(struct DFullTime, month), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DMonth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "month" + }, + { ATF_NOFLAGS, 0, offsetof(struct DFullTime, day), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DDay, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "day" + }, + { ATF_NOFLAGS, 0, offsetof(struct DFullTime, hour), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DHour, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hour" + }, + { ATF_NOFLAGS, 0, offsetof(struct DFullTime, minute), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DMinute, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "minute" + }, +}; +static const ber_tlv_tag_t asn_DEF_DFullTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DFullTime_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* year */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* month */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* day */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* hour */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* minute */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_DFullTime_specs_1 = { + sizeof(struct DFullTime), + offsetof(struct DFullTime, _asn_ctx), + asn_MAP_DFullTime_tag2el_1, + 5, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DFullTime = { + "DFullTime", + "DFullTime", + &asn_OP_SEQUENCE, + asn_DEF_DFullTime_tags_1, + sizeof(asn_DEF_DFullTime_tags_1) + /sizeof(asn_DEF_DFullTime_tags_1[0]), /* 1 */ + asn_DEF_DFullTime_tags_1, /* Same as above */ + sizeof(asn_DEF_DFullTime_tags_1) + /sizeof(asn_DEF_DFullTime_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_DFullTime_1, + 5, /* Elements count */ + &asn_SPC_DFullTime_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DHour.c b/src/tmx/Asn_J2735/src/r2020/DHour.c new file mode 100644 index 000000000..e09286e01 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DHour.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DHour.h" + +int +DHour_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 31L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DHour_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..31) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DHour_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 31 } /* (0..31) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DHour_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DHour = { + "DHour", + "DHour", + &asn_OP_NativeInteger, + asn_DEF_DHour_tags_1, + sizeof(asn_DEF_DHour_tags_1) + /sizeof(asn_DEF_DHour_tags_1[0]), /* 1 */ + asn_DEF_DHour_tags_1, /* Same as above */ + sizeof(asn_DEF_DHour_tags_1) + /sizeof(asn_DEF_DHour_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DHour_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DHour_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DHour_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DMinute.c b/src/tmx/Asn_J2735/src/r2020/DMinute.c new file mode 100644 index 000000000..c9852f314 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DMinute.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DMinute.h" + +int +DMinute_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 60L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DMinute_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..60) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DMinute_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 60 } /* (0..60) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DMinute_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DMinute = { + "DMinute", + "DMinute", + &asn_OP_NativeInteger, + asn_DEF_DMinute_tags_1, + sizeof(asn_DEF_DMinute_tags_1) + /sizeof(asn_DEF_DMinute_tags_1[0]), /* 1 */ + asn_DEF_DMinute_tags_1, /* Same as above */ + sizeof(asn_DEF_DMinute_tags_1) + /sizeof(asn_DEF_DMinute_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DMinute_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DMinute_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DMinute_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DMonth.c b/src/tmx/Asn_J2735/src/r2020/DMonth.c new file mode 100644 index 000000000..4eecab9b4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DMonth.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DMonth.h" + +int +DMonth_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 12L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DMonth_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..12) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DMonth_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 12 } /* (0..12) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DMonth_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DMonth = { + "DMonth", + "DMonth", + &asn_OP_NativeInteger, + asn_DEF_DMonth_tags_1, + sizeof(asn_DEF_DMonth_tags_1) + /sizeof(asn_DEF_DMonth_tags_1[0]), /* 1 */ + asn_DEF_DMonth_tags_1, /* Same as above */ + sizeof(asn_DEF_DMonth_tags_1) + /sizeof(asn_DEF_DMonth_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DMonth_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DMonth_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DMonth_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DMonthDay.c b/src/tmx/Asn_J2735/src/r2020/DMonthDay.c new file mode 100644 index 000000000..3b21abbdb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DMonthDay.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DMonthDay.h" + +static asn_TYPE_member_t asn_MBR_DMonthDay_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DMonthDay, month), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DMonth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "month" + }, + { ATF_NOFLAGS, 0, offsetof(struct DMonthDay, day), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DDay, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "day" + }, +}; +static const ber_tlv_tag_t asn_DEF_DMonthDay_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DMonthDay_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* month */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* day */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_DMonthDay_specs_1 = { + sizeof(struct DMonthDay), + offsetof(struct DMonthDay, _asn_ctx), + asn_MAP_DMonthDay_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DMonthDay = { + "DMonthDay", + "DMonthDay", + &asn_OP_SEQUENCE, + asn_DEF_DMonthDay_tags_1, + sizeof(asn_DEF_DMonthDay_tags_1) + /sizeof(asn_DEF_DMonthDay_tags_1[0]), /* 1 */ + asn_DEF_DMonthDay_tags_1, /* Same as above */ + sizeof(asn_DEF_DMonthDay_tags_1) + /sizeof(asn_DEF_DMonthDay_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_DMonthDay_1, + 2, /* Elements count */ + &asn_SPC_DMonthDay_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DOffset.c b/src/tmx/Asn_J2735/src/r2020/DOffset.c new file mode 100644 index 000000000..456031e74 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DOffset.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DOffset.h" + +int +DOffset_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -840L && value <= 840L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DOffset_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-840..840) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DOffset_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, -840, 840 } /* (-840..840) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DOffset_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DOffset = { + "DOffset", + "DOffset", + &asn_OP_NativeInteger, + asn_DEF_DOffset_tags_1, + sizeof(asn_DEF_DOffset_tags_1) + /sizeof(asn_DEF_DOffset_tags_1[0]), /* 1 */ + asn_DEF_DOffset_tags_1, /* Same as above */ + sizeof(asn_DEF_DOffset_tags_1) + /sizeof(asn_DEF_DOffset_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DOffset_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DOffset_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DOffset_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DSRC_DayOfWeek.c b/src/tmx/Asn_J2735/src/r2020/DSRC_DayOfWeek.c new file mode 100644 index 000000000..d2958927b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DSRC_DayOfWeek.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "DSRC_DayOfWeek.h" + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_DSRC_DayOfWeek_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DSRC_DayOfWeek = { + "DayOfWeek", + "DayOfWeek", + &asn_OP_BIT_STRING, + asn_DEF_DSRC_DayOfWeek_tags_1, + sizeof(asn_DEF_DSRC_DayOfWeek_tags_1) + /sizeof(asn_DEF_DSRC_DayOfWeek_tags_1[0]), /* 1 */ + asn_DEF_DSRC_DayOfWeek_tags_1, /* Same as above */ + sizeof(asn_DEF_DSRC_DayOfWeek_tags_1) + /sizeof(asn_DEF_DSRC_DayOfWeek_tags_1[0]), /* 1 */ + { 0, 0, BIT_STRING_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DSRCmsgID.c b/src/tmx/Asn_J2735/src/r2020/DSRCmsgID.c new file mode 100644 index 000000000..08e551a37 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DSRCmsgID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MessageFrame" + * found in "J2735-MessageFrame.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DSRCmsgID.h" + +int +DSRCmsgID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DSRCmsgID_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DSRCmsgID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32767 } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DSRCmsgID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DSRCmsgID = { + "DSRCmsgID", + "DSRCmsgID", + &asn_OP_NativeInteger, + asn_DEF_DSRCmsgID_tags_1, + sizeof(asn_DEF_DSRCmsgID_tags_1) + /sizeof(asn_DEF_DSRCmsgID_tags_1[0]), /* 1 */ + asn_DEF_DSRCmsgID_tags_1, /* Same as above */ + sizeof(asn_DEF_DSRCmsgID_tags_1) + /sizeof(asn_DEF_DSRCmsgID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DSRCmsgID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DSRCmsgID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DSRCmsgID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DSecond.c b/src/tmx/Asn_J2735/src/r2020/DSecond.c new file mode 100644 index 000000000..8fa6c30ba --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DSecond.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DSecond.h" + +int +DSecond_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DSecond_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DSecond_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DSecond_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DSecond = { + "DSecond", + "DSecond", + &asn_OP_NativeInteger, + asn_DEF_DSecond_tags_1, + sizeof(asn_DEF_DSecond_tags_1) + /sizeof(asn_DEF_DSecond_tags_1[0]), /* 1 */ + asn_DEF_DSecond_tags_1, /* Same as above */ + sizeof(asn_DEF_DSecond_tags_1) + /sizeof(asn_DEF_DSecond_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DSecond_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DSecond_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DSecond_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DTime.c b/src/tmx/Asn_J2735/src/r2020/DTime.c new file mode 100644 index 000000000..aeaa3a7cd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DTime.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DTime.h" + +static asn_TYPE_member_t asn_MBR_DTime_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DTime, hour), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DHour, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hour" + }, + { ATF_NOFLAGS, 0, offsetof(struct DTime, minute), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DMinute, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "minute" + }, + { ATF_NOFLAGS, 0, offsetof(struct DTime, second), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "second" + }, + { ATF_POINTER, 1, offsetof(struct DTime, offset), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DOffset, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offset" + }, +}; +static const int asn_MAP_DTime_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_DTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DTime_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hour */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* minute */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* second */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* offset */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_DTime_specs_1 = { + sizeof(struct DTime), + offsetof(struct DTime, _asn_ctx), + asn_MAP_DTime_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_DTime_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DTime = { + "DTime", + "DTime", + &asn_OP_SEQUENCE, + asn_DEF_DTime_tags_1, + sizeof(asn_DEF_DTime_tags_1) + /sizeof(asn_DEF_DTime_tags_1[0]), /* 1 */ + asn_DEF_DTime_tags_1, /* Same as above */ + sizeof(asn_DEF_DTime_tags_1) + /sizeof(asn_DEF_DTime_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_DTime_1, + 4, /* Elements count */ + &asn_SPC_DTime_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DYear.c b/src/tmx/Asn_J2735/src/r2020/DYear.c new file mode 100644 index 000000000..5228db4ec --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DYear.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DYear.h" + +int +DYear_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 4095L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DYear_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..4095) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DYear_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DYear_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DYear = { + "DYear", + "DYear", + &asn_OP_NativeInteger, + asn_DEF_DYear_tags_1, + sizeof(asn_DEF_DYear_tags_1) + /sizeof(asn_DEF_DYear_tags_1[0]), /* 1 */ + asn_DEF_DYear_tags_1, /* Same as above */ + sizeof(asn_DEF_DYear_tags_1) + /sizeof(asn_DEF_DYear_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DYear_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DYear_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DYear_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DYearMonth.c b/src/tmx/Asn_J2735/src/r2020/DYearMonth.c new file mode 100644 index 000000000..b7ef4c13f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DYearMonth.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DYearMonth.h" + +static asn_TYPE_member_t asn_MBR_DYearMonth_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DYearMonth, year), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "year" + }, + { ATF_NOFLAGS, 0, offsetof(struct DYearMonth, month), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DMonth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "month" + }, +}; +static const ber_tlv_tag_t asn_DEF_DYearMonth_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DYearMonth_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* year */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* month */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_DYearMonth_specs_1 = { + sizeof(struct DYearMonth), + offsetof(struct DYearMonth, _asn_ctx), + asn_MAP_DYearMonth_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DYearMonth = { + "DYearMonth", + "DYearMonth", + &asn_OP_SEQUENCE, + asn_DEF_DYearMonth_tags_1, + sizeof(asn_DEF_DYearMonth_tags_1) + /sizeof(asn_DEF_DYearMonth_tags_1[0]), /* 1 */ + asn_DEF_DYearMonth_tags_1, /* Same as above */ + sizeof(asn_DEF_DYearMonth_tags_1) + /sizeof(asn_DEF_DYearMonth_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_DYearMonth_1, + 2, /* Elements count */ + &asn_SPC_DYearMonth_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DailySchedule.c b/src/tmx/Asn_J2735/src/r2020/DailySchedule.c new file mode 100644 index 000000000..4c6671ab3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DailySchedule.c @@ -0,0 +1,126 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "DailySchedule.h" + +static int +memb_begin_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1439)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_duration_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1439)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_begin_constr_2 CC_NOTUSED = { + { 2, 1 } /* (0..1439) */, + -1}; +static asn_per_constraints_t asn_PER_memb_begin_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 1439 } /* (0..1439) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_duration_constr_3 CC_NOTUSED = { + { 2, 1 } /* (0..1439) */, + -1}; +static asn_per_constraints_t asn_PER_memb_duration_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 1439 } /* (0..1439) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DailySchedule_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DailySchedule, begin), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_begin_constr_2, &asn_PER_memb_begin_constr_2, memb_begin_constraint_1 }, + 0, 0, /* No default value */ + "begin" + }, + { ATF_NOFLAGS, 0, offsetof(struct DailySchedule, duration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_duration_constr_3, &asn_PER_memb_duration_constr_3, memb_duration_constraint_1 }, + 0, 0, /* No default value */ + "duration" + }, +}; +static const ber_tlv_tag_t asn_DEF_DailySchedule_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DailySchedule_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* begin */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* duration */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DailySchedule_specs_1 = { + sizeof(struct DailySchedule), + offsetof(struct DailySchedule, _asn_ctx), + asn_MAP_DailySchedule_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DailySchedule = { + "DailySchedule", + "DailySchedule", + &asn_OP_SEQUENCE, + asn_DEF_DailySchedule_tags_1, + sizeof(asn_DEF_DailySchedule_tags_1) + /sizeof(asn_DEF_DailySchedule_tags_1[0]), /* 1 */ + asn_DEF_DailySchedule_tags_1, /* Same as above */ + sizeof(asn_DEF_DailySchedule_tags_1) + /sizeof(asn_DEF_DailySchedule_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DailySchedule_1, + 2, /* Elements count */ + &asn_SPC_DailySchedule_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DataParameters.c b/src/tmx/Asn_J2735/src/r2020/DataParameters.c new file mode 100644 index 000000000..2c565c611 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DataParameters.c @@ -0,0 +1,330 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DataParameters.h" + +static int check_permitted_alphabet_2(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127UL)) return -1; + } + return 0; +} + +static int check_permitted_alphabet_3(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127UL)) return -1; + } + return 0; +} + +static int check_permitted_alphabet_4(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127UL)) return -1; + } + return 0; +} + +static int check_permitted_alphabet_5(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127UL)) return -1; + } + return 0; +} + +static int +memb_processMethod_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 255UL) + && !check_permitted_alphabet_2(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_processAgency_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 255UL) + && !check_permitted_alphabet_3(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_lastCheckedDate_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 255UL) + && !check_permitted_alphabet_4(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_geoidUsed_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 255UL) + && !check_permitted_alphabet_5(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_processMethod_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_processMethod_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_processAgency_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_processAgency_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_lastCheckedDate_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_lastCheckedDate_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_geoidUsed_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_geoidUsed_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_DataParameters_1[] = { + { ATF_POINTER, 4, offsetof(struct DataParameters, processMethod), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IA5String, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_processMethod_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_processMethod_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_processMethod_constraint_1 + }, + 0, 0, /* No default value */ + "processMethod" + }, + { ATF_POINTER, 3, offsetof(struct DataParameters, processAgency), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IA5String, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_processAgency_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_processAgency_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_processAgency_constraint_1 + }, + 0, 0, /* No default value */ + "processAgency" + }, + { ATF_POINTER, 2, offsetof(struct DataParameters, lastCheckedDate), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IA5String, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_lastCheckedDate_constr_4, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_lastCheckedDate_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_lastCheckedDate_constraint_1 + }, + 0, 0, /* No default value */ + "lastCheckedDate" + }, + { ATF_POINTER, 1, offsetof(struct DataParameters, geoidUsed), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IA5String, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_geoidUsed_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_geoidUsed_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_geoidUsed_constraint_1 + }, + 0, 0, /* No default value */ + "geoidUsed" + }, +}; +static const int asn_MAP_DataParameters_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_DataParameters_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DataParameters_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* processMethod */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* processAgency */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* lastCheckedDate */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* geoidUsed */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DataParameters_specs_1 = { + sizeof(struct DataParameters), + offsetof(struct DataParameters, _asn_ctx), + asn_MAP_DataParameters_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_DataParameters_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DataParameters = { + "DataParameters", + "DataParameters", + &asn_OP_SEQUENCE, + asn_DEF_DataParameters_tags_1, + sizeof(asn_DEF_DataParameters_tags_1) + /sizeof(asn_DEF_DataParameters_tags_1[0]), /* 1 */ + asn_DEF_DataParameters_tags_1, /* Same as above */ + sizeof(asn_DEF_DataParameters_tags_1) + /sizeof(asn_DEF_DataParameters_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_DataParameters_1, + 4, /* Elements count */ + &asn_SPC_DataParameters_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Day.c b/src/tmx/Asn_J2735/src/r2020/Day.c new file mode 100644 index 000000000..c73590bb4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Day.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Day.h" + +int +Day_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Day_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Day_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Day_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Day = { + "Day", + "Day", + &asn_OP_NativeInteger, + asn_DEF_Day_tags_1, + sizeof(asn_DEF_Day_tags_1) + /sizeof(asn_DEF_Day_tags_1[0]), /* 1 */ + asn_DEF_Day_tags_1, /* Same as above */ + sizeof(asn_DEF_Day_tags_1) + /sizeof(asn_DEF_Day_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Day_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Day_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Day_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DayOfWeek.c b/src/tmx/Asn_J2735/src/r2020/DayOfWeek.c new file mode 100644 index 000000000..7fb30c80b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DayOfWeek.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DayOfWeek.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DayOfWeek_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DayOfWeek_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_DayOfWeek_value2enum_1[] = { + { 0, 7, "unknown" }, + { 1, 6, "monday" }, + { 2, 7, "tuesday" }, + { 3, 9, "wednesday" }, + { 4, 8, "thursday" }, + { 5, 6, "friday" }, + { 6, 8, "saturday" }, + { 7, 6, "sunday" } +}; +static const unsigned int asn_MAP_DayOfWeek_enum2value_1[] = { + 5, /* friday(5) */ + 1, /* monday(1) */ + 6, /* saturday(6) */ + 7, /* sunday(7) */ + 4, /* thursday(4) */ + 2, /* tuesday(2) */ + 0, /* unknown(0) */ + 3 /* wednesday(3) */ +}; +const asn_INTEGER_specifics_t asn_SPC_DayOfWeek_specs_1 = { + asn_MAP_DayOfWeek_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_DayOfWeek_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_DayOfWeek_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DayOfWeek = { + "DayOfWeek", + "DayOfWeek", + &asn_OP_NativeEnumerated, + asn_DEF_DayOfWeek_tags_1, + sizeof(asn_DEF_DayOfWeek_tags_1) + /sizeof(asn_DEF_DayOfWeek_tags_1[0]), /* 1 */ + asn_DEF_DayOfWeek_tags_1, /* Same as above */ + sizeof(asn_DEF_DayOfWeek_tags_1) + /sizeof(asn_DEF_DayOfWeek_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DayOfWeek_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DayOfWeek_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_DayOfWeek_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DaySchedule.c b/src/tmx/Asn_J2735/src/r2020/DaySchedule.c new file mode 100644 index 000000000..9b915fccc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DaySchedule.c @@ -0,0 +1,126 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "DaySchedule.h" + +static int +memb_begin_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1439)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_duration_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1439)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_begin_constr_2 CC_NOTUSED = { + { 2, 1 } /* (0..1439) */, + -1}; +static asn_per_constraints_t asn_PER_memb_begin_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 1439 } /* (0..1439) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_duration_constr_3 CC_NOTUSED = { + { 2, 1 } /* (0..1439) */, + -1}; +static asn_per_constraints_t asn_PER_memb_duration_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 1439 } /* (0..1439) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DaySchedule_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DaySchedule, begin), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_begin_constr_2, &asn_PER_memb_begin_constr_2, memb_begin_constraint_1 }, + 0, 0, /* No default value */ + "begin" + }, + { ATF_NOFLAGS, 0, offsetof(struct DaySchedule, duration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_duration_constr_3, &asn_PER_memb_duration_constr_3, memb_duration_constraint_1 }, + 0, 0, /* No default value */ + "duration" + }, +}; +static const ber_tlv_tag_t asn_DEF_DaySchedule_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DaySchedule_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* begin */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* duration */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DaySchedule_specs_1 = { + sizeof(struct DaySchedule), + offsetof(struct DaySchedule, _asn_ctx), + asn_MAP_DaySchedule_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DaySchedule = { + "DaySchedule", + "DaySchedule", + &asn_OP_SEQUENCE, + asn_DEF_DaySchedule_tags_1, + sizeof(asn_DEF_DaySchedule_tags_1) + /sizeof(asn_DEF_DaySchedule_tags_1[0]), /* 1 */ + asn_DEF_DaySchedule_tags_1, /* Same as above */ + sizeof(asn_DEF_DaySchedule_tags_1) + /sizeof(asn_DEF_DaySchedule_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DaySchedule_1, + 2, /* Elements count */ + &asn_SPC_DaySchedule_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DegreesLat.c b/src/tmx/Asn_J2735/src/r2020/DegreesLat.c new file mode 100644 index 000000000..a420fd1f8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DegreesLat.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DegreesLat.h" + +int +DegreesLat_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -90L && value <= 90L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DegreesLat_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-90..90) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DegreesLat_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -90, 90 } /* (-90..90) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DegreesLat_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DegreesLat = { + "DegreesLat", + "DegreesLat", + &asn_OP_NativeInteger, + asn_DEF_DegreesLat_tags_1, + sizeof(asn_DEF_DegreesLat_tags_1) + /sizeof(asn_DEF_DegreesLat_tags_1[0]), /* 1 */ + asn_DEF_DegreesLat_tags_1, /* Same as above */ + sizeof(asn_DEF_DegreesLat_tags_1) + /sizeof(asn_DEF_DegreesLat_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DegreesLat_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DegreesLat_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DegreesLat_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DegreesLong.c b/src/tmx/Asn_J2735/src/r2020/DegreesLong.c new file mode 100644 index 000000000..4fce08b01 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DegreesLong.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DegreesLong.h" + +int +DegreesLong_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -180L && value <= 180L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DegreesLong_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-180..180) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DegreesLong_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, -180, 180 } /* (-180..180) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DegreesLong_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DegreesLong = { + "DegreesLong", + "DegreesLong", + &asn_OP_NativeInteger, + asn_DEF_DegreesLong_tags_1, + sizeof(asn_DEF_DegreesLong_tags_1) + /sizeof(asn_DEF_DegreesLong_tags_1[0]), /* 1 */ + asn_DEF_DegreesLong_tags_1, /* Same as above */ + sizeof(asn_DEF_DegreesLong_tags_1) + /sizeof(asn_DEF_DegreesLong_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DegreesLong_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DegreesLong_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DegreesLong_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DeltaAngle.c b/src/tmx/Asn_J2735/src/r2020/DeltaAngle.c new file mode 100644 index 000000000..fa0edebfc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DeltaAngle.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DeltaAngle.h" + +int +DeltaAngle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -150L && value <= 150L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DeltaAngle_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-150..150) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DeltaAngle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, -150, 150 } /* (-150..150) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DeltaAngle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeltaAngle = { + "DeltaAngle", + "DeltaAngle", + &asn_OP_NativeInteger, + asn_DEF_DeltaAngle_tags_1, + sizeof(asn_DEF_DeltaAngle_tags_1) + /sizeof(asn_DEF_DeltaAngle_tags_1[0]), /* 1 */ + asn_DEF_DeltaAngle_tags_1, /* Same as above */ + sizeof(asn_DEF_DeltaAngle_tags_1) + /sizeof(asn_DEF_DeltaAngle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DeltaAngle_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DeltaAngle_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DeltaAngle_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DeltaTime.c b/src/tmx/Asn_J2735/src/r2020/DeltaTime.c new file mode 100644 index 000000000..ec8b6fa97 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DeltaTime.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DeltaTime.h" + +int +DeltaTime_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -122L && value <= 121L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DeltaTime_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-122..121) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DeltaTime_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -122, 121 } /* (-122..121) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DeltaTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeltaTime = { + "DeltaTime", + "DeltaTime", + &asn_OP_NativeInteger, + asn_DEF_DeltaTime_tags_1, + sizeof(asn_DEF_DeltaTime_tags_1) + /sizeof(asn_DEF_DeltaTime_tags_1[0]), /* 1 */ + asn_DEF_DeltaTime_tags_1, /* Same as above */ + sizeof(asn_DEF_DeltaTime_tags_1) + /sizeof(asn_DEF_DeltaTime_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DeltaTime_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DeltaTime_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DeltaTime_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DescriptiveName.c b/src/tmx/Asn_J2735/src/r2020/DescriptiveName.c new file mode 100644 index 000000000..833fee170 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DescriptiveName.c @@ -0,0 +1,91 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DescriptiveName.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127UL)) return -1; + } + return 0; +} + +int +DescriptiveName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 63UL) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DescriptiveName_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..63)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DescriptiveName_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DescriptiveName_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DescriptiveName = { + "DescriptiveName", + "DescriptiveName", + &asn_OP_IA5String, + asn_DEF_DescriptiveName_tags_1, + sizeof(asn_DEF_DescriptiveName_tags_1) + /sizeof(asn_DEF_DescriptiveName_tags_1[0]), /* 1 */ + asn_DEF_DescriptiveName_tags_1, /* Same as above */ + sizeof(asn_DEF_DescriptiveName_tags_1) + /sizeof(asn_DEF_DescriptiveName_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DescriptiveName_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DescriptiveName_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DescriptiveName_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DetectedObjectCommonData.c b/src/tmx/Asn_J2735/src/r2020/DetectedObjectCommonData.c new file mode 100644 index 000000000..d22ee61a2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DetectedObjectCommonData.c @@ -0,0 +1,222 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "DetectedObjectCommonData.h" + +asn_TYPE_member_t asn_MBR_DetectedObjectCommonData_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectCommonData, objType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "objType" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectCommonData, objTypeCfd), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ClassificationConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "objTypeCfd" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectCommonData, objectID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "objectID" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectCommonData, measurementTime), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementTimeOffset, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectCommonData, timeConfidence), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "timeConfidence" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectCommonData, pos), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PositionOffsetXYZ, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pos" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectCommonData, posConfidence), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PositionConfidenceSet, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "posConfidence" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectCommonData, speed), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Speed, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "speed" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectCommonData, speedConfidence), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "speedConfidence" + }, + { ATF_POINTER, 2, offsetof(struct DetectedObjectCommonData, speedZ), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Speed, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "speedZ" + }, + { ATF_POINTER, 1, offsetof(struct DetectedObjectCommonData, speedConfidenceZ), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "speedConfidenceZ" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectCommonData, heading), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Heading, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "heading" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectCommonData, headingConf), + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "headingConf" + }, + { ATF_POINTER, 5, offsetof(struct DetectedObjectCommonData, accel4way), + (ASN_TAG_CLASS_CONTEXT | (13 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationSet4Way, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "accel4way" + }, + { ATF_POINTER, 4, offsetof(struct DetectedObjectCommonData, accCfdX), + (ASN_TAG_CLASS_CONTEXT | (14 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "accCfdX" + }, + { ATF_POINTER, 3, offsetof(struct DetectedObjectCommonData, accCfdY), + (ASN_TAG_CLASS_CONTEXT | (15 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "accCfdY" + }, + { ATF_POINTER, 2, offsetof(struct DetectedObjectCommonData, accCfdZ), + (ASN_TAG_CLASS_CONTEXT | (16 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "accCfdZ" + }, + { ATF_POINTER, 1, offsetof(struct DetectedObjectCommonData, accCfdYaw), + (ASN_TAG_CLASS_CONTEXT | (17 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_YawRateConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "accCfdYaw" + }, +}; +static const int asn_MAP_DetectedObjectCommonData_oms_1[] = { 9, 10, 13, 14, 15, 16, 17 }; +static const ber_tlv_tag_t asn_DEF_DetectedObjectCommonData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DetectedObjectCommonData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* objType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* objTypeCfd */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* objectID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* measurementTime */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* timeConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* pos */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* posConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* speed */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* speedConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* speedZ */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* speedConfidenceZ */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* heading */ + { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* headingConf */ + { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* accel4way */ + { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* accCfdX */ + { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* accCfdY */ + { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* accCfdZ */ + { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 } /* accCfdYaw */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DetectedObjectCommonData_specs_1 = { + sizeof(struct DetectedObjectCommonData), + offsetof(struct DetectedObjectCommonData, _asn_ctx), + asn_MAP_DetectedObjectCommonData_tag2el_1, + 18, /* Count of tags in the map */ + asn_MAP_DetectedObjectCommonData_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 18, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DetectedObjectCommonData = { + "DetectedObjectCommonData", + "DetectedObjectCommonData", + &asn_OP_SEQUENCE, + asn_DEF_DetectedObjectCommonData_tags_1, + sizeof(asn_DEF_DetectedObjectCommonData_tags_1) + /sizeof(asn_DEF_DetectedObjectCommonData_tags_1[0]), /* 1 */ + asn_DEF_DetectedObjectCommonData_tags_1, /* Same as above */ + sizeof(asn_DEF_DetectedObjectCommonData_tags_1) + /sizeof(asn_DEF_DetectedObjectCommonData_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DetectedObjectCommonData_1, + 18, /* Elements count */ + &asn_SPC_DetectedObjectCommonData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DetectedObjectData.c b/src/tmx/Asn_J2735/src/r2020/DetectedObjectData.c new file mode 100644 index 000000000..f15b14725 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DetectedObjectData.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "DetectedObjectData.h" + +asn_TYPE_member_t asn_MBR_DetectedObjectData_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectData, detObjCommon), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DetectedObjectCommonData, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "detObjCommon" + }, + { ATF_POINTER, 1, offsetof(struct DetectedObjectData, detObjOptData), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_DetectedObjectOptionalData, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "detObjOptData" + }, +}; +static const int asn_MAP_DetectedObjectData_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_DetectedObjectData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DetectedObjectData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* detObjCommon */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* detObjOptData */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DetectedObjectData_specs_1 = { + sizeof(struct DetectedObjectData), + offsetof(struct DetectedObjectData, _asn_ctx), + asn_MAP_DetectedObjectData_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_DetectedObjectData_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DetectedObjectData = { + "DetectedObjectData", + "DetectedObjectData", + &asn_OP_SEQUENCE, + asn_DEF_DetectedObjectData_tags_1, + sizeof(asn_DEF_DetectedObjectData_tags_1) + /sizeof(asn_DEF_DetectedObjectData_tags_1[0]), /* 1 */ + asn_DEF_DetectedObjectData_tags_1, /* Same as above */ + sizeof(asn_DEF_DetectedObjectData_tags_1) + /sizeof(asn_DEF_DetectedObjectData_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DetectedObjectData_1, + 2, /* Elements count */ + &asn_SPC_DetectedObjectData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DetectedObjectList.c b/src/tmx/Asn_J2735/src/r2020/DetectedObjectList.c new file mode 100644 index 000000000..9cf444254 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DetectedObjectList.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "DetectedObjectList.h" + +static asn_oer_constraints_t asn_OER_type_DetectedObjectList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_DetectedObjectList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DetectedObjectList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DetectedObjectData, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_DetectedObjectList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_DetectedObjectList_specs_1 = { + sizeof(struct DetectedObjectList), + offsetof(struct DetectedObjectList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_DetectedObjectList = { + "DetectedObjectList", + "DetectedObjectList", + &asn_OP_SEQUENCE_OF, + asn_DEF_DetectedObjectList_tags_1, + sizeof(asn_DEF_DetectedObjectList_tags_1) + /sizeof(asn_DEF_DetectedObjectList_tags_1[0]), /* 1 */ + asn_DEF_DetectedObjectList_tags_1, /* Same as above */ + sizeof(asn_DEF_DetectedObjectList_tags_1) + /sizeof(asn_DEF_DetectedObjectList_tags_1[0]), /* 1 */ + { &asn_OER_type_DetectedObjectList_constr_1, &asn_PER_type_DetectedObjectList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_DetectedObjectList_1, + 1, /* Single element */ + &asn_SPC_DetectedObjectList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DetectedObjectOptionalData.c b/src/tmx/Asn_J2735/src/r2020/DetectedObjectOptionalData.c new file mode 100644 index 000000000..c00b24eeb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DetectedObjectOptionalData.c @@ -0,0 +1,75 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "DetectedObjectOptionalData.h" + +static asn_oer_constraints_t asn_OER_type_DetectedObjectOptionalData_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_DetectedObjectOptionalData_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DetectedObjectOptionalData_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectOptionalData, choice.detVeh), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DetectedVehicleData, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "detVeh" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectOptionalData, choice.detVRU), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DetectedVRUData, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "detVRU" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObjectOptionalData, choice.detObst), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DetectedObstacleData, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "detObst" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_DetectedObjectOptionalData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* detVeh */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* detVRU */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* detObst */ +}; +asn_CHOICE_specifics_t asn_SPC_DetectedObjectOptionalData_specs_1 = { + sizeof(struct DetectedObjectOptionalData), + offsetof(struct DetectedObjectOptionalData, _asn_ctx), + offsetof(struct DetectedObjectOptionalData, present), + sizeof(((struct DetectedObjectOptionalData *)0)->present), + asn_MAP_DetectedObjectOptionalData_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_DetectedObjectOptionalData = { + "DetectedObjectOptionalData", + "DetectedObjectOptionalData", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_DetectedObjectOptionalData_constr_1, &asn_PER_type_DetectedObjectOptionalData_constr_1, CHOICE_constraint }, + asn_MBR_DetectedObjectOptionalData_1, + 3, /* Elements count */ + &asn_SPC_DetectedObjectOptionalData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DetectedObstacleData.c b/src/tmx/Asn_J2735/src/r2020/DetectedObstacleData.c new file mode 100644 index 000000000..fafab50a5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DetectedObstacleData.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "DetectedObstacleData.h" + +asn_TYPE_member_t asn_MBR_DetectedObstacleData_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DetectedObstacleData, obstSize), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObstacleSize, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "obstSize" + }, + { ATF_NOFLAGS, 0, offsetof(struct DetectedObstacleData, obstSizeConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObstacleSizeConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "obstSizeConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_DetectedObstacleData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DetectedObstacleData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* obstSize */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* obstSizeConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DetectedObstacleData_specs_1 = { + sizeof(struct DetectedObstacleData), + offsetof(struct DetectedObstacleData, _asn_ctx), + asn_MAP_DetectedObstacleData_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DetectedObstacleData = { + "DetectedObstacleData", + "DetectedObstacleData", + &asn_OP_SEQUENCE, + asn_DEF_DetectedObstacleData_tags_1, + sizeof(asn_DEF_DetectedObstacleData_tags_1) + /sizeof(asn_DEF_DetectedObstacleData_tags_1[0]), /* 1 */ + asn_DEF_DetectedObstacleData_tags_1, /* Same as above */ + sizeof(asn_DEF_DetectedObstacleData_tags_1) + /sizeof(asn_DEF_DetectedObstacleData_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DetectedObstacleData_1, + 2, /* Elements count */ + &asn_SPC_DetectedObstacleData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DetectedVRUData.c b/src/tmx/Asn_J2735/src/r2020/DetectedVRUData.c new file mode 100644 index 000000000..29d981cbe --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DetectedVRUData.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "DetectedVRUData.h" + +asn_TYPE_member_t asn_MBR_DetectedVRUData_1[] = { + { ATF_POINTER, 4, offsetof(struct DetectedVRUData, basicType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PersonalDeviceUserType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "basicType" + }, + { ATF_POINTER, 3, offsetof(struct DetectedVRUData, propulsion), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_PropelledInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "propulsion" + }, + { ATF_POINTER, 2, offsetof(struct DetectedVRUData, attachment), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Attachment, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "attachment" + }, + { ATF_POINTER, 1, offsetof(struct DetectedVRUData, radius), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AttachmentRadius, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radius" + }, +}; +static const int asn_MAP_DetectedVRUData_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_DetectedVRUData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DetectedVRUData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* basicType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* propulsion */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* attachment */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* radius */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DetectedVRUData_specs_1 = { + sizeof(struct DetectedVRUData), + offsetof(struct DetectedVRUData, _asn_ctx), + asn_MAP_DetectedVRUData_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_DetectedVRUData_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DetectedVRUData = { + "DetectedVRUData", + "DetectedVRUData", + &asn_OP_SEQUENCE, + asn_DEF_DetectedVRUData_tags_1, + sizeof(asn_DEF_DetectedVRUData_tags_1) + /sizeof(asn_DEF_DetectedVRUData_tags_1[0]), /* 1 */ + asn_DEF_DetectedVRUData_tags_1, /* Same as above */ + sizeof(asn_DEF_DetectedVRUData_tags_1) + /sizeof(asn_DEF_DetectedVRUData_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DetectedVRUData_1, + 4, /* Elements count */ + &asn_SPC_DetectedVRUData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DetectedVehicleData.c b/src/tmx/Asn_J2735/src/r2020/DetectedVehicleData.c new file mode 100644 index 000000000..6fdf3e2e1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DetectedVehicleData.c @@ -0,0 +1,142 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "DetectedVehicleData.h" + +asn_TYPE_member_t asn_MBR_DetectedVehicleData_1[] = { + { ATF_POINTER, 10, offsetof(struct DetectedVehicleData, lights), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExteriorLights, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "lights" + }, + { ATF_POINTER, 9, offsetof(struct DetectedVehicleData, vehAttitude), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Attitude, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehAttitude" + }, + { ATF_POINTER, 8, offsetof(struct DetectedVehicleData, vehAttitudeConfidence), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AttitudeConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehAttitudeConfidence" + }, + { ATF_POINTER, 7, offsetof(struct DetectedVehicleData, vehAngVel), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AngularVelocity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehAngVel" + }, + { ATF_POINTER, 6, offsetof(struct DetectedVehicleData, vehAngVelConfidence), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AngularVelocityConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehAngVelConfidence" + }, + { ATF_POINTER, 5, offsetof(struct DetectedVehicleData, size), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleSize, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "size" + }, + { ATF_POINTER, 4, offsetof(struct DetectedVehicleData, height), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleHeight, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "height" + }, + { ATF_POINTER, 3, offsetof(struct DetectedVehicleData, vehicleSizeConfidence), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleSizeConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehicleSizeConfidence" + }, + { ATF_POINTER, 2, offsetof(struct DetectedVehicleData, vehicleClass), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BasicVehicleClass, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehicleClass" + }, + { ATF_POINTER, 1, offsetof(struct DetectedVehicleData, classConf), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ClassificationConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "classConf" + }, +}; +static const int asn_MAP_DetectedVehicleData_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; +static const ber_tlv_tag_t asn_DEF_DetectedVehicleData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DetectedVehicleData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lights */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* vehAttitude */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* vehAttitudeConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* vehAngVel */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* vehAngVelConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* size */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* height */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* vehicleSizeConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* vehicleClass */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* classConf */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DetectedVehicleData_specs_1 = { + sizeof(struct DetectedVehicleData), + offsetof(struct DetectedVehicleData, _asn_ctx), + asn_MAP_DetectedVehicleData_tag2el_1, + 10, /* Count of tags in the map */ + asn_MAP_DetectedVehicleData_oms_1, /* Optional members */ + 10, 0, /* Root/Additions */ + 10, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DetectedVehicleData = { + "DetectedVehicleData", + "DetectedVehicleData", + &asn_OP_SEQUENCE, + asn_DEF_DetectedVehicleData_tags_1, + sizeof(asn_DEF_DetectedVehicleData_tags_1) + /sizeof(asn_DEF_DetectedVehicleData_tags_1[0]), /* 1 */ + asn_DEF_DetectedVehicleData_tags_1, /* Same as above */ + sizeof(asn_DEF_DetectedVehicleData_tags_1) + /sizeof(asn_DEF_DetectedVehicleData_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DetectedVehicleData_1, + 10, /* Elements count */ + &asn_SPC_DetectedVehicleData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DirectionOfUse.c b/src/tmx/Asn_J2735/src/r2020/DirectionOfUse.c new file mode 100644 index 000000000..03f207154 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DirectionOfUse.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DirectionOfUse.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DirectionOfUse_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DirectionOfUse_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_DirectionOfUse_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 7, "forward" }, + { 2, 7, "reverse" }, + { 3, 4, "both" } +}; +static const unsigned int asn_MAP_DirectionOfUse_enum2value_1[] = { + 3, /* both(3) */ + 1, /* forward(1) */ + 2, /* reverse(2) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_DirectionOfUse_specs_1 = { + asn_MAP_DirectionOfUse_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_DirectionOfUse_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_DirectionOfUse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DirectionOfUse = { + "DirectionOfUse", + "DirectionOfUse", + &asn_OP_NativeEnumerated, + asn_DEF_DirectionOfUse_tags_1, + sizeof(asn_DEF_DirectionOfUse_tags_1) + /sizeof(asn_DEF_DirectionOfUse_tags_1[0]), /* 1 */ + asn_DEF_DirectionOfUse_tags_1, /* Same as above */ + sizeof(asn_DEF_DirectionOfUse_tags_1) + /sizeof(asn_DEF_DirectionOfUse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DirectionOfUse_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DirectionOfUse_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_DirectionOfUse_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DisabledVehicle.c b/src/tmx/Asn_J2735/src/r2020/DisabledVehicle.c new file mode 100644 index 000000000..2492f0c4e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DisabledVehicle.c @@ -0,0 +1,123 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DisabledVehicle.h" + +static int +memb_statusDetails_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 523L && value <= 541L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_statusDetails_constr_2 CC_NOTUSED = { + { 2, 1 } /* (523..541) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_statusDetails_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 523, 541 } /* (523..541) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_DisabledVehicle_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DisabledVehicle, statusDetails), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIScodes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_statusDetails_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_statusDetails_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_statusDetails_constraint_1 + }, + 0, 0, /* No default value */ + "statusDetails" + }, + { ATF_POINTER, 1, offsetof(struct DisabledVehicle, locationDetails), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GenericLocations, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "locationDetails" + }, +}; +static const int asn_MAP_DisabledVehicle_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_DisabledVehicle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DisabledVehicle_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* statusDetails */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* locationDetails */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DisabledVehicle_specs_1 = { + sizeof(struct DisabledVehicle), + offsetof(struct DisabledVehicle, _asn_ctx), + asn_MAP_DisabledVehicle_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_DisabledVehicle_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DisabledVehicle = { + "DisabledVehicle", + "DisabledVehicle", + &asn_OP_SEQUENCE, + asn_DEF_DisabledVehicle_tags_1, + sizeof(asn_DEF_DisabledVehicle_tags_1) + /sizeof(asn_DEF_DisabledVehicle_tags_1[0]), /* 1 */ + asn_DEF_DisabledVehicle_tags_1, /* Same as above */ + sizeof(asn_DEF_DisabledVehicle_tags_1) + /sizeof(asn_DEF_DisabledVehicle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_DisabledVehicle_1, + 2, /* Elements count */ + &asn_SPC_DisabledVehicle_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DistanceUnits.c b/src/tmx/Asn_J2735/src/r2020/DistanceUnits.c new file mode 100644 index 000000000..0a1840c9b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DistanceUnits.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DistanceUnits.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DistanceUnits_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DistanceUnits_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_DistanceUnits_value2enum_1[] = { + { 0, 10, "centimeter" }, + { 1, 5, "cm2-5" }, + { 2, 9, "decimeter" }, + { 3, 5, "meter" }, + { 4, 9, "kilometer" }, + { 5, 4, "foot" }, + { 6, 4, "yard" }, + { 7, 4, "mile" } +}; +static const unsigned int asn_MAP_DistanceUnits_enum2value_1[] = { + 0, /* centimeter(0) */ + 1, /* cm2-5(1) */ + 2, /* decimeter(2) */ + 5, /* foot(5) */ + 4, /* kilometer(4) */ + 3, /* meter(3) */ + 7, /* mile(7) */ + 6 /* yard(6) */ +}; +const asn_INTEGER_specifics_t asn_SPC_DistanceUnits_specs_1 = { + asn_MAP_DistanceUnits_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_DistanceUnits_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_DistanceUnits_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DistanceUnits = { + "DistanceUnits", + "DistanceUnits", + &asn_OP_NativeEnumerated, + asn_DEF_DistanceUnits_tags_1, + sizeof(asn_DEF_DistanceUnits_tags_1) + /sizeof(asn_DEF_DistanceUnits_tags_1[0]), /* 1 */ + asn_DEF_DistanceUnits_tags_1, /* Same as above */ + sizeof(asn_DEF_DistanceUnits_tags_1) + /sizeof(asn_DEF_DistanceUnits_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DistanceUnits_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DistanceUnits_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_DistanceUnits_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DriveAxleLiftAirPressure.c b/src/tmx/Asn_J2735/src/r2020/DriveAxleLiftAirPressure.c new file mode 100644 index 000000000..ca8b6e94a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DriveAxleLiftAirPressure.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DriveAxleLiftAirPressure.h" + +int +DriveAxleLiftAirPressure_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 1000L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DriveAxleLiftAirPressure_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..1000) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DriveAxleLiftAirPressure_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1000 } /* (0..1000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DriveAxleLiftAirPressure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DriveAxleLiftAirPressure = { + "DriveAxleLiftAirPressure", + "DriveAxleLiftAirPressure", + &asn_OP_NativeInteger, + asn_DEF_DriveAxleLiftAirPressure_tags_1, + sizeof(asn_DEF_DriveAxleLiftAirPressure_tags_1) + /sizeof(asn_DEF_DriveAxleLiftAirPressure_tags_1[0]), /* 1 */ + asn_DEF_DriveAxleLiftAirPressure_tags_1, /* Same as above */ + sizeof(asn_DEF_DriveAxleLiftAirPressure_tags_1) + /sizeof(asn_DEF_DriveAxleLiftAirPressure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DriveAxleLiftAirPressure_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DriveAxleLiftAirPressure_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DriveAxleLiftAirPressure_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DriveAxleLocation.c b/src/tmx/Asn_J2735/src/r2020/DriveAxleLocation.c new file mode 100644 index 000000000..80dc8f60f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DriveAxleLocation.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DriveAxleLocation.h" + +int +DriveAxleLocation_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DriveAxleLocation_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DriveAxleLocation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DriveAxleLocation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DriveAxleLocation = { + "DriveAxleLocation", + "DriveAxleLocation", + &asn_OP_NativeInteger, + asn_DEF_DriveAxleLocation_tags_1, + sizeof(asn_DEF_DriveAxleLocation_tags_1) + /sizeof(asn_DEF_DriveAxleLocation_tags_1[0]), /* 1 */ + asn_DEF_DriveAxleLocation_tags_1, /* Same as above */ + sizeof(asn_DEF_DriveAxleLocation_tags_1) + /sizeof(asn_DEF_DriveAxleLocation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DriveAxleLocation_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DriveAxleLocation_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DriveAxleLocation_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DriveAxleLubePressure.c b/src/tmx/Asn_J2735/src/r2020/DriveAxleLubePressure.c new file mode 100644 index 000000000..460712a9b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DriveAxleLubePressure.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DriveAxleLubePressure.h" + +int +DriveAxleLubePressure_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 250L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DriveAxleLubePressure_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..250) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DriveAxleLubePressure_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 250 } /* (0..250) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DriveAxleLubePressure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DriveAxleLubePressure = { + "DriveAxleLubePressure", + "DriveAxleLubePressure", + &asn_OP_NativeInteger, + asn_DEF_DriveAxleLubePressure_tags_1, + sizeof(asn_DEF_DriveAxleLubePressure_tags_1) + /sizeof(asn_DEF_DriveAxleLubePressure_tags_1[0]), /* 1 */ + asn_DEF_DriveAxleLubePressure_tags_1, /* Same as above */ + sizeof(asn_DEF_DriveAxleLubePressure_tags_1) + /sizeof(asn_DEF_DriveAxleLubePressure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DriveAxleLubePressure_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DriveAxleLubePressure_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DriveAxleLubePressure_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DriveAxleTemperature.c b/src/tmx/Asn_J2735/src/r2020/DriveAxleTemperature.c new file mode 100644 index 000000000..a78c327f5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DriveAxleTemperature.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DriveAxleTemperature.h" + +int +DriveAxleTemperature_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -40L && value <= 210L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DriveAxleTemperature_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-40..210) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DriveAxleTemperature_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -40, 210 } /* (-40..210) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DriveAxleTemperature_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DriveAxleTemperature = { + "DriveAxleTemperature", + "DriveAxleTemperature", + &asn_OP_NativeInteger, + asn_DEF_DriveAxleTemperature_tags_1, + sizeof(asn_DEF_DriveAxleTemperature_tags_1) + /sizeof(asn_DEF_DriveAxleTemperature_tags_1[0]), /* 1 */ + asn_DEF_DriveAxleTemperature_tags_1, /* Same as above */ + sizeof(asn_DEF_DriveAxleTemperature_tags_1) + /sizeof(asn_DEF_DriveAxleTemperature_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DriveAxleTemperature_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DriveAxleTemperature_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DriveAxleTemperature_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DrivenLineOffsetLg.c b/src/tmx/Asn_J2735/src/r2020/DrivenLineOffsetLg.c new file mode 100644 index 000000000..5eeb0c6a7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DrivenLineOffsetLg.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DrivenLineOffsetLg.h" + +int +DrivenLineOffsetLg_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32767L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DrivenLineOffsetLg_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-32767..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DrivenLineOffsetLg_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32767, 32767 } /* (-32767..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DrivenLineOffsetLg_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DrivenLineOffsetLg = { + "DrivenLineOffsetLg", + "DrivenLineOffsetLg", + &asn_OP_NativeInteger, + asn_DEF_DrivenLineOffsetLg_tags_1, + sizeof(asn_DEF_DrivenLineOffsetLg_tags_1) + /sizeof(asn_DEF_DrivenLineOffsetLg_tags_1[0]), /* 1 */ + asn_DEF_DrivenLineOffsetLg_tags_1, /* Same as above */ + sizeof(asn_DEF_DrivenLineOffsetLg_tags_1) + /sizeof(asn_DEF_DrivenLineOffsetLg_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DrivenLineOffsetLg_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DrivenLineOffsetLg_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DrivenLineOffsetLg_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DrivenLineOffsetSm.c b/src/tmx/Asn_J2735/src/r2020/DrivenLineOffsetSm.c new file mode 100644 index 000000000..e3fc782cd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DrivenLineOffsetSm.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DrivenLineOffsetSm.h" + +int +DrivenLineOffsetSm_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -2047L && value <= 2047L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DrivenLineOffsetSm_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-2047..2047) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DrivenLineOffsetSm_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, -2047, 2047 } /* (-2047..2047) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DrivenLineOffsetSm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DrivenLineOffsetSm = { + "DrivenLineOffsetSm", + "DrivenLineOffsetSm", + &asn_OP_NativeInteger, + asn_DEF_DrivenLineOffsetSm_tags_1, + sizeof(asn_DEF_DrivenLineOffsetSm_tags_1) + /sizeof(asn_DEF_DrivenLineOffsetSm_tags_1[0]), /* 1 */ + asn_DEF_DrivenLineOffsetSm_tags_1, /* Same as above */ + sizeof(asn_DEF_DrivenLineOffsetSm_tags_1) + /sizeof(asn_DEF_DrivenLineOffsetSm_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DrivenLineOffsetSm_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DrivenLineOffsetSm_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DrivenLineOffsetSm_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/DrivingWheelAngle.c b/src/tmx/Asn_J2735/src/r2020/DrivingWheelAngle.c new file mode 100644 index 000000000..aa67e953f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/DrivingWheelAngle.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "DrivingWheelAngle.h" + +int +DrivingWheelAngle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -128L && value <= 127L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DrivingWheelAngle_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-128..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DrivingWheelAngle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -128, 127 } /* (-128..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DrivingWheelAngle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DrivingWheelAngle = { + "DrivingWheelAngle", + "DrivingWheelAngle", + &asn_OP_NativeInteger, + asn_DEF_DrivingWheelAngle_tags_1, + sizeof(asn_DEF_DrivingWheelAngle_tags_1) + /sizeof(asn_DEF_DrivingWheelAngle_tags_1[0]), /* 1 */ + asn_DEF_DrivingWheelAngle_tags_1, /* Same as above */ + sizeof(asn_DEF_DrivingWheelAngle_tags_1) + /sizeof(asn_DEF_DrivingWheelAngle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DrivingWheelAngle_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DrivingWheelAngle_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DrivingWheelAngle_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Duration.c b/src/tmx/Asn_J2735/src/r2020/Duration.c new file mode 100644 index 000000000..6fbf67731 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Duration.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Duration.h" + +int +Duration_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 3600L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Duration_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..3600) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_Duration_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 3600 } /* (0..3600) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Duration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Duration = { + "Duration", + "Duration", + &asn_OP_NativeInteger, + asn_DEF_Duration_tags_1, + sizeof(asn_DEF_Duration_tags_1) + /sizeof(asn_DEF_Duration_tags_1[0]), /* 1 */ + asn_DEF_Duration_tags_1, /* Same as above */ + sizeof(asn_DEF_Duration_tags_1) + /sizeof(asn_DEF_Duration_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Duration_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Duration_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Duration_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EXTERNAL.c b/src/tmx/Asn_J2735/src/r2020/EXTERNAL.c new file mode 100644 index 000000000..718adff91 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EXTERNAL.c @@ -0,0 +1,228 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ASN1C-UsefulInformationObjectClasses" + * found in "/usr/local/share/asn1c/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "EXTERNAL.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_encoding_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_encoding_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_encoding_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL__encoding, choice.single_ASN1_type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "single-ASN1-type" + }, + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL__encoding, choice.octet_aligned), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "octet-aligned" + }, + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL__encoding, choice.arbitrary), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "arbitrary" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_encoding_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* single-ASN1-type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* octet-aligned */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* arbitrary */ +}; +static asn_CHOICE_specifics_t asn_SPC_encoding_specs_5 = { + sizeof(struct EXTERNAL__encoding), + offsetof(struct EXTERNAL__encoding, _asn_ctx), + offsetof(struct EXTERNAL__encoding, present), + sizeof(((struct EXTERNAL__encoding *)0)->present), + asn_MAP_encoding_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_encoding_5 = { + "encoding", + "encoding", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_encoding_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_encoding_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_encoding_5, + 3, /* Elements count */ + &asn_SPC_encoding_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_EXTERNAL_1[] = { + { ATF_POINTER, 3, offsetof(struct EXTERNAL, direct_reference), + (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), + 0, + &asn_DEF_OBJECT_IDENTIFIER, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "direct-reference" + }, + { ATF_POINTER, 2, offsetof(struct EXTERNAL, indirect_reference), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "indirect-reference" + }, + { ATF_POINTER, 1, offsetof(struct EXTERNAL, data_value_descriptor), + (ASN_TAG_CLASS_UNIVERSAL | (7 << 2)), + 0, + &asn_DEF_ObjectDescriptor, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "data-value-descriptor" + }, + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL, encoding), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_encoding_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "encoding" + }, +}; +static const int asn_MAP_EXTERNAL_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_EXTERNAL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EXTERNAL_tag2el_1[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* indirect-reference */ + { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 0, 0, 0 }, /* direct-reference */ + { (ASN_TAG_CLASS_UNIVERSAL | (7 << 2)), 2, 0, 0 }, /* data-value-descriptor */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* single-ASN1-type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* octet-aligned */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 } /* arbitrary */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_EXTERNAL_specs_1 = { + sizeof(struct EXTERNAL), + offsetof(struct EXTERNAL, _asn_ctx), + asn_MAP_EXTERNAL_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_EXTERNAL_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EXTERNAL = { + "EXTERNAL", + "EXTERNAL", + &asn_OP_SEQUENCE, + asn_DEF_EXTERNAL_tags_1, + sizeof(asn_DEF_EXTERNAL_tags_1) + /sizeof(asn_DEF_EXTERNAL_tags_1[0]) - 1, /* 1 */ + asn_DEF_EXTERNAL_tags_1, /* Same as above */ + sizeof(asn_DEF_EXTERNAL_tags_1) + /sizeof(asn_DEF_EXTERNAL_tags_1[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_EXTERNAL_1, + 4, /* Elements count */ + &asn_SPC_EXTERNAL_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ElevationConfidence.c b/src/tmx/Asn_J2735/src/r2020/ElevationConfidence.c new file mode 100644 index 000000000..5af6de8f1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ElevationConfidence.c @@ -0,0 +1,96 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ElevationConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ElevationConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ElevationConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_ElevationConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 11, "elev-500-00" }, + { 2, 11, "elev-200-00" }, + { 3, 11, "elev-100-00" }, + { 4, 11, "elev-050-00" }, + { 5, 11, "elev-020-00" }, + { 6, 11, "elev-010-00" }, + { 7, 11, "elev-005-00" }, + { 8, 11, "elev-002-00" }, + { 9, 11, "elev-001-00" }, + { 10, 11, "elev-000-50" }, + { 11, 11, "elev-000-20" }, + { 12, 11, "elev-000-10" }, + { 13, 11, "elev-000-05" }, + { 14, 11, "elev-000-02" }, + { 15, 11, "elev-000-01" } +}; +static const unsigned int asn_MAP_ElevationConfidence_enum2value_1[] = { + 15, /* elev-000-01(15) */ + 14, /* elev-000-02(14) */ + 13, /* elev-000-05(13) */ + 12, /* elev-000-10(12) */ + 11, /* elev-000-20(11) */ + 10, /* elev-000-50(10) */ + 9, /* elev-001-00(9) */ + 8, /* elev-002-00(8) */ + 7, /* elev-005-00(7) */ + 6, /* elev-010-00(6) */ + 5, /* elev-020-00(5) */ + 4, /* elev-050-00(4) */ + 3, /* elev-100-00(3) */ + 2, /* elev-200-00(2) */ + 1, /* elev-500-00(1) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_ElevationConfidence_specs_1 = { + asn_MAP_ElevationConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ElevationConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ElevationConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ElevationConfidence = { + "ElevationConfidence", + "ElevationConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_ElevationConfidence_tags_1, + sizeof(asn_DEF_ElevationConfidence_tags_1) + /sizeof(asn_DEF_ElevationConfidence_tags_1[0]), /* 1 */ + asn_DEF_ElevationConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_ElevationConfidence_tags_1) + /sizeof(asn_DEF_ElevationConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ElevationConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ElevationConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ElevationConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EmergencyDetails.c b/src/tmx/Asn_J2735/src/r2020/EmergencyDetails.c new file mode 100644 index 000000000..db3ab4c47 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EmergencyDetails.c @@ -0,0 +1,158 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "EmergencyDetails.h" + +asn_TYPE_member_t asn_MBR_EmergencyDetails_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EmergencyDetails, notUsed), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SSPindex, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "notUsed" + }, + { ATF_NOFLAGS, 0, offsetof(struct EmergencyDetails, sirenUse), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SirenInUse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sirenUse" + }, + { ATF_NOFLAGS, 0, offsetof(struct EmergencyDetails, lightsUse), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LightbarInUse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lightsUse" + }, + { ATF_NOFLAGS, 0, offsetof(struct EmergencyDetails, multi), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MultiVehicleResponse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "multi" + }, + { ATF_POINTER, 2, offsetof(struct EmergencyDetails, events), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrivilegedEvents, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "events" + }, + { ATF_POINTER, 1, offsetof(struct EmergencyDetails, responseType), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponseType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "responseType" + }, +}; +static const int asn_MAP_EmergencyDetails_oms_1[] = { 4, 5 }; +static const ber_tlv_tag_t asn_DEF_EmergencyDetails_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EmergencyDetails_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* notUsed */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sirenUse */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* lightsUse */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* multi */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* events */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* responseType */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EmergencyDetails_specs_1 = { + sizeof(struct EmergencyDetails), + offsetof(struct EmergencyDetails, _asn_ctx), + asn_MAP_EmergencyDetails_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_EmergencyDetails_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EmergencyDetails = { + "EmergencyDetails", + "EmergencyDetails", + &asn_OP_SEQUENCE, + asn_DEF_EmergencyDetails_tags_1, + sizeof(asn_DEF_EmergencyDetails_tags_1) + /sizeof(asn_DEF_EmergencyDetails_tags_1[0]), /* 1 */ + asn_DEF_EmergencyDetails_tags_1, /* Same as above */ + sizeof(asn_DEF_EmergencyDetails_tags_1) + /sizeof(asn_DEF_EmergencyDetails_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_EmergencyDetails_1, + 6, /* Elements count */ + &asn_SPC_EmergencyDetails_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EmergencyVehicleAlert.c b/src/tmx/Asn_J2735/src/r2020/EmergencyVehicleAlert.c new file mode 100644 index 000000000..f55d9e070 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EmergencyVehicleAlert.c @@ -0,0 +1,351 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "EmergencyVehicleAlert" + * found in "J2735-EmergencyVehicleAlert.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "EmergencyVehicleAlert.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_12 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_12 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_12[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_EmergencyVehicleAlert, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_12[] = { + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_12 = { + sizeof(struct EmergencyVehicleAlert__regional), + offsetof(struct EmergencyVehicleAlert__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_12 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_12, + sizeof(asn_DEF_regional_tags_12) + /sizeof(asn_DEF_regional_tags_12[0]) - 1, /* 1 */ + asn_DEF_regional_tags_12, /* Same as above */ + sizeof(asn_DEF_regional_tags_12) + /sizeof(asn_DEF_regional_tags_12[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_12, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_12, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_12, + 1, /* Single element */ + &asn_SPC_regional_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EmergencyVehicleAlert_1[] = { + { ATF_POINTER, 2, offsetof(struct EmergencyVehicleAlert, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_POINTER, 1, offsetof(struct EmergencyVehicleAlert, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TemporaryID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct EmergencyVehicleAlert, rsaMsg), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadSideAlert, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rsaMsg" + }, + { ATF_POINTER, 8, offsetof(struct EmergencyVehicleAlert, responseType), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponseType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "responseType" + }, + { ATF_POINTER, 7, offsetof(struct EmergencyVehicleAlert, details), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EmergencyDetails, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "details" + }, + { ATF_POINTER, 6, offsetof(struct EmergencyVehicleAlert, mass), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleMass, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mass" + }, + { ATF_POINTER, 5, offsetof(struct EmergencyVehicleAlert, basicType), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "basicType" + }, + { ATF_POINTER, 4, offsetof(struct EmergencyVehicleAlert, vehicleType), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleGroupAffected, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleType" + }, + { ATF_POINTER, 3, offsetof(struct EmergencyVehicleAlert, responseEquip), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IncidentResponseEquipment, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "responseEquip" + }, + { ATF_POINTER, 2, offsetof(struct EmergencyVehicleAlert, responderType), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponderGroupAffected, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "responderType" + }, + { ATF_POINTER, 1, offsetof(struct EmergencyVehicleAlert, regional), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + 0, + &asn_DEF_regional_12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_12, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_12, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_EmergencyVehicleAlert_oms_1[] = { 0, 1, 3, 4, 5, 6, 7, 8, 9, 10 }; +static const ber_tlv_tag_t asn_DEF_EmergencyVehicleAlert_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EmergencyVehicleAlert_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rsaMsg */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* responseType */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* details */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* mass */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* basicType */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* vehicleType */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* responseEquip */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* responderType */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EmergencyVehicleAlert_specs_1 = { + sizeof(struct EmergencyVehicleAlert), + offsetof(struct EmergencyVehicleAlert, _asn_ctx), + asn_MAP_EmergencyVehicleAlert_tag2el_1, + 11, /* Count of tags in the map */ + asn_MAP_EmergencyVehicleAlert_oms_1, /* Optional members */ + 10, 0, /* Root/Additions */ + 11, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EmergencyVehicleAlert = { + "EmergencyVehicleAlert", + "EmergencyVehicleAlert", + &asn_OP_SEQUENCE, + asn_DEF_EmergencyVehicleAlert_tags_1, + sizeof(asn_DEF_EmergencyVehicleAlert_tags_1) + /sizeof(asn_DEF_EmergencyVehicleAlert_tags_1[0]), /* 1 */ + asn_DEF_EmergencyVehicleAlert_tags_1, /* Same as above */ + sizeof(asn_DEF_EmergencyVehicleAlert_tags_1) + /sizeof(asn_DEF_EmergencyVehicleAlert_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_EmergencyVehicleAlert_1, + 11, /* Elements count */ + &asn_SPC_EmergencyVehicleAlert_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EmissionType.c b/src/tmx/Asn_J2735/src/r2020/EmissionType.c new file mode 100644 index 000000000..af7fb28c1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EmissionType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "EmissionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EmissionType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EmissionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_EmissionType_value2enum_1[] = { + { 0, 5, "typeA" }, + { 1, 5, "typeB" }, + { 2, 5, "typeC" }, + { 3, 5, "typeD" }, + { 4, 5, "typeE" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_EmissionType_enum2value_1[] = { + 0, /* typeA(0) */ + 1, /* typeB(1) */ + 2, /* typeC(2) */ + 3, /* typeD(3) */ + 4 /* typeE(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_EmissionType_specs_1 = { + asn_MAP_EmissionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_EmissionType_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_EmissionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EmissionType = { + "EmissionType", + "EmissionType", + &asn_OP_NativeEnumerated, + asn_DEF_EmissionType_tags_1, + sizeof(asn_DEF_EmissionType_tags_1) + /sizeof(asn_DEF_EmissionType_tags_1[0]), /* 1 */ + asn_DEF_EmissionType_tags_1, /* Same as above */ + sizeof(asn_DEF_EmissionType_tags_1) + /sizeof(asn_DEF_EmissionType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EmissionType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EmissionType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_EmissionType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EnabledLaneList.c b/src/tmx/Asn_J2735/src/r2020/EnabledLaneList.c new file mode 100644 index 000000000..a2c1f3d8c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EnabledLaneList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "EnabledLaneList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EnabledLaneList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EnabledLaneList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_EnabledLaneList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_LaneID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_EnabledLaneList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_EnabledLaneList_specs_1 = { + sizeof(struct EnabledLaneList), + offsetof(struct EnabledLaneList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_EnabledLaneList = { + "EnabledLaneList", + "EnabledLaneList", + &asn_OP_SEQUENCE_OF, + asn_DEF_EnabledLaneList_tags_1, + sizeof(asn_DEF_EnabledLaneList_tags_1) + /sizeof(asn_DEF_EnabledLaneList_tags_1[0]), /* 1 */ + asn_DEF_EnabledLaneList_tags_1, /* Same as above */ + sizeof(asn_DEF_EnabledLaneList_tags_1) + /sizeof(asn_DEF_EnabledLaneList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EnabledLaneList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EnabledLaneList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_EnabledLaneList_1, + 1, /* Single element */ + &asn_SPC_EnabledLaneList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EpochMins.c b/src/tmx/Asn_J2735/src/r2020/EpochMins.c new file mode 100644 index 000000000..2c289fae8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EpochMins.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "EpochMins.h" + +int +EpochMins_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 153722867280912)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_EpochMins_constr_1 CC_NOTUSED = { + { 8, 1 } /* (0..153722867280912) */, + -1}; +asn_per_constraints_t asn_PER_type_EpochMins_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 48, -1, 0, 153722867280912 } /* (0..153722867280912) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EpochMins_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EpochMins = { + "EpochMins", + "EpochMins", + &asn_OP_INTEGER, + asn_DEF_EpochMins_tags_1, + sizeof(asn_DEF_EpochMins_tags_1) + /sizeof(asn_DEF_EpochMins_tags_1[0]), /* 1 */ + asn_DEF_EpochMins_tags_1, /* Same as above */ + sizeof(asn_DEF_EpochMins_tags_1) + /sizeof(asn_DEF_EpochMins_tags_1[0]), /* 1 */ + { &asn_OER_type_EpochMins_constr_1, &asn_PER_type_EpochMins_constr_1, EpochMins_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EquipmentType.c b/src/tmx/Asn_J2735/src/r2020/EquipmentType.c new file mode 100644 index 000000000..7707fbfe9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EquipmentType.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "EquipmentType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_EquipmentType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_EquipmentType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_EquipmentType_value2enum_1[] = { + { 0, 7, "unknown" }, + { 1, 3, "rsu" }, + { 2, 3, "obu" }, + { 3, 3, "vru" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_EquipmentType_enum2value_1[] = { + 2, /* obu(2) */ + 1, /* rsu(1) */ + 0, /* unknown(0) */ + 3 /* vru(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_EquipmentType_specs_1 = { + asn_MAP_EquipmentType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_EquipmentType_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_EquipmentType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EquipmentType = { + "EquipmentType", + "EquipmentType", + &asn_OP_NativeEnumerated, + asn_DEF_EquipmentType_tags_1, + sizeof(asn_DEF_EquipmentType_tags_1) + /sizeof(asn_DEF_EquipmentType_tags_1[0]), /* 1 */ + asn_DEF_EquipmentType_tags_1, /* Same as above */ + sizeof(asn_DEF_EquipmentType_tags_1) + /sizeof(asn_DEF_EquipmentType_tags_1[0]), /* 1 */ + { &asn_OER_type_EquipmentType_constr_1, &asn_PER_type_EquipmentType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_EquipmentType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EssMobileFriction.c b/src/tmx/Asn_J2735/src/r2020/EssMobileFriction.c new file mode 100644 index 000000000..4a4b8b020 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EssMobileFriction.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NTCIP" + * found in "J2735-NTCIP.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "EssMobileFriction.h" + +int +EssMobileFriction_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 101L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EssMobileFriction_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..101) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EssMobileFriction_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 101 } /* (0..101) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_EssMobileFriction_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EssMobileFriction = { + "EssMobileFriction", + "EssMobileFriction", + &asn_OP_NativeInteger, + asn_DEF_EssMobileFriction_tags_1, + sizeof(asn_DEF_EssMobileFriction_tags_1) + /sizeof(asn_DEF_EssMobileFriction_tags_1[0]), /* 1 */ + asn_DEF_EssMobileFriction_tags_1, /* Same as above */ + sizeof(asn_DEF_EssMobileFriction_tags_1) + /sizeof(asn_DEF_EssMobileFriction_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EssMobileFriction_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EssMobileFriction_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + EssMobileFriction_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EssPrecipRate.c b/src/tmx/Asn_J2735/src/r2020/EssPrecipRate.c new file mode 100644 index 000000000..65a319a7c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EssPrecipRate.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NTCIP" + * found in "J2735-NTCIP.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "EssPrecipRate.h" + +int +EssPrecipRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EssPrecipRate_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EssPrecipRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_EssPrecipRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EssPrecipRate = { + "EssPrecipRate", + "EssPrecipRate", + &asn_OP_NativeInteger, + asn_DEF_EssPrecipRate_tags_1, + sizeof(asn_DEF_EssPrecipRate_tags_1) + /sizeof(asn_DEF_EssPrecipRate_tags_1[0]), /* 1 */ + asn_DEF_EssPrecipRate_tags_1, /* Same as above */ + sizeof(asn_DEF_EssPrecipRate_tags_1) + /sizeof(asn_DEF_EssPrecipRate_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EssPrecipRate_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EssPrecipRate_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + EssPrecipRate_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EssPrecipSituation.c b/src/tmx/Asn_J2735/src/r2020/EssPrecipSituation.c new file mode 100644 index 000000000..5bc519482 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EssPrecipSituation.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NTCIP" + * found in "J2735-NTCIP.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "EssPrecipSituation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EssPrecipSituation_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EssPrecipSituation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 14 } /* (0..14) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_EssPrecipSituation_value2enum_1[] = { + { 1, 5, "other" }, + { 2, 7, "unknown" }, + { 3, 15, "noPrecipitation" }, + { 4, 18, "unidentifiedSlight" }, + { 5, 20, "unidentifiedModerate" }, + { 6, 17, "unidentifiedHeavy" }, + { 7, 10, "snowSlight" }, + { 8, 12, "snowModerate" }, + { 9, 9, "snowHeavy" }, + { 10, 10, "rainSlight" }, + { 11, 12, "rainModerate" }, + { 12, 9, "rainHeavy" }, + { 13, 25, "frozenPrecipitationSlight" }, + { 14, 27, "frozenPrecipitationModerate" }, + { 15, 24, "frozenPrecipitationHeavy" } +}; +static const unsigned int asn_MAP_EssPrecipSituation_enum2value_1[] = { + 14, /* frozenPrecipitationHeavy(15) */ + 13, /* frozenPrecipitationModerate(14) */ + 12, /* frozenPrecipitationSlight(13) */ + 2, /* noPrecipitation(3) */ + 0, /* other(1) */ + 11, /* rainHeavy(12) */ + 10, /* rainModerate(11) */ + 9, /* rainSlight(10) */ + 8, /* snowHeavy(9) */ + 7, /* snowModerate(8) */ + 6, /* snowSlight(7) */ + 5, /* unidentifiedHeavy(6) */ + 4, /* unidentifiedModerate(5) */ + 3, /* unidentifiedSlight(4) */ + 1 /* unknown(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_EssPrecipSituation_specs_1 = { + asn_MAP_EssPrecipSituation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_EssPrecipSituation_enum2value_1, /* N => "tag"; sorted by N */ + 15, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_EssPrecipSituation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EssPrecipSituation = { + "EssPrecipSituation", + "EssPrecipSituation", + &asn_OP_NativeEnumerated, + asn_DEF_EssPrecipSituation_tags_1, + sizeof(asn_DEF_EssPrecipSituation_tags_1) + /sizeof(asn_DEF_EssPrecipSituation_tags_1[0]), /* 1 */ + asn_DEF_EssPrecipSituation_tags_1, /* Same as above */ + sizeof(asn_DEF_EssPrecipSituation_tags_1) + /sizeof(asn_DEF_EssPrecipSituation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EssPrecipSituation_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EssPrecipSituation_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_EssPrecipSituation_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EssPrecipYesNo.c b/src/tmx/Asn_J2735/src/r2020/EssPrecipYesNo.c new file mode 100644 index 000000000..261fc072e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EssPrecipYesNo.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NTCIP" + * found in "J2735-NTCIP.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "EssPrecipYesNo.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EssPrecipYesNo_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EssPrecipYesNo_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_EssPrecipYesNo_value2enum_1[] = { + { 1, 6, "precip" }, + { 2, 8, "noPrecip" }, + { 3, 5, "error" } +}; +static const unsigned int asn_MAP_EssPrecipYesNo_enum2value_1[] = { + 2, /* error(3) */ + 1, /* noPrecip(2) */ + 0 /* precip(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_EssPrecipYesNo_specs_1 = { + asn_MAP_EssPrecipYesNo_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_EssPrecipYesNo_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_EssPrecipYesNo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EssPrecipYesNo = { + "EssPrecipYesNo", + "EssPrecipYesNo", + &asn_OP_NativeEnumerated, + asn_DEF_EssPrecipYesNo_tags_1, + sizeof(asn_DEF_EssPrecipYesNo_tags_1) + /sizeof(asn_DEF_EssPrecipYesNo_tags_1[0]), /* 1 */ + asn_DEF_EssPrecipYesNo_tags_1, /* Same as above */ + sizeof(asn_DEF_EssPrecipYesNo_tags_1) + /sizeof(asn_DEF_EssPrecipYesNo_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EssPrecipYesNo_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EssPrecipYesNo_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_EssPrecipYesNo_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EssSolarRadiation.c b/src/tmx/Asn_J2735/src/r2020/EssSolarRadiation.c new file mode 100644 index 000000000..dc85834a5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EssSolarRadiation.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NTCIP" + * found in "J2735-NTCIP.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "EssSolarRadiation.h" + +int +EssSolarRadiation_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EssSolarRadiation_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EssSolarRadiation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_EssSolarRadiation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EssSolarRadiation = { + "EssSolarRadiation", + "EssSolarRadiation", + &asn_OP_NativeInteger, + asn_DEF_EssSolarRadiation_tags_1, + sizeof(asn_DEF_EssSolarRadiation_tags_1) + /sizeof(asn_DEF_EssSolarRadiation_tags_1[0]), /* 1 */ + asn_DEF_EssSolarRadiation_tags_1, /* Same as above */ + sizeof(asn_DEF_EssSolarRadiation_tags_1) + /sizeof(asn_DEF_EssSolarRadiation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EssSolarRadiation_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EssSolarRadiation_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + EssSolarRadiation_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/EventDescription.c b/src/tmx/Asn_J2735/src/r2020/EventDescription.c new file mode 100644 index 000000000..78f235dfc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/EventDescription.c @@ -0,0 +1,364 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "EventDescription.h" + +static int +memb_description_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 8UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_description_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_description_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_description_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_description_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_description_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ITIScodes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_description_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_description_specs_3 = { + sizeof(struct EventDescription__description), + offsetof(struct EventDescription__description, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_description_3 = { + "description", + "description", + &asn_OP_SEQUENCE_OF, + asn_DEF_description_tags_3, + sizeof(asn_DEF_description_tags_3) + /sizeof(asn_DEF_description_tags_3[0]) - 1, /* 1 */ + asn_DEF_description_tags_3, /* Same as above */ + sizeof(asn_DEF_description_tags_3) + /sizeof(asn_DEF_description_tags_3[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_description_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_description_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_description_3, + 1, /* Single element */ + &asn_SPC_description_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regional_8[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_EventDescription, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_8[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_8 = { + sizeof(struct EventDescription__regional), + offsetof(struct EventDescription__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_8 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_8, + sizeof(asn_DEF_regional_tags_8) + /sizeof(asn_DEF_regional_tags_8[0]) - 1, /* 1 */ + asn_DEF_regional_tags_8, /* Same as above */ + sizeof(asn_DEF_regional_tags_8) + /sizeof(asn_DEF_regional_tags_8[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_8, + 1, /* Single element */ + &asn_SPC_regional_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EventDescription_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EventDescription, typeEvent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIScodes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "typeEvent" + }, + { ATF_POINTER, 5, offsetof(struct EventDescription, description), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_description_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_description_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_description_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_description_constraint_1 + }, + 0, 0, /* No default value */ + "description" + }, + { ATF_POINTER, 4, offsetof(struct EventDescription, priority), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Priority, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "priority" + }, + { ATF_POINTER, 3, offsetof(struct EventDescription, heading), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingSlice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "heading" + }, + { ATF_POINTER, 2, offsetof(struct EventDescription, extent), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Extent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "extent" + }, + { ATF_POINTER, 1, offsetof(struct EventDescription, regional), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + 0, + &asn_DEF_regional_8, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_EventDescription_oms_1[] = { 1, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_EventDescription_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EventDescription_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* typeEvent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* description */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* priority */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* heading */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* extent */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EventDescription_specs_1 = { + sizeof(struct EventDescription), + offsetof(struct EventDescription, _asn_ctx), + asn_MAP_EventDescription_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_EventDescription_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EventDescription = { + "EventDescription", + "EventDescription", + &asn_OP_SEQUENCE, + asn_DEF_EventDescription_tags_1, + sizeof(asn_DEF_EventDescription_tags_1) + /sizeof(asn_DEF_EventDescription_tags_1[0]), /* 1 */ + asn_DEF_EventDescription_tags_1, /* Same as above */ + sizeof(asn_DEF_EventDescription_tags_1) + /sizeof(asn_DEF_EventDescription_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_EventDescription_1, + 6, /* Elements count */ + &asn_SPC_EventDescription_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ExitService.c b/src/tmx/Asn_J2735/src/r2020/ExitService.c new file mode 100644 index 000000000..d53aabbf0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ExitService.c @@ -0,0 +1,215 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ExitService.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_item_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_item_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ExitService_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ExitService_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_item_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct ExitService__Member__item, choice.itis), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIScodes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "itis" + }, + { ATF_NOFLAGS, 0, offsetof(struct ExitService__Member__item, choice.text), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIStextPhrase, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "text" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_item_tag2el_3[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* itis */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* text */ +}; +static asn_CHOICE_specifics_t asn_SPC_item_specs_3 = { + sizeof(struct ExitService__Member__item), + offsetof(struct ExitService__Member__item, _asn_ctx), + offsetof(struct ExitService__Member__item, present), + sizeof(((struct ExitService__Member__item *)0)->present), + asn_MAP_item_tag2el_3, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_item_3 = { + "item", + "item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_item_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_item_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_item_3, + 2, /* Elements count */ + &asn_SPC_item_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct ExitService__Member, item), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_item_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "item" + }, +}; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* item */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct ExitService__Member), + offsetof(struct ExitService__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Member_2, + 1, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ExitService_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ExitService_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ExitService_specs_1 = { + sizeof(struct ExitService), + offsetof(struct ExitService, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ExitService = { + "ExitService", + "ExitService", + &asn_OP_SEQUENCE_OF, + asn_DEF_ExitService_tags_1, + sizeof(asn_DEF_ExitService_tags_1) + /sizeof(asn_DEF_ExitService_tags_1[0]), /* 1 */ + asn_DEF_ExitService_tags_1, /* Same as above */ + sizeof(asn_DEF_ExitService_tags_1) + /sizeof(asn_DEF_ExitService_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ExitService_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ExitService_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ExitService_1, + 1, /* Single element */ + &asn_SPC_ExitService_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Extent.c b/src/tmx/Asn_J2735/src/r2020/Extent.c new file mode 100644 index 000000000..7bb5d50c0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Extent.c @@ -0,0 +1,96 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Extent.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Extent_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Extent_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_Extent_value2enum_1[] = { + { 0, 16, "useInstantlyOnly" }, + { 1, 13, "useFor3meters" }, + { 2, 14, "useFor10meters" }, + { 3, 14, "useFor50meters" }, + { 4, 15, "useFor100meters" }, + { 5, 15, "useFor500meters" }, + { 6, 16, "useFor1000meters" }, + { 7, 16, "useFor5000meters" }, + { 8, 17, "useFor10000meters" }, + { 9, 17, "useFor50000meters" }, + { 10, 18, "useFor100000meters" }, + { 11, 18, "useFor500000meters" }, + { 12, 19, "useFor1000000meters" }, + { 13, 19, "useFor5000000meters" }, + { 14, 20, "useFor10000000meters" }, + { 15, 7, "forever" } +}; +static const unsigned int asn_MAP_Extent_enum2value_1[] = { + 15, /* forever(15) */ + 14, /* useFor10000000meters(14) */ + 12, /* useFor1000000meters(12) */ + 10, /* useFor100000meters(10) */ + 8, /* useFor10000meters(8) */ + 6, /* useFor1000meters(6) */ + 4, /* useFor100meters(4) */ + 2, /* useFor10meters(2) */ + 1, /* useFor3meters(1) */ + 13, /* useFor5000000meters(13) */ + 11, /* useFor500000meters(11) */ + 9, /* useFor50000meters(9) */ + 7, /* useFor5000meters(7) */ + 5, /* useFor500meters(5) */ + 3, /* useFor50meters(3) */ + 0 /* useInstantlyOnly(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Extent_specs_1 = { + asn_MAP_Extent_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Extent_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Extent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Extent = { + "Extent", + "Extent", + &asn_OP_NativeEnumerated, + asn_DEF_Extent_tags_1, + sizeof(asn_DEF_Extent_tags_1) + /sizeof(asn_DEF_Extent_tags_1[0]), /* 1 */ + asn_DEF_Extent_tags_1, /* Same as above */ + sizeof(asn_DEF_Extent_tags_1) + /sizeof(asn_DEF_Extent_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Extent_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Extent_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Extent_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ExteriorLights.c b/src/tmx/Asn_J2735/src/r2020/ExteriorLights.c new file mode 100644 index 000000000..3b7b2d2d4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ExteriorLights.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ExteriorLights.h" + +int +ExteriorLights_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 9UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ExteriorLights_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ExteriorLights_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 9, 9 } /* (SIZE(9..9,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ExteriorLights_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ExteriorLights = { + "ExteriorLights", + "ExteriorLights", + &asn_OP_BIT_STRING, + asn_DEF_ExteriorLights_tags_1, + sizeof(asn_DEF_ExteriorLights_tags_1) + /sizeof(asn_DEF_ExteriorLights_tags_1[0]), /* 1 */ + asn_DEF_ExteriorLights_tags_1, /* Same as above */ + sizeof(asn_DEF_ExteriorLights_tags_1) + /sizeof(asn_DEF_ExteriorLights_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ExteriorLights_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ExteriorLights_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ExteriorLights_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/FuelType.c b/src/tmx/Asn_J2735/src/r2020/FuelType.c new file mode 100644 index 000000000..9e8cb58b9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/FuelType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "FuelType.h" + +int +FuelType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 15L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_FuelType_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..15) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_FuelType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_FuelType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_FuelType = { + "FuelType", + "FuelType", + &asn_OP_NativeInteger, + asn_DEF_FuelType_tags_1, + sizeof(asn_DEF_FuelType_tags_1) + /sizeof(asn_DEF_FuelType_tags_1[0]), /* 1 */ + asn_DEF_FuelType_tags_1, /* Same as above */ + sizeof(asn_DEF_FuelType_tags_1) + /sizeof(asn_DEF_FuelType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_FuelType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_FuelType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + FuelType_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/FullPositionVector.c b/src/tmx/Asn_J2735/src/r2020/FullPositionVector.c new file mode 100644 index 000000000..95c1d7112 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/FullPositionVector.c @@ -0,0 +1,230 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "FullPositionVector.h" + +asn_TYPE_member_t asn_MBR_FullPositionVector_1[] = { + { ATF_POINTER, 1, offsetof(struct FullPositionVector, utcTime), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DDateTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "utcTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct FullPositionVector, Long), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "long" + }, + { ATF_NOFLAGS, 0, offsetof(struct FullPositionVector, lat), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, + { ATF_POINTER, 7, offsetof(struct FullPositionVector, elevation), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_Elevation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elevation" + }, + { ATF_POINTER, 6, offsetof(struct FullPositionVector, heading), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Heading, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "heading" + }, + { ATF_POINTER, 5, offsetof(struct FullPositionVector, speed), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransmissionAndSpeed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed" + }, + { ATF_POINTER, 4, offsetof(struct FullPositionVector, posAccuracy), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PositionalAccuracy, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "posAccuracy" + }, + { ATF_POINTER, 3, offsetof(struct FullPositionVector, timeConfidence), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeConfidence" + }, + { ATF_POINTER, 2, offsetof(struct FullPositionVector, posConfidence), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PositionConfidenceSet, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "posConfidence" + }, + { ATF_POINTER, 1, offsetof(struct FullPositionVector, speedConfidence), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedandHeadingandThrottleConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedConfidence" + }, +}; +static const int asn_MAP_FullPositionVector_oms_1[] = { 0, 3, 4, 5, 6, 7, 8, 9 }; +static const ber_tlv_tag_t asn_DEF_FullPositionVector_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FullPositionVector_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* utcTime */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* long */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* lat */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* elevation */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* heading */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* speed */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* posAccuracy */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* timeConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* posConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* speedConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FullPositionVector_specs_1 = { + sizeof(struct FullPositionVector), + offsetof(struct FullPositionVector, _asn_ctx), + asn_MAP_FullPositionVector_tag2el_1, + 10, /* Count of tags in the map */ + asn_MAP_FullPositionVector_oms_1, /* Optional members */ + 8, 0, /* Root/Additions */ + 10, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FullPositionVector = { + "FullPositionVector", + "FullPositionVector", + &asn_OP_SEQUENCE, + asn_DEF_FullPositionVector_tags_1, + sizeof(asn_DEF_FullPositionVector_tags_1) + /sizeof(asn_DEF_FullPositionVector_tags_1[0]), /* 1 */ + asn_DEF_FullPositionVector_tags_1, /* Same as above */ + sizeof(asn_DEF_FullPositionVector_tags_1) + /sizeof(asn_DEF_FullPositionVector_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_FullPositionVector_1, + 10, /* Elements count */ + &asn_SPC_FullPositionVector_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/FurtherInfoID.c b/src/tmx/Asn_J2735/src/r2020/FurtherInfoID.c new file mode 100644 index 000000000..9bcc0a306 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/FurtherInfoID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "FurtherInfoID.h" + +int +FurtherInfoID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_FurtherInfoID_constr_1 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_FurtherInfoID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_FurtherInfoID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_FurtherInfoID = { + "FurtherInfoID", + "FurtherInfoID", + &asn_OP_OCTET_STRING, + asn_DEF_FurtherInfoID_tags_1, + sizeof(asn_DEF_FurtherInfoID_tags_1) + /sizeof(asn_DEF_FurtherInfoID_tags_1[0]), /* 1 */ + asn_DEF_FurtherInfoID_tags_1, /* Same as above */ + sizeof(asn_DEF_FurtherInfoID_tags_1) + /sizeof(asn_DEF_FurtherInfoID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_FurtherInfoID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_FurtherInfoID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + FurtherInfoID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/GNSSstatus.c b/src/tmx/Asn_J2735/src/r2020/GNSSstatus.c new file mode 100644 index 000000000..3b2ba4b0a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/GNSSstatus.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "GNSSstatus.h" + +int +GNSSstatus_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_GNSSstatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + 8 /* (SIZE(8..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GNSSstatus_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_GNSSstatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GNSSstatus = { + "GNSSstatus", + "GNSSstatus", + &asn_OP_BIT_STRING, + asn_DEF_GNSSstatus_tags_1, + sizeof(asn_DEF_GNSSstatus_tags_1) + /sizeof(asn_DEF_GNSSstatus_tags_1[0]), /* 1 */ + asn_DEF_GNSSstatus_tags_1, /* Same as above */ + sizeof(asn_DEF_GNSSstatus_tags_1) + /sizeof(asn_DEF_GNSSstatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_GNSSstatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GNSSstatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + GNSSstatus_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/GenericLane.c b/src/tmx/Asn_J2735/src/r2020/GenericLane.c new file mode 100644 index 000000000..dc3e5667a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/GenericLane.c @@ -0,0 +1,333 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "GenericLane.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_GenericLane, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_11[] = { + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_11 = { + sizeof(struct GenericLane__regional), + offsetof(struct GenericLane__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_11 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_11, + sizeof(asn_DEF_regional_tags_11) + /sizeof(asn_DEF_regional_tags_11[0]) - 1, /* 1 */ + asn_DEF_regional_tags_11, /* Same as above */ + sizeof(asn_DEF_regional_tags_11) + /sizeof(asn_DEF_regional_tags_11[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_11, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_11, + 1, /* Single element */ + &asn_SPC_regional_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GenericLane_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GenericLane, laneID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneID" + }, + { ATF_POINTER, 3, offsetof(struct GenericLane, name), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DescriptiveName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "name" + }, + { ATF_POINTER, 2, offsetof(struct GenericLane, ingressApproach), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ApproachID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ingressApproach" + }, + { ATF_POINTER, 1, offsetof(struct GenericLane, egressApproach), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ApproachID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "egressApproach" + }, + { ATF_NOFLAGS, 0, offsetof(struct GenericLane, laneAttributes), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneAttributes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneAttributes" + }, + { ATF_POINTER, 1, offsetof(struct GenericLane, maneuvers), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AllowedManeuvers, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "maneuvers" + }, + { ATF_NOFLAGS, 0, offsetof(struct GenericLane, nodeList), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NodeListXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nodeList" + }, + { ATF_POINTER, 3, offsetof(struct GenericLane, connectsTo), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ConnectsToList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "connectsTo" + }, + { ATF_POINTER, 2, offsetof(struct GenericLane, overlays), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OverlayLaneList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "overlays" + }, + { ATF_POINTER, 1, offsetof(struct GenericLane, regional), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + 0, + &asn_DEF_regional_11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_11, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_GenericLane_oms_1[] = { 1, 2, 3, 5, 7, 8, 9 }; +static const ber_tlv_tag_t asn_DEF_GenericLane_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GenericLane_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* laneID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* name */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ingressApproach */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* egressApproach */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* laneAttributes */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* maneuvers */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* nodeList */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* connectsTo */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* overlays */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GenericLane_specs_1 = { + sizeof(struct GenericLane), + offsetof(struct GenericLane, _asn_ctx), + asn_MAP_GenericLane_tag2el_1, + 10, /* Count of tags in the map */ + asn_MAP_GenericLane_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 10, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GenericLane = { + "GenericLane", + "GenericLane", + &asn_OP_SEQUENCE, + asn_DEF_GenericLane_tags_1, + sizeof(asn_DEF_GenericLane_tags_1) + /sizeof(asn_DEF_GenericLane_tags_1[0]), /* 1 */ + asn_DEF_GenericLane_tags_1, /* Same as above */ + sizeof(asn_DEF_GenericLane_tags_1) + /sizeof(asn_DEF_GenericLane_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GenericLane_1, + 10, /* Elements count */ + &asn_SPC_GenericLane_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/GenericLocations.c b/src/tmx/Asn_J2735/src/r2020/GenericLocations.c new file mode 100644 index 000000000..c7bbf1627 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/GenericLocations.c @@ -0,0 +1,258 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "GenericLocations.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_GenericLocations_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GenericLocations_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 0, 95 } /* (0..95,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_GenericLocations_value2enum_1[] = { + { 7937, 10, "on-bridges" }, + { 7938, 10, "in-tunnels" }, + { 7939, 27, "entering-or-leaving-tunnels" }, + { 7940, 8, "on-ramps" }, + { 7941, 25, "in-road-construction-area" }, + { 7942, 14, "around-a-curve" }, + { 7943, 14, "on-minor-roads" }, + { 7944, 21, "in-the-opposing-lanes" }, + { 7945, 19, "adjacent-to-roadway" }, + { 7946, 7, "on-bend" }, + { 7947, 19, "entire-intersection" }, + { 7948, 13, "in-the-median" }, + { 7949, 21, "moved-to-side-of-road" }, + { 7950, 17, "moved-to-shoulder" }, + { 7951, 14, "on-the-roadway" }, + { 7952, 15, "in-shaded-areas" }, + { 7953, 18, "in-low-lying-areas" }, + { 7954, 20, "in-the-downtown-area" }, + { 7955, 22, "in-the-inner-city-area" }, + { 7956, 8, "in-parts" }, + { 7957, 14, "in-some-places" }, + { 7958, 12, "in-the-ditch" }, + { 7959, 13, "in-the-valley" }, + { 7960, 11, "on-hill-top" }, + { 7961, 18, "near-the-foothills" }, + { 7962, 17, "at-high-altitudes" }, + { 7963, 13, "near-the-lake" }, + { 7964, 14, "near-the-shore" }, + { 7965, 24, "over-the-crest-of-a-hill" }, + { 7966, 25, "other-than-on-the-roadway" }, + { 7967, 14, "near-the-beach" }, + { 7968, 23, "near-beach-access-point" }, + { 7969, 11, "lower-level" }, + { 7970, 11, "upper-level" }, + { 7971, 7, "airport" }, + { 7972, 9, "concourse" }, + { 7973, 4, "gate" }, + { 7974, 13, "baggage-claim" }, + { 7975, 13, "customs-point" }, + { 7976, 7, "station" }, + { 7977, 8, "platform" }, + { 7978, 4, "dock" }, + { 7979, 5, "depot" }, + { 7980, 17, "ev-charging-point" }, + { 7981, 25, "information-welcome-point" }, + { 7982, 12, "at-rest-area" }, + { 7983, 15, "at-service-area" }, + { 7984, 16, "at-weigh-station" }, + { 7985, 12, "picnic-areas" }, + { 7986, 9, "rest-area" }, + { 7987, 16, "service-stations" }, + { 7988, 7, "toilets" }, + { 7989, 12, "on-the-right" }, + { 7990, 11, "on-the-left" }, + { 7991, 13, "in-the-center" }, + { 7992, 25, "in-the-opposite-direction" }, + { 7993, 13, "cross-traffic" }, + { 7994, 18, "northbound-traffic" }, + { 7995, 17, "eastbound-traffic" }, + { 7996, 18, "southbound-traffic" }, + { 7997, 17, "westbound-traffic" }, + { 7998, 5, "north" }, + { 7999, 5, "south" }, + { 8000, 4, "east" }, + { 8001, 4, "west" }, + { 8002, 9, "northeast" }, + { 8003, 9, "northwest" }, + { 8004, 9, "southeast" }, + { 8005, 9, "southwest" }, + { 8006, 13, "mountain-pass" }, + { 8007, 18, "reservation-center" }, + { 8008, 12, "nearby-basin" }, + { 8009, 9, "on-tracks" }, + { 8010, 3, "dip" }, + { 8011, 14, "traffic-circle" }, + { 8012, 17, "park-and-ride-lot" }, + { 8014, 2, "to" }, + { 8015, 2, "by" }, + { 8016, 7, "through" }, + { 8017, 7, "area-of" }, + { 8018, 5, "under" }, + { 8019, 4, "over" }, + { 8020, 4, "from" }, + { 8021, 11, "approaching" }, + { 8022, 11, "entering-at" }, + { 8023, 10, "exiting-at" }, + { 8024, 13, "across-tracks" }, + { 8025, 9, "in-street" }, + { 8026, 8, "on-curve" }, + { 8027, 8, "shoulder" }, + { 8028, 9, "crossover" }, + { 8029, 10, "cross-road" }, + { 8030, 9, "side-road" }, + { 8031, 8, "bus-stop" }, + { 8032, 12, "intersection" }, + { 8033, 13, "roadside-park" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_GenericLocations_enum2value_1[] = { + 86, /* across-tracks(8024) */ + 8, /* adjacent-to-roadway(7945) */ + 34, /* airport(7971) */ + 83, /* approaching(8021) */ + 79, /* area-of(8017) */ + 5, /* around-a-curve(7942) */ + 25, /* at-high-altitudes(7962) */ + 45, /* at-rest-area(7982) */ + 46, /* at-service-area(7983) */ + 47, /* at-weigh-station(7984) */ + 37, /* baggage-claim(7974) */ + 93, /* bus-stop(8031) */ + 77, /* by(8015) */ + 35, /* concourse(7972) */ + 91, /* cross-road(8029) */ + 56, /* cross-traffic(7993) */ + 90, /* crossover(8028) */ + 38, /* customs-point(7975) */ + 42, /* depot(7979) */ + 73, /* dip(8010) */ + 41, /* dock(7978) */ + 63, /* east(8000) */ + 58, /* eastbound-traffic(7995) */ + 84, /* entering-at(8022) */ + 2, /* entering-or-leaving-tunnels(7939) */ + 10, /* entire-intersection(7947) */ + 43, /* ev-charging-point(7980) */ + 85, /* exiting-at(8023) */ + 82, /* from(8020) */ + 36, /* gate(7973) */ + 16, /* in-low-lying-areas(7953) */ + 19, /* in-parts(7956) */ + 4, /* in-road-construction-area(7941) */ + 15, /* in-shaded-areas(7952) */ + 20, /* in-some-places(7957) */ + 87, /* in-street(8025) */ + 54, /* in-the-center(7991) */ + 21, /* in-the-ditch(7958) */ + 17, /* in-the-downtown-area(7954) */ + 18, /* in-the-inner-city-area(7955) */ + 11, /* in-the-median(7948) */ + 7, /* in-the-opposing-lanes(7944) */ + 55, /* in-the-opposite-direction(7992) */ + 22, /* in-the-valley(7959) */ + 1, /* in-tunnels(7938) */ + 44, /* information-welcome-point(7981) */ + 94, /* intersection(8032) */ + 32, /* lower-level(7969) */ + 69, /* mountain-pass(8006) */ + 13, /* moved-to-shoulder(7950) */ + 12, /* moved-to-side-of-road(7949) */ + 31, /* near-beach-access-point(7968) */ + 30, /* near-the-beach(7967) */ + 24, /* near-the-foothills(7961) */ + 26, /* near-the-lake(7963) */ + 27, /* near-the-shore(7964) */ + 71, /* nearby-basin(8008) */ + 61, /* north(7998) */ + 57, /* northbound-traffic(7994) */ + 65, /* northeast(8002) */ + 66, /* northwest(8003) */ + 9, /* on-bend(7946) */ + 0, /* on-bridges(7937) */ + 88, /* on-curve(8026) */ + 23, /* on-hill-top(7960) */ + 6, /* on-minor-roads(7943) */ + 3, /* on-ramps(7940) */ + 53, /* on-the-left(7990) */ + 52, /* on-the-right(7989) */ + 14, /* on-the-roadway(7951) */ + 72, /* on-tracks(8009) */ + 29, /* other-than-on-the-roadway(7966) */ + 81, /* over(8019) */ + 28, /* over-the-crest-of-a-hill(7965) */ + 75, /* park-and-ride-lot(8012) */ + 48, /* picnic-areas(7985) */ + 40, /* platform(7977) */ + 70, /* reservation-center(8007) */ + 49, /* rest-area(7986) */ + 95, /* roadside-park(8033) */ + 50, /* service-stations(7987) */ + 89, /* shoulder(8027) */ + 92, /* side-road(8030) */ + 62, /* south(7999) */ + 59, /* southbound-traffic(7996) */ + 67, /* southeast(8004) */ + 68, /* southwest(8005) */ + 39, /* station(7976) */ + 78, /* through(8016) */ + 76, /* to(8014) */ + 51, /* toilets(7988) */ + 74, /* traffic-circle(8011) */ + 80, /* under(8018) */ + 33, /* upper-level(7970) */ + 64, /* west(8001) */ + 60 /* westbound-traffic(7997) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_GenericLocations_specs_1 = { + asn_MAP_GenericLocations_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_GenericLocations_enum2value_1, /* N => "tag"; sorted by N */ + 96, /* Number of elements in the maps */ + 97, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_GenericLocations_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GenericLocations = { + "GenericLocations", + "GenericLocations", + &asn_OP_NativeEnumerated, + asn_DEF_GenericLocations_tags_1, + sizeof(asn_DEF_GenericLocations_tags_1) + /sizeof(asn_DEF_GenericLocations_tags_1[0]), /* 1 */ + asn_DEF_GenericLocations_tags_1, /* Same as above */ + sizeof(asn_DEF_GenericLocations_tags_1) + /sizeof(asn_DEF_GenericLocations_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_GenericLocations_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GenericLocations_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_GenericLocations_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/GenericSignage.c b/src/tmx/Asn_J2735/src/r2020/GenericSignage.c new file mode 100644 index 000000000..a5c5be0d9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/GenericSignage.c @@ -0,0 +1,215 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "GenericSignage.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_item_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_item_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_GenericSignage_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GenericSignage_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_item_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct GenericSignage__Member__item, choice.itis), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIScodes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "itis" + }, + { ATF_NOFLAGS, 0, offsetof(struct GenericSignage__Member__item, choice.text), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIStextPhrase, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "text" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_item_tag2el_3[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* itis */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* text */ +}; +static asn_CHOICE_specifics_t asn_SPC_item_specs_3 = { + sizeof(struct GenericSignage__Member__item), + offsetof(struct GenericSignage__Member__item, _asn_ctx), + offsetof(struct GenericSignage__Member__item, present), + sizeof(((struct GenericSignage__Member__item *)0)->present), + asn_MAP_item_tag2el_3, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_item_3 = { + "item", + "item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_item_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_item_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_item_3, + 2, /* Elements count */ + &asn_SPC_item_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct GenericSignage__Member, item), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_item_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "item" + }, +}; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* item */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct GenericSignage__Member), + offsetof(struct GenericSignage__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Member_2, + 1, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GenericSignage_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_GenericSignage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_GenericSignage_specs_1 = { + sizeof(struct GenericSignage), + offsetof(struct GenericSignage, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_GenericSignage = { + "GenericSignage", + "GenericSignage", + &asn_OP_SEQUENCE_OF, + asn_DEF_GenericSignage_tags_1, + sizeof(asn_DEF_GenericSignage_tags_1) + /sizeof(asn_DEF_GenericSignage_tags_1[0]), /* 1 */ + asn_DEF_GenericSignage_tags_1, /* Same as above */ + sizeof(asn_DEF_GenericSignage_tags_1) + /sizeof(asn_DEF_GenericSignage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_GenericSignage_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GenericSignage_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_GenericSignage_1, + 1, /* Single element */ + &asn_SPC_GenericSignage_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/GeographicalPath.c b/src/tmx/Asn_J2735/src/r2020/GeographicalPath.c new file mode 100644 index 000000000..b539b2dac --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/GeographicalPath.c @@ -0,0 +1,418 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "GeographicalPath.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_description_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_description_constr_9 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_14 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_14 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_14 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_14 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_description_9[] = { + { ATF_NOFLAGS, 0, offsetof(struct GeographicalPath__description, choice.path), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetSystem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "path" + }, + { ATF_NOFLAGS, 0, offsetof(struct GeographicalPath__description, choice.geometry), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GeometricProjection, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "geometry" + }, + { ATF_NOFLAGS, 0, offsetof(struct GeographicalPath__description, choice.oldRegion), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ValidRegion, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "oldRegion" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_description_tag2el_9[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* path */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* geometry */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* oldRegion */ +}; +static asn_CHOICE_specifics_t asn_SPC_description_specs_9 = { + sizeof(struct GeographicalPath__description), + offsetof(struct GeographicalPath__description, _asn_ctx), + offsetof(struct GeographicalPath__description, present), + sizeof(((struct GeographicalPath__description *)0)->present), + asn_MAP_description_tag2el_9, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_description_9 = { + "description", + "description", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_description_constr_9, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_description_constr_9, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_description_9, + 3, /* Elements count */ + &asn_SPC_description_specs_9 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regional_14[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_GeographicalPath, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_14[] = { + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_14 = { + sizeof(struct GeographicalPath__regional), + offsetof(struct GeographicalPath__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_14 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_14, + sizeof(asn_DEF_regional_tags_14) + /sizeof(asn_DEF_regional_tags_14[0]) - 1, /* 1 */ + asn_DEF_regional_tags_14, /* Same as above */ + sizeof(asn_DEF_regional_tags_14) + /sizeof(asn_DEF_regional_tags_14[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_14, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_14, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_14, + 1, /* Single element */ + &asn_SPC_regional_specs_14 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GeographicalPath_1[] = { + { ATF_POINTER, 9, offsetof(struct GeographicalPath, name), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DescriptiveName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "name" + }, + { ATF_POINTER, 8, offsetof(struct GeographicalPath, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadSegmentReferenceID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_POINTER, 7, offsetof(struct GeographicalPath, anchor), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Position3D, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "anchor" + }, + { ATF_POINTER, 6, offsetof(struct GeographicalPath, laneWidth), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneWidth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneWidth" + }, + { ATF_POINTER, 5, offsetof(struct GeographicalPath, directionality), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DirectionOfUse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "directionality" + }, + { ATF_POINTER, 4, offsetof(struct GeographicalPath, closedPath), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "closedPath" + }, + { ATF_POINTER, 3, offsetof(struct GeographicalPath, direction), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingSlice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "direction" + }, + { ATF_POINTER, 2, offsetof(struct GeographicalPath, description), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_description_9, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "description" + }, + { ATF_POINTER, 1, offsetof(struct GeographicalPath, regional), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + 0, + &asn_DEF_regional_14, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_14, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_14, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_GeographicalPath_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; +static const ber_tlv_tag_t asn_DEF_GeographicalPath_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GeographicalPath_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* name */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* anchor */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* laneWidth */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* directionality */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* closedPath */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* direction */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* description */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GeographicalPath_specs_1 = { + sizeof(struct GeographicalPath), + offsetof(struct GeographicalPath, _asn_ctx), + asn_MAP_GeographicalPath_tag2el_1, + 9, /* Count of tags in the map */ + asn_MAP_GeographicalPath_oms_1, /* Optional members */ + 9, 0, /* Root/Additions */ + 9, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GeographicalPath = { + "GeographicalPath", + "GeographicalPath", + &asn_OP_SEQUENCE, + asn_DEF_GeographicalPath_tags_1, + sizeof(asn_DEF_GeographicalPath_tags_1) + /sizeof(asn_DEF_GeographicalPath_tags_1[0]), /* 1 */ + asn_DEF_GeographicalPath_tags_1, /* Same as above */ + sizeof(asn_DEF_GeographicalPath_tags_1) + /sizeof(asn_DEF_GeographicalPath_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GeographicalPath_1, + 9, /* Elements count */ + &asn_SPC_GeographicalPath_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/GeometricProjection.c b/src/tmx/Asn_J2735/src/r2020/GeometricProjection.c new file mode 100644 index 000000000..44cc152ff --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/GeometricProjection.c @@ -0,0 +1,243 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "GeometricProjection.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_6[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_GeometricProjection, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_6[] = { + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_6 = { + sizeof(struct GeometricProjection__regional), + offsetof(struct GeometricProjection__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_6 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_6, + sizeof(asn_DEF_regional_tags_6) + /sizeof(asn_DEF_regional_tags_6[0]) - 1, /* 1 */ + asn_DEF_regional_tags_6, /* Same as above */ + sizeof(asn_DEF_regional_tags_6) + /sizeof(asn_DEF_regional_tags_6[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_6, + 1, /* Single element */ + &asn_SPC_regional_specs_6 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GeometricProjection_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GeometricProjection, direction), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingSlice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "direction" + }, + { ATF_POINTER, 2, offsetof(struct GeometricProjection, extent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Extent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "extent" + }, + { ATF_POINTER, 1, offsetof(struct GeometricProjection, laneWidth), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneWidth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneWidth" + }, + { ATF_NOFLAGS, 0, offsetof(struct GeometricProjection, circle), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Circle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "circle" + }, + { ATF_POINTER, 1, offsetof(struct GeometricProjection, regional), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + 0, + &asn_DEF_regional_6, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_GeometricProjection_oms_1[] = { 1, 2, 4 }; +static const ber_tlv_tag_t asn_DEF_GeometricProjection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GeometricProjection_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* direction */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* extent */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* laneWidth */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* circle */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GeometricProjection_specs_1 = { + sizeof(struct GeometricProjection), + offsetof(struct GeometricProjection, _asn_ctx), + asn_MAP_GeometricProjection_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_GeometricProjection_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GeometricProjection = { + "GeometricProjection", + "GeometricProjection", + &asn_OP_SEQUENCE, + asn_DEF_GeometricProjection_tags_1, + sizeof(asn_DEF_GeometricProjection_tags_1) + /sizeof(asn_DEF_GeometricProjection_tags_1[0]), /* 1 */ + asn_DEF_GeometricProjection_tags_1, /* Same as above */ + sizeof(asn_DEF_GeometricProjection_tags_1) + /sizeof(asn_DEF_GeometricProjection_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GeometricProjection_1, + 5, /* Elements count */ + &asn_SPC_GeometricProjection_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/GraphicString.c b/src/tmx/Asn_J2735/src/r2020/GraphicString.c new file mode 100644 index 000000000..b76118710 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/GraphicString.c @@ -0,0 +1,91 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * GraphicString basic type description. + */ +static const ber_tlv_tag_t asn_DEF_GraphicString_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (25 << 2)), /* [UNIVERSAL 25] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +asn_TYPE_operation_t asn_OP_GraphicString = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print, /* non-ascii string */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, /* Can't expect it to be ASCII/UTF8 */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer, /* Can't expect it to be ASCII/UTF8 */ +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OCTET_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_GraphicString = { + "GraphicString", + "GraphicString", + &asn_OP_GraphicString, + asn_DEF_GraphicString_tags, + sizeof(asn_DEF_GraphicString_tags) + / sizeof(asn_DEF_GraphicString_tags[0]) - 1, + asn_DEF_GraphicString_tags, + sizeof(asn_DEF_GraphicString_tags) + / sizeof(asn_DEF_GraphicString_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_unknown_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; diff --git a/src/tmx/Asn_J2735/src/r2020/GrossDistance.c b/src/tmx/Asn_J2735/src/r2020/GrossDistance.c new file mode 100644 index 000000000..4c5972119 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/GrossDistance.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "GrossDistance.h" + +int +GrossDistance_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 1023L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_GrossDistance_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..1023) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GrossDistance_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_GrossDistance_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GrossDistance = { + "GrossDistance", + "GrossDistance", + &asn_OP_NativeInteger, + asn_DEF_GrossDistance_tags_1, + sizeof(asn_DEF_GrossDistance_tags_1) + /sizeof(asn_DEF_GrossDistance_tags_1[0]), /* 1 */ + asn_DEF_GrossDistance_tags_1, /* Same as above */ + sizeof(asn_DEF_GrossDistance_tags_1) + /sizeof(asn_DEF_GrossDistance_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_GrossDistance_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GrossDistance_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + GrossDistance_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/GrossSpeed.c b/src/tmx/Asn_J2735/src/r2020/GrossSpeed.c new file mode 100644 index 000000000..81205ea1b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/GrossSpeed.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "GrossSpeed.h" + +int +GrossSpeed_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 31L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_GrossSpeed_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..31) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GrossSpeed_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 31 } /* (0..31) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_GrossSpeed_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GrossSpeed = { + "GrossSpeed", + "GrossSpeed", + &asn_OP_NativeInteger, + asn_DEF_GrossSpeed_tags_1, + sizeof(asn_DEF_GrossSpeed_tags_1) + /sizeof(asn_DEF_GrossSpeed_tags_1[0]), /* 1 */ + asn_DEF_GrossSpeed_tags_1, /* Same as above */ + sizeof(asn_DEF_GrossSpeed_tags_1) + /sizeof(asn_DEF_GrossSpeed_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_GrossSpeed_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GrossSpeed_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + GrossSpeed_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Header.c b/src/tmx/Asn_J2735/src/r2020/Header.c new file mode 100644 index 000000000..2178920c8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Header.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Header.h" + +asn_TYPE_member_t asn_MBR_Header_1[] = { + { ATF_POINTER, 4, offsetof(struct Header, year), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "year" + }, + { ATF_POINTER, 3, offsetof(struct Header, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_POINTER, 2, offsetof(struct Header, secMark), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "secMark" + }, + { ATF_POINTER, 1, offsetof(struct Header, msgIssueRevision), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgIssueRevision" + }, +}; +static const int asn_MAP_Header_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_Header_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Header_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* year */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* secMark */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* msgIssueRevision */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Header_specs_1 = { + sizeof(struct Header), + offsetof(struct Header, _asn_ctx), + asn_MAP_Header_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_Header_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Header = { + "Header", + "Header", + &asn_OP_SEQUENCE, + asn_DEF_Header_tags_1, + sizeof(asn_DEF_Header_tags_1) + /sizeof(asn_DEF_Header_tags_1[0]), /* 1 */ + asn_DEF_Header_tags_1, /* Same as above */ + sizeof(asn_DEF_Header_tags_1) + /sizeof(asn_DEF_Header_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Header_1, + 4, /* Elements count */ + &asn_SPC_Header_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Heading.c b/src/tmx/Asn_J2735/src/r2020/Heading.c new file mode 100644 index 000000000..fd3d3ac3d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Heading.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Heading.h" + +int +Heading_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 28800L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Heading_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..28800) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Heading_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 28800 } /* (0..28800) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Heading_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Heading = { + "Heading", + "Heading", + &asn_OP_NativeInteger, + asn_DEF_Heading_tags_1, + sizeof(asn_DEF_Heading_tags_1) + /sizeof(asn_DEF_Heading_tags_1[0]), /* 1 */ + asn_DEF_Heading_tags_1, /* Same as above */ + sizeof(asn_DEF_Heading_tags_1) + /sizeof(asn_DEF_Heading_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Heading_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Heading_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Heading_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/HeadingConfidence.c b/src/tmx/Asn_J2735/src/r2020/HeadingConfidence.c new file mode 100644 index 000000000..c3b169d55 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/HeadingConfidence.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "HeadingConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HeadingConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HeadingConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_HeadingConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 9, "prec10deg" }, + { 2, 9, "prec05deg" }, + { 3, 9, "prec01deg" }, + { 4, 10, "prec0-1deg" }, + { 5, 11, "prec0-05deg" }, + { 6, 11, "prec0-01deg" }, + { 7, 13, "prec0-0125deg" } +}; +static const unsigned int asn_MAP_HeadingConfidence_enum2value_1[] = { + 7, /* prec0-0125deg(7) */ + 6, /* prec0-01deg(6) */ + 5, /* prec0-05deg(5) */ + 4, /* prec0-1deg(4) */ + 3, /* prec01deg(3) */ + 2, /* prec05deg(2) */ + 1, /* prec10deg(1) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_HeadingConfidence_specs_1 = { + asn_MAP_HeadingConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_HeadingConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_HeadingConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HeadingConfidence = { + "HeadingConfidence", + "HeadingConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_HeadingConfidence_tags_1, + sizeof(asn_DEF_HeadingConfidence_tags_1) + /sizeof(asn_DEF_HeadingConfidence_tags_1[0]), /* 1 */ + asn_DEF_HeadingConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_HeadingConfidence_tags_1) + /sizeof(asn_DEF_HeadingConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HeadingConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HeadingConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_HeadingConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/HeadingSlice.c b/src/tmx/Asn_J2735/src/r2020/HeadingSlice.c new file mode 100644 index 000000000..d0bcf3548 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/HeadingSlice.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "HeadingSlice.h" + +int +HeadingSlice_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HeadingSlice_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HeadingSlice_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_HeadingSlice_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HeadingSlice = { + "HeadingSlice", + "HeadingSlice", + &asn_OP_BIT_STRING, + asn_DEF_HeadingSlice_tags_1, + sizeof(asn_DEF_HeadingSlice_tags_1) + /sizeof(asn_DEF_HeadingSlice_tags_1[0]), /* 1 */ + asn_DEF_HeadingSlice_tags_1, /* Same as above */ + sizeof(asn_DEF_HeadingSlice_tags_1) + /sizeof(asn_DEF_HeadingSlice_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HeadingSlice_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HeadingSlice_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + HeadingSlice_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Holiday.c b/src/tmx/Asn_J2735/src/r2020/Holiday.c new file mode 100644 index 000000000..83d2b9e7e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Holiday.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Holiday.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Holiday_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Holiday_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_Holiday_value2enum_1[] = { + { 0, 7, "weekday" }, + { 1, 7, "holiday" } +}; +static const unsigned int asn_MAP_Holiday_enum2value_1[] = { + 1, /* holiday(1) */ + 0 /* weekday(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Holiday_specs_1 = { + asn_MAP_Holiday_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Holiday_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Holiday_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Holiday = { + "Holiday", + "Holiday", + &asn_OP_NativeEnumerated, + asn_DEF_Holiday_tags_1, + sizeof(asn_DEF_Holiday_tags_1) + /sizeof(asn_DEF_Holiday_tags_1[0]), /* 1 */ + asn_DEF_Holiday_tags_1, /* Same as above */ + sizeof(asn_DEF_Holiday_tags_1) + /sizeof(asn_DEF_Holiday_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Holiday_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Holiday_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Holiday_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Hour.c b/src/tmx/Asn_J2735/src/r2020/Hour.c new file mode 100644 index 000000000..63abc4814 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Hour.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Hour.h" + +int +Hour_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Hour_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Hour_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Hour_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Hour = { + "Hour", + "Hour", + &asn_OP_NativeInteger, + asn_DEF_Hour_tags_1, + sizeof(asn_DEF_Hour_tags_1) + /sizeof(asn_DEF_Hour_tags_1[0]), /* 1 */ + asn_DEF_Hour_tags_1, /* Same as above */ + sizeof(asn_DEF_Hour_tags_1) + /sizeof(asn_DEF_Hour_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Hour_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Hour_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Hour_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/HumanPropelledType.c b/src/tmx/Asn_J2735/src/r2020/HumanPropelledType.c new file mode 100644 index 000000000..974a51cb2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/HumanPropelledType.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "HumanPropelledType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HumanPropelledType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HumanPropelledType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_HumanPropelledType_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 10, "otherTypes" }, + { 2, 6, "onFoot" }, + { 3, 10, "skateboard" }, + { 4, 17, "pushOrKickScooter" }, + { 5, 10, "wheelchair" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_HumanPropelledType_enum2value_1[] = { + 2, /* onFoot(2) */ + 1, /* otherTypes(1) */ + 4, /* pushOrKickScooter(4) */ + 3, /* skateboard(3) */ + 0, /* unavailable(0) */ + 5 /* wheelchair(5) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_HumanPropelledType_specs_1 = { + asn_MAP_HumanPropelledType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_HumanPropelledType_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_HumanPropelledType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HumanPropelledType = { + "HumanPropelledType", + "HumanPropelledType", + &asn_OP_NativeEnumerated, + asn_DEF_HumanPropelledType_tags_1, + sizeof(asn_DEF_HumanPropelledType_tags_1) + /sizeof(asn_DEF_HumanPropelledType_tags_1[0]), /* 1 */ + asn_DEF_HumanPropelledType_tags_1, /* Same as above */ + sizeof(asn_DEF_HumanPropelledType_tags_1) + /sizeof(asn_DEF_HumanPropelledType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HumanPropelledType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HumanPropelledType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_HumanPropelledType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IA5String.c b/src/tmx/Asn_J2735/src/r2020/IA5String.c new file mode 100644 index 000000000..876142d39 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IA5String.c @@ -0,0 +1,133 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * IA5String basic type description. + */ +static const ber_tlv_tag_t asn_DEF_IA5String_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)), /* [UNIVERSAL 22] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_DEF_IA5String_per_constraints = { + { APC_CONSTRAINED, 7, 7, 0, 0x7f }, /* Value */ + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */ + 0, 0 +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_operation_t asn_OP_IA5String = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print_utf8, /* ASCII subset */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer_utf8, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OCTET_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_IA5String = { + "IA5String", + "IA5String", + &asn_OP_IA5String, + asn_DEF_IA5String_tags, + sizeof(asn_DEF_IA5String_tags) + / sizeof(asn_DEF_IA5String_tags[0]) - 1, + asn_DEF_IA5String_tags, + sizeof(asn_DEF_IA5String_tags) + / sizeof(asn_DEF_IA5String_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_DEF_IA5String_per_constraints, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + IA5String_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +int +IA5String_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + + if(st && st->buf) { + uint8_t *buf = st->buf; + uint8_t *end = buf + st->size; + /* + * IA5String is generally equivalent to 7bit ASCII. + * ISO/ITU-T T.50, 1963. + */ + for(; buf < end; buf++) { + if(*buf > 0x7F) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value byte %ld out of range: " + "%d > 127 (%s:%d)", + td->name, + (long)((buf - st->buf) + 1), + *buf, + __FILE__, __LINE__); + return -1; + } + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + diff --git a/src/tmx/Asn_J2735/src/r2020/INTEGER.c b/src/tmx/Asn_J2735/src/r2020/INTEGER.c new file mode 100644 index 000000000..095063fef --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/INTEGER.c @@ -0,0 +1,738 @@ +/* + * Copyright (c) 2003-2019 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * INTEGER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_INTEGER = { + INTEGER_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + INTEGER_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + INTEGER_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + ber_decode_primitive, + INTEGER_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + INTEGER_decode_xer, + INTEGER_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + INTEGER_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + INTEGER_decode_oer, /* OER decoder */ + INTEGER_encode_oer, /* Canonical OER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + INTEGER_decode_uper, /* Unaligned PER decoder */ + INTEGER_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + INTEGER_decode_aper, /* Aligned PER decoder */ + INTEGER_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + INTEGER_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ +0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_INTEGER = { + "INTEGER", + "INTEGER", + &asn_OP_INTEGER, + asn_DEF_INTEGER_tags, + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + asn_DEF_INTEGER_tags, /* Same as above */ + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * INTEGER specific human-readable output. + */ +ssize_t +INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; + uint8_t *buf = st->buf; + uint8_t *buf_end = st->buf + st->size; + intmax_t value; + ssize_t wrote = 0; + char *p; + int ret; + + if(specs && specs->field_unsigned) + ret = asn_INTEGER2umax(st, (uintmax_t *)&value); + else + ret = asn_INTEGER2imax(st, &value); + + /* Simple case: the integer size is small */ + if(ret == 0) { + const asn_INTEGER_enum_map_t *el; + el = (value >= 0 || !specs || !specs->field_unsigned) + ? INTEGER_map_value2enum(specs, value) : 0; + if(el) { + if(plainOrXER == 0) + return asn__format_to_callback(cb, app_key, + "%" ASN_PRIdMAX " (%s)", value, el->enum_name); + else + return asn__format_to_callback(cb, app_key, + "<%s/>", el->enum_name); + } else if(plainOrXER && specs && specs->strict_enumeration) { + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } else { + return asn__format_to_callback(cb, app_key, + (specs && specs->field_unsigned) + ? "%" ASN_PRIuMAX + : "%" ASN_PRIdMAX, + value); + } + } else if(plainOrXER && specs && specs->strict_enumeration) { + /* + * Here and earlier, we cannot encode the ENUMERATED values + * if there is no corresponding identifier. + */ + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } + + /* Output in the long xx:yy:zz... format */ + /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ + for(p = scratch; buf < buf_end; buf++) { + const char * const h2c = "0123456789ABCDEF"; + if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { + /* Flush buffer */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + wrote += p - scratch; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x3a; /* ":" */ + } + if(p != scratch) + p--; /* Remove the last ":" */ + + wrote += p - scratch; + return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; +} + +static int +INTEGER__compar_value2enum(const void *kp, const void *am) { + long a = *(const long *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + long b = el->nat_value; + if(a < b) return -1; + else if(a == b) return 0; + else return 1; +} + +const asn_INTEGER_enum_map_t * +INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { + int count = specs ? specs->map_count : 0; + if(!count) return 0; + return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, + count, sizeof(specs->value2enum[0]), + INTEGER__compar_value2enum); +} + +static intmax_t +asn__integer_convert(const uint8_t *b, const uint8_t *end) { + uintmax_t value; + + /* Perform the sign initialization */ + /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) { + value = (uintmax_t)(-1); + } else { + value = 0; + } + + /* Conversion engine */ + for(; b < end; b++) { + value = (value << 8) | *b; + } + + return value; +} + +int +asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { + uint8_t *b, *end; + size_t size; + + /* Sanity checking */ + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + /* Cache the begin/end of the buffer */ + b = iptr->buf; /* Start of the INTEGER buffer */ + size = iptr->size; + end = b + size; /* Where to stop */ + + if(size > sizeof(intmax_t)) { + uint8_t *end1 = end - 1; + /* + * Slightly more advanced processing, + * able to process INTEGERs with >sizeof(intmax_t) bytes + * when the actual value is small, e.g. for intmax_t == int32_t + * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) + */ + /* Skip out the insignificant leading bytes */ + for(; b < end1; b++) { + switch(*b) { + case 0x00: if((b[1] & 0x80) == 0) continue; break; + case 0xff: if((b[1] & 0x80) != 0) continue; break; + } + break; + } + + size = end - b; + if(size > sizeof(intmax_t)) { + /* Still cannot fit the sizeof(intmax_t) */ + errno = ERANGE; + return -1; + } + } + + /* Shortcut processing of a corner case */ + if(end == b) { + *lptr = 0; + return 0; + } + + *lptr = asn__integer_convert(b, end); + return 0; +} + +/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ +int +asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { + uint8_t *b, *end; + uintmax_t value; + size_t size; + + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + b = iptr->buf; + size = iptr->size; + end = b + size; + + /* If all extra leading bytes are zeroes, ignore them */ + for(; size > sizeof(value); b++, size--) { + if(*b) { + /* Value won't fit into uintmax_t */ + errno = ERANGE; + return -1; + } + } + + /* Conversion engine */ + for(value = 0; b < end; b++) + value = (value << 8) | *b; + + *lptr = value; + return 0; +} + +int +asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= ((~(uintmax_t)0) >> 1)) { + return asn_imax2INTEGER(st, value); + } + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ + for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)(long *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +int +asn_INTEGER2long(const INTEGER_t *iptr, long *l) { + intmax_t v; + if(asn_INTEGER2imax(iptr, &v) == 0) { + if(v < LONG_MIN || v > LONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { + uintmax_t v; + if(asn_INTEGER2umax(iptr, &v) == 0) { + if(v > ULONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_long2INTEGER(INTEGER_t *st, long value) { + return asn_imax2INTEGER(st, value); +} + +int +asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { + return asn_imax2INTEGER(st, value); +} + + +int +asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= INT64_MAX) + return asn_int642INTEGER(st, value); + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; + for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_int642INTEGER(INTEGER_t *st, int64_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtol/strtoimax(3). + */ +enum asn_strtox_result_e +asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { + int sign = 1; + intmax_t value; + + const intmax_t asn1_intmax_max = ((~(uintmax_t)0) >> 1); + const intmax_t upper_boundary = asn1_intmax_max / 10; + intmax_t last_digit_max = asn1_intmax_max % 10; + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + last_digit_max++; + sign = -1; + /* FALL THROUGH */ + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + if(*str >= 0x30 && *str <= 0x39) { + int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + if(sign > 0) { + value = value * 10 + d; + } else { + sign = 1; + value = -value * 10 - d; + } + str += 1; + if(str < *end) { + // If digits continue, we're guaranteed out of range. + *end = str; + if(*str >= 0x30 && *str <= 0x39) { + return ASN_STRTOX_ERROR_RANGE; + } else { + *intp = sign * value; + return ASN_STRTOX_EXTRA_DATA; + } + } + break; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + *intp = sign * value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *intp = sign * value; + return ASN_STRTOX_OK; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtoul/strtoumax(3). + */ +enum asn_strtox_result_e +asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { + uintmax_t value; + + const uintmax_t asn1_uintmax_max = ((~(uintmax_t)0)); + const uintmax_t upper_boundary = asn1_uintmax_max / 10; + uintmax_t last_digit_max = asn1_uintmax_max % 10; + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + return ASN_STRTOX_ERROR_INVAL; + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + if(*str >= 0x30 && *str <= 0x39) { + unsigned int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + value = value * 10 + d; + str += 1; + if(str < *end) { + // If digits continue, we're guaranteed out of range. + *end = str; + if(*str >= 0x30 && *str <= 0x39) { + return ASN_STRTOX_ERROR_RANGE; + } else { + *uintp = value; + return ASN_STRTOX_EXTRA_DATA; + } + } + break; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + *uintp = value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *uintp = value; + return ASN_STRTOX_OK; +} + +enum asn_strtox_result_e +asn_strtol_lim(const char *str, const char **end, long *lp) { + intmax_t value; + switch(asn_strtoimax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +enum asn_strtox_result_e +asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { + uintmax_t value; + switch(asn_strtoumax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +int +INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const INTEGER_t *a = aptr; + const INTEGER_t *b = bptr; + + (void)td; + + if(a && b) { + if(a->size && b->size) { + int sign_a = (a->buf[0] & 0x80) ? -1 : 1; + int sign_b = (b->buf[0] & 0x80) ? -1 : 1; + + if(sign_a < sign_b) return -1; + if(sign_a > sign_b) return 1; + + /* The shortest integer wins, unless comparing negatives */ + if(a->size < b->size) { + return -1 * sign_a; + } else if(a->size > b->size) { + return 1 * sign_b; + } + + return sign_a * memcmp(a->buf, b->buf, a->size); + } else if(a->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (1) * sign; + } else if(b->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (-1) * sign; + } else { + return 0; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} diff --git a/src/tmx/Asn_J2735/src/r2020/INTEGER_aper.c b/src/tmx/Asn_J2735/src/r2020/INTEGER_aper.c new file mode 100644 index 000000000..406e5fbd9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/INTEGER_aper.c @@ -0,0 +1,308 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #10.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if (ct->range_bits > 16) { + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + int length = 0, i; + long value = 0; + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, + max_range_bytes, i); + + if ((length = per_get_few_bits(pd, i)) < 0) + ASN__DECODE_FAILED; + + /* X.691 #12.2.6 length determinant + lb (1) */ + length += 1; + ASN_DEBUG("Got length %d", length); + if (aper_get_align(pd) != 0) + ASN__DECODE_FAILED; + while (length--) { + int buf = per_get_few_bits(pd, 8); + if (buf < 0) + ASN__DECODE_FAILED; + value += (((long)buf) << (8 * length)); + } + + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_uint642INTEGER(st, (unsigned long)value) + : asn_int642INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %lld", + value, (long long int)ct->lower_bound); + } else { + long value = 0; + if (ct->range_bits < 8) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else if (ct->range_bits == 8) { + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else { + /* Align */ + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, 16); + if(value < 0) ASN__DECODE_STARVED; + } + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_ulong2INTEGER(st, value) + : asn_long2INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %lld", + value, (long long int)ct->lower_bound); + } + return rval; + } else { + ASN__DECODE_FAILED; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len; + void *p; + int ret; + + /* Get the PER length */ + len = aper_get_length(pd, -1, -1, -1, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_long2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%zu) lb %lld ub %lld %s", + uval, st->buf[0], st->size, + (long long int)ct->lower_bound, + (long long int)ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%zu) lb %lld ub %lld %s", + value, st->buf[0], st->size, + (long long int)ct->lower_bound, + (long long int)ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + + /* #10.5.6 */ + ASN_DEBUG("Encoding integer %ld (%lld) with range %d bits", + value, (long long int)(value - ct->lower_bound), + ct->range_bits); + + v = value - ct->lower_bound; + + /* #12 <= 8 -> alignment ? */ + int range = ct->upper_bound - ct->lower_bound + 1; + if (ct->range_bits < 8 || (ct->range_bits == 8 && range < 256)) { + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits == 8) { + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits <= 16) { + /* Consume the bytes to align on octet */ + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x0000 | v, 16)) + ASN__ENCODE_FAILED; + } else { + /* TODO: extend to >64 bits */ + int64_t v64 = v; + int i, j; + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + + for (j = sizeof(int64_t) -1; j != 0; j--) { + int64_t val; + val = v64 >> (j * 8); + if (val != 0) + break; + } + + /* Putting length in the minimum number of bits ex: 5 = 3bits */ + if (per_put_few_bits(po, j, i)) + ASN__ENCODE_FAILED; + + /* Consume the bits to align on octet */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + /* Put the value */ + for (i = 0; i <= j; i++) { + if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) + ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %lld", (long long int)ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + int need_eom = 0; + ssize_t mayEncode = aper_put_length(po, -1, -1, end - buf, &need_eom); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/INTEGER_ber.c b/src/tmx/Asn_J2735/src/r2020/INTEGER_ber.c new file mode 100644 index 000000000..9416eb5a0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/INTEGER_ber.c @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Encode INTEGER type using DER. + */ +asn_enc_rval_t +INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t rval; + INTEGER_t effective_integer; + + ASN_DEBUG("%s %s as INTEGER (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + /* + * Canonicalize integer in the buffer. + * (Remove too long sign extension, remove some first 0x00 bytes) + */ + if(st->buf) { + uint8_t *buf = st->buf; + uint8_t *end1 = buf + st->size - 1; + int shift; + + /* Compute the number of superfluous leading bytes */ + for(; buf < end1; buf++) { + /* + * If the contents octets of an integer value encoding + * consist of more than one octet, then the bits of the + * first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + switch(*buf) { + case 0x00: if((buf[1] & 0x80) == 0) + continue; + break; + case 0xff: if((buf[1] & 0x80)) + continue; + break; + } + break; + } + + /* Remove leading superfluous bytes from the integer */ + shift = buf - st->buf; + if(shift) { + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + unconst.c_buf = st->buf; + effective_integer.buf = unconst.nc_buf + shift; + effective_integer.size = st->size - shift; + + st = &effective_integer; + } + } + + rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); + if(rval.structure_ptr == &effective_integer) { + rval.structure_ptr = sptr; + } + return rval; +} diff --git a/src/tmx/Asn_J2735/src/r2020/INTEGER_oer.c b/src/tmx/Asn_J2735/src/r2020/INTEGER_oer.c new file mode 100644 index 000000000..343332056 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/INTEGER_oer.c @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +INTEGER_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + INTEGER_t *st = (INTEGER_t *)*sptr; + struct asn_oer_constraint_number_s ct = {0, 0}; + size_t req_bytes; + + (void)opt_codec_ctx; + (void)specs; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + + if(!constraints) constraints = td->encoding_constraints.oer_constraints; + if(constraints) ct = constraints->value; + + if(ct.width) { + req_bytes = ct.width; + } else { + /* No lower bound and no upper bound, effectively */ + + ssize_t consumed = oer_fetch_length(ptr, size, &req_bytes); + if(consumed == 0) { + ASN__DECODE_STARVED; + } else if(consumed == -1) { + ASN__DECODE_FAILED; + } + rval.consumed += consumed; + ptr = (const char *)ptr + consumed; + size -= consumed; + } + + if(req_bytes > size) { + ASN__DECODE_STARVED; + } + + if(ct.positive) { + /* X.969 08/2015 10.2(a) */ + unsigned msb; /* Most significant bit */ + size_t useful_size; + + /* Check most significant bit */ + msb = *(const uint8_t *)ptr >> 7; /* yields 0 or 1 */ + useful_size = msb + req_bytes; + st->buf = (uint8_t *)MALLOC(useful_size + 1); + if(!st->buf) { + ASN__DECODE_FAILED; + } + + /* + * Record a large unsigned in a way not to confuse it + * with signed value. + */ + st->buf[0] = '\0'; + memcpy(st->buf + msb, ptr, req_bytes); + st->buf[useful_size] = '\0'; /* Just in case, 0-terminate */ + st->size = useful_size; + + rval.consumed += req_bytes; + return rval; + } else { + /* X.969 08/2015 10.2(b) */ + st->buf = (uint8_t *)MALLOC(req_bytes + 1); + if(!st->buf) { + ASN__DECODE_FAILED; + } + + memcpy(st->buf, ptr, req_bytes); + st->buf[req_bytes] = '\0'; /* Just in case, 0-terminate */ + st->size = req_bytes; + + rval.consumed += req_bytes; + return rval; + } +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +INTEGER_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = sptr; + asn_enc_rval_t er = {0,0,0}; + struct asn_oer_constraint_number_s ct = {0, 0}; + const uint8_t *buf; + const uint8_t *end; + size_t useful_bytes; + size_t req_bytes = 0; + int sign = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.oer_constraints; + if(constraints) ct = constraints->value; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size; + + sign = (buf && buf < end) ? buf[0] & 0x80 : 0; + + /* Ignore 9 leading zeroes or ones */ + if(ct.positive) { + if(sign) { + /* The value given is a signed value. Can't proceed. */ + ASN__ENCODE_FAILED; + } + /* Remove leading zeros. */ + for(; buf + 1 < end; buf++) { + if(buf[0] != 0x0) break; + } + } else { + for(; buf + 1 < end; buf++) { + if(buf[0] == 0x0 && (buf[1] & 0x80) == 0) { + continue; + } else if(buf[0] == 0xff && (buf[1] & 0x80) != 0) { + continue; + } + break; + } + } + + useful_bytes = end - buf; + if(ct.width) { + req_bytes = ct.width; + } else { + ssize_t r = oer_serialize_length(useful_bytes, cb, app_key); + if(r < 0) { + ASN__ENCODE_FAILED; + } + er.encoded += r; + req_bytes = useful_bytes; + } + + if(req_bytes < useful_bytes) { + ASN__ENCODE_FAILED; + } + + er.encoded += req_bytes; + + for(; req_bytes > useful_bytes; req_bytes--) { + if(cb(sign?"\xff":"\0", 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } + } + + if(cb(buf, useful_bytes, app_key) < 0) { + ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/INTEGER_print.c b/src/tmx/Asn_J2735/src/r2020/INTEGER_print.c new file mode 100644 index 000000000..afb4e8e18 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/INTEGER_print.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * INTEGER specific human-readable output. + */ +int +INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + ssize_t ret; + + (void)ilevel; + + if(!st || !st->buf) + ret = cb("", 8, app_key); + else + ret = INTEGER__dump(td, st, cb, app_key, 0); + + return (ret < 0) ? -1 : 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/INTEGER_rfill.c b/src/tmx/Asn_J2735/src/r2020/INTEGER_rfill.c new file mode 100644 index 000000000..a66686df5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/INTEGER_rfill.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + INTEGER_t *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (INTEGER_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + const asn_per_constraints_t *ct; + + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + } + + if(asn_imax2INTEGER(st, value)) { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } else { + *sptr = st; + result_ok.length = st->size; + return result_ok; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/INTEGER_uper.c b/src/tmx/Asn_J2735/src/r2020/INTEGER_uper.c new file mode 100644 index 000000000..bf6ec8f13 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/INTEGER_uper.c @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691-2008/11, #13.2.2, constrained whole number */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #11.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if((size_t)ct->range_bits > 8 * sizeof(uintmax_t)) + ASN__DECODE_FAILED; + + if(specs && specs->field_unsigned) { + uintmax_t uvalue = 0; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + uvalue += ct->lower_bound; + if(asn_umax2INTEGER(st, uvalue)) + ASN__DECODE_FAILED; + } else { + uintmax_t uvalue = 0; + intmax_t svalue; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + if(per_imax_range_unrebase(uvalue, ct->lower_bound, + ct->upper_bound, &svalue) + || asn_imax2INTEGER(st, svalue)) { + ASN__DECODE_FAILED; + } + } + return rval; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len = 0; + void *p = NULL; + int ret = 0; + + /* Get the PER length */ + len = uper_get_length(pd, -1, 0, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetic. + */ + long value = 0; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_imax2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + union { + intmax_t s; + uintmax_t u; + } value; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + if(asn_INTEGER2umax(st, &value.u)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value.u < (uintmax_t)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value.u < (uintmax_t)ct->lower_bound + || value.u > (uintmax_t)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", + value.u, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } else { + if(asn_INTEGER2imax(st, &value.s)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value.s < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value.s < ct->lower_bound + || value.s > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", + value.s, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + /* X.691-11/2008, #13.2.2, test if constrained whole number */ + if(ct && ct->range_bits >= 0) { + uintmax_t v; + /* #11.5.6 -> #11.3 */ + if(specs && specs->field_unsigned) { + if(((uintmax_t)ct->lower_bound > (uintmax_t)(ct->upper_bound) + || (value.u < (uintmax_t)ct->lower_bound)) + || (value.u > (uintmax_t)ct->upper_bound)) { + ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", + value.u, ct->lower_bound, ct->upper_bound); + ASN__ENCODE_FAILED; + } + v = value.u - (uintmax_t)ct->lower_bound; + } else { + if(per_imax_range_rebase(value.s, ct->lower_bound, ct->upper_bound, &v)) { + ASN__ENCODE_FAILED; + } + } + ASN_DEBUG("Encoding integer %lu with range %d bits", + v, ct->range_bits); + if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + int need_eom = 0; + ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/INTEGER_xer.c b/src/tmx/Asn_J2735/src/r2020/INTEGER_xer.c new file mode 100644 index 000000000..1c1cc4f49 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/INTEGER_xer.c @@ -0,0 +1,351 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +struct e2v_key { + const char *start; + const char *stop; + const asn_INTEGER_enum_map_t *vemap; + const unsigned int *evmap; +}; +static int +INTEGER__compar_enum2value(const void *kp, const void *am) { + const struct e2v_key *key = (const struct e2v_key *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + const char *ptr, *end, *name; + + /* Remap the element (sort by different criterion) */ + el = key->vemap + key->evmap[el - key->vemap]; + + /* Compare strings */ + for(ptr = key->start, end = key->stop, name = el->enum_name; + ptr < end; ptr++, name++) { + if(*ptr != *name || !*name) + return *(const unsigned char *)ptr - *(const unsigned char *)name; + } + return name[0] ? -1 : 0; +} + +static const asn_INTEGER_enum_map_t * +INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop) { + const asn_INTEGER_enum_map_t *el_found; + int count = specs ? specs->map_count : 0; + struct e2v_key key; + const char *lp; + + if(!count) return NULL; + + /* Guaranteed: assert(lstart < lstop); */ + /* Figure out the tag name */ + for(lstart++, lp = lstart; lp < lstop; lp++) { + switch(*lp) { + case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ + case 0x2f: /* '/' */ case 0x3e: /* '>' */ + break; + default: + continue; + } + break; + } + if(lp == lstop) return NULL; /* No tag found */ + lstop = lp; + + key.start = lstart; + key.stop = lstop; + key.vemap = specs->value2enum; + key.evmap = specs->enum2value; + el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, + specs->value2enum, count, sizeof(specs->value2enum[0]), + INTEGER__compar_enum2value); + if(el_found) { + /* Remap enum2value into value2enum */ + el_found = key.vemap + key.evmap[el_found - key.vemap]; + } + return el_found; +} + +static int +INTEGER_st_prealloc(INTEGER_t *st, int min_size) { + void *p = MALLOC(min_size + 1); + if(p) { + void *b = st->buf; + st->size = 0; + st->buf = p; + FREEMEM(b); + return 0; + } else { + return -1; + } +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + INTEGER_t *st = (INTEGER_t *)sptr; + intmax_t dec_value; + intmax_t hex_value = 0; + const char *lp; + const char *lstart = (const char *)chunk_buf; + const char *lstop = lstart + chunk_size; + enum { + ST_LEADSPACE, + ST_SKIPSPHEX, + ST_WAITDIGITS, + ST_DIGITS, + ST_DIGITS_TRAILSPACE, + ST_HEXDIGIT1, + ST_HEXDIGIT2, + ST_HEXDIGITS_TRAILSPACE, + ST_HEXCOLON, + ST_END_ENUM, + ST_UNEXPECTED + } state = ST_LEADSPACE; + const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ + const char *dec_value_end = 0; + + if(chunk_size) + ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", + (long)chunk_size, *lstart, lstop[-1]); + + if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) + return XPBD_SYSTEM_FAILURE; + + /* + * We may have received a tag here. It will be processed inline. + * Use strtoul()-like code and serialize the result. + */ + for(lp = lstart; lp < lstop; lp++) { + int lv = *lp; + switch(lv) { + case 0x09: case 0x0a: case 0x0d: case 0x20: + switch(state) { + case ST_LEADSPACE: + case ST_DIGITS_TRAILSPACE: + case ST_HEXDIGITS_TRAILSPACE: + case ST_SKIPSPHEX: + continue; + case ST_DIGITS: + dec_value_end = lp; + state = ST_DIGITS_TRAILSPACE; + continue; + case ST_HEXCOLON: + state = ST_HEXDIGITS_TRAILSPACE; + continue; + default: + break; + } + break; + case 0x2d: /* '-' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x2b: /* '+' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + switch(state) { + case ST_DIGITS: continue; + case ST_SKIPSPHEX: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = (lv - 0x30) << 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += (lv - 0x30); + state = ST_HEXCOLON; + st->buf[st->size++] = (uint8_t)hex_value; + continue; + case ST_HEXCOLON: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + dec_value = 0; + dec_value_start = lp; + /* FALL THROUGH */ + case ST_WAITDIGITS: + state = ST_DIGITS; + continue; + default: + break; + } + break; + case 0x3c: /* '<', start of XML encoded enumeration */ + if(state == ST_LEADSPACE) { + const asn_INTEGER_enum_map_t *el; + el = INTEGER_map_enum2value( + (const asn_INTEGER_specifics_t *) + td->specifics, lstart, lstop); + if(el) { + ASN_DEBUG("Found \"%s\" => %ld", + el->enum_name, el->nat_value); + dec_value = el->nat_value; + state = ST_END_ENUM; + lp = lstop - 1; + continue; + } + ASN_DEBUG("Unknown identifier for INTEGER"); + } + return XPBD_BROKEN_ENCODING; + case 0x3a: /* ':' */ + if(state == ST_HEXCOLON) { + /* This colon is expected */ + state = ST_HEXDIGIT1; + continue; + } else if(state == ST_DIGITS) { + /* The colon here means that we have + * decoded the first two hexadecimal + * places as a decimal value. + * Switch decoding mode. */ + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + } else { + ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); + break; + } + /* [A-Fa-f] */ + case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: + case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: + switch(state) { + case ST_SKIPSPHEX: + case ST_LEADSPACE: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + hex_value <<= 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + st->buf[st->size++] = (uint8_t)hex_value; + state = ST_HEXCOLON; + continue; + case ST_DIGITS: + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + default: + break; + } + break; + } + + /* Found extra non-numeric stuff */ + ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", + lv, (long)(lp - lstart)); + state = ST_UNEXPECTED; + break; + } + + switch(state) { + case ST_END_ENUM: + /* Got a complete and valid enumeration encoded as a tag. */ + break; + case ST_DIGITS: + dec_value_end = lstop; + /* FALL THROUGH */ + case ST_DIGITS_TRAILSPACE: + /* The last symbol encountered was a digit. */ + switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { + case ASN_STRTOX_OK: + if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { + break; + } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { + break; + } else { + /* + * We model INTEGER on long for XER, + * to avoid rewriting all the tests at once. + */ + ASN_DEBUG("INTEGER exceeds long range"); + } + /* Fall through */ + case ASN_STRTOX_ERROR_RANGE: + ASN_DEBUG("INTEGER decode %s hit range limit", td->name); + return XPBD_DECODER_LIMIT; + case ASN_STRTOX_ERROR_INVAL: + case ASN_STRTOX_EXPECT_MORE: + case ASN_STRTOX_EXTRA_DATA: + return XPBD_BROKEN_ENCODING; + } + break; + case ST_HEXCOLON: + case ST_HEXDIGITS_TRAILSPACE: + st->buf[st->size] = 0; /* Just in case termination */ + return XPBD_BODY_CONSUMED; + case ST_HEXDIGIT1: + case ST_HEXDIGIT2: + case ST_SKIPSPHEX: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + /* Content not found */ + return XPBD_NOT_BODY_IGNORE; + case ST_WAITDIGITS: + case ST_UNEXPECTED: + ASN_DEBUG("INTEGER: No useful digits (state %d)", state); + return XPBD_BROKEN_ENCODING; /* No digits */ + } + + /* + * Convert the result of parsing of enumeration or a straight + * decimal value into a BER representation. + */ + if(asn_imax2INTEGER(st, dec_value)) { + ASN_DEBUG("INTEGER decode %s conversion failed", td->name); + return XPBD_SYSTEM_FAILURE; + } + + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(INTEGER_t), opt_mname, + buf_ptr, size, INTEGER__xer_body_decode); +} + +asn_enc_rval_t +INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = INTEGER__dump(td, st, cb, app_key, 1); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/ITIScodes.c b/src/tmx/Asn_J2735/src/r2020/ITIScodes.c new file mode 100644 index 000000000..e63f5fd2a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ITIScodes.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ITIScodes.h" + +int +ITIScodes_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ITIScodes_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ITIScodes_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ITIScodes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ITIScodes = { + "ITIScodes", + "ITIScodes", + &asn_OP_NativeInteger, + asn_DEF_ITIScodes_tags_1, + sizeof(asn_DEF_ITIScodes_tags_1) + /sizeof(asn_DEF_ITIScodes_tags_1[0]), /* 1 */ + asn_DEF_ITIScodes_tags_1, /* Same as above */ + sizeof(asn_DEF_ITIScodes_tags_1) + /sizeof(asn_DEF_ITIScodes_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ITIScodes_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ITIScodes_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ITIScodes_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ITIScodesAndText.c b/src/tmx/Asn_J2735/src/r2020/ITIScodesAndText.c new file mode 100644 index 000000000..44c7a62cb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ITIScodesAndText.c @@ -0,0 +1,215 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ITIScodesAndText.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_item_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_item_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ITIScodesAndText_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..100)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ITIScodesAndText_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 1, 100 } /* (SIZE(1..100)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_item_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct ITIScodesAndText__Member__item, choice.itis), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIScodes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "itis" + }, + { ATF_NOFLAGS, 0, offsetof(struct ITIScodesAndText__Member__item, choice.text), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIStext, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "text" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_item_tag2el_3[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* itis */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* text */ +}; +static asn_CHOICE_specifics_t asn_SPC_item_specs_3 = { + sizeof(struct ITIScodesAndText__Member__item), + offsetof(struct ITIScodesAndText__Member__item, _asn_ctx), + offsetof(struct ITIScodesAndText__Member__item, present), + sizeof(((struct ITIScodesAndText__Member__item *)0)->present), + asn_MAP_item_tag2el_3, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_item_3 = { + "item", + "item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_item_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_item_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_item_3, + 2, /* Elements count */ + &asn_SPC_item_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct ITIScodesAndText__Member, item), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_item_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "item" + }, +}; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* item */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct ITIScodesAndText__Member), + offsetof(struct ITIScodesAndText__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Member_2, + 1, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ITIScodesAndText_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ITIScodesAndText_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ITIScodesAndText_specs_1 = { + sizeof(struct ITIScodesAndText), + offsetof(struct ITIScodesAndText, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ITIScodesAndText = { + "ITIScodesAndText", + "ITIScodesAndText", + &asn_OP_SEQUENCE_OF, + asn_DEF_ITIScodesAndText_tags_1, + sizeof(asn_DEF_ITIScodesAndText_tags_1) + /sizeof(asn_DEF_ITIScodesAndText_tags_1[0]), /* 1 */ + asn_DEF_ITIScodesAndText_tags_1, /* Same as above */ + sizeof(asn_DEF_ITIScodesAndText_tags_1) + /sizeof(asn_DEF_ITIScodesAndText_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ITIScodesAndText_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ITIScodesAndText_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ITIScodesAndText_1, + 1, /* Single element */ + &asn_SPC_ITIScodesAndText_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ITIStext.c b/src/tmx/Asn_J2735/src/r2020/ITIStext.c new file mode 100644 index 000000000..08b8a96f9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ITIStext.c @@ -0,0 +1,91 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ITIStext.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127UL)) return -1; + } + return 0; +} + +int +ITIStext_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 500UL) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ITIStext_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..500)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ITIStext_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 9, 9, 1, 500 } /* (SIZE(1..500)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ITIStext_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ITIStext = { + "ITIStext", + "ITIStext", + &asn_OP_IA5String, + asn_DEF_ITIStext_tags_1, + sizeof(asn_DEF_ITIStext_tags_1) + /sizeof(asn_DEF_ITIStext_tags_1[0]), /* 1 */ + asn_DEF_ITIStext_tags_1, /* Same as above */ + sizeof(asn_DEF_ITIStext_tags_1) + /sizeof(asn_DEF_ITIStext_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ITIStext_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ITIStext_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ITIStext_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ITIStextPhrase.c b/src/tmx/Asn_J2735/src/r2020/ITIStextPhrase.c new file mode 100644 index 000000000..5cd260cff --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ITIStextPhrase.c @@ -0,0 +1,91 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ITIStextPhrase.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127UL)) return -1; + } + return 0; +} + +int +ITIStextPhrase_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 16UL) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ITIStextPhrase_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ITIStextPhrase_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ITIStextPhrase_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ITIStextPhrase = { + "ITIStextPhrase", + "ITIStextPhrase", + &asn_OP_IA5String, + asn_DEF_ITIStextPhrase_tags_1, + sizeof(asn_DEF_ITIStextPhrase_tags_1) + /sizeof(asn_DEF_ITIStextPhrase_tags_1[0]), /* 1 */ + asn_DEF_ITIStextPhrase_tags_1, /* Same as above */ + sizeof(asn_DEF_ITIStextPhrase_tags_1) + /sizeof(asn_DEF_ITIStextPhrase_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ITIStextPhrase_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ITIStextPhrase_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ITIStextPhrase_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Id128b.c b/src/tmx/Asn_J2735/src/r2020/Id128b.c new file mode 100644 index 000000000..d755c3e4c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Id128b.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +# include "Id128b.h" + +int +Id128b_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_Id128b_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +asn_per_constraints_t asn_PER_type_Id128b_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Id128b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Id128b = { + "Id128b", + "Id128b", + &asn_OP_OCTET_STRING, + asn_DEF_Id128b_tags_1, + sizeof(asn_DEF_Id128b_tags_1) + /sizeof(asn_DEF_Id128b_tags_1[0]), /* 1 */ + asn_DEF_Id128b_tags_1, /* Same as above */ + sizeof(asn_DEF_Id128b_tags_1) + /sizeof(asn_DEF_Id128b_tags_1[0]), /* 1 */ + { &asn_OER_type_Id128b_constr_1, &asn_PER_type_Id128b_constr_1, Id128b_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Id64b.c b/src/tmx/Asn_J2735/src/r2020/Id64b.c new file mode 100644 index 000000000..0b7d291d9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Id64b.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "Id64b.h" + +int +Id64b_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_Id64b_constr_1 CC_NOTUSED = { + { 0, 0 }, + 8 /* (SIZE(8..8)) */}; +asn_per_constraints_t asn_PER_type_Id64b_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Id64b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Id64b = { + "Id64b", + "Id64b", + &asn_OP_OCTET_STRING, + asn_DEF_Id64b_tags_1, + sizeof(asn_DEF_Id64b_tags_1) + /sizeof(asn_DEF_Id64b_tags_1[0]), /* 1 */ + asn_DEF_Id64b_tags_1, /* Same as above */ + sizeof(asn_DEF_Id64b_tags_1) + /sizeof(asn_DEF_Id64b_tags_1[0]), /* 1 */ + { &asn_OER_type_Id64b_constr_1, &asn_PER_type_Id64b_constr_1, Id64b_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IncidentResponseEquipment.c b/src/tmx/Asn_J2735/src/r2020/IncidentResponseEquipment.c new file mode 100644 index 000000000..c013824b5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IncidentResponseEquipment.c @@ -0,0 +1,210 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IncidentResponseEquipment.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_IncidentResponseEquipment_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_IncidentResponseEquipment_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 0, 71 } /* (0..71,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_IncidentResponseEquipment_value2enum_1[] = { + { 9985, 23, "ground-fire-suppression" }, + { 9986, 22, "heavy-ground-equipment" }, + { 9988, 8, "aircraft" }, + { 9989, 16, "marine-equipment" }, + { 9990, 17, "support-equipment" }, + { 9991, 19, "medical-rescue-unit" }, + { 9993, 5, "other" }, + { 9994, 29, "ground-fire-suppression-other" }, + { 9995, 6, "engine" }, + { 9996, 15, "truck-or-aerial" }, + { 9997, 5, "quint" }, + { 9998, 25, "tanker-pumper-combination" }, + { 10000, 11, "brush-truck" }, + { 10001, 28, "aircraft-rescue-firefighting" }, + { 10004, 28, "heavy-ground-equipment-other" }, + { 10005, 13, "dozer-or-plow" }, + { 10006, 7, "tractor" }, + { 10008, 16, "tanker-or-tender" }, + { 10024, 14, "aircraft-other" }, + { 10025, 26, "aircraft-fixed-wing-tanker" }, + { 10026, 10, "helitanker" }, + { 10027, 10, "helicopter" }, + { 10034, 22, "marine-equipment-other" }, + { 10035, 19, "fire-boat-with-pump" }, + { 10036, 12, "boat-no-pump" }, + { 10044, 23, "support-apparatus-other" }, + { 10045, 27, "breathing-apparatus-support" }, + { 10046, 18, "light-and-air-unit" }, + { 10054, 25, "medical-rescue-unit-other" }, + { 10055, 11, "rescue-unit" }, + { 10056, 24, "urban-search-rescue-unit" }, + { 10057, 17, "high-angle-rescue" }, + { 10058, 17, "crash-fire-rescue" }, + { 10059, 8, "bLS-unit" }, + { 10060, 8, "aLS-unit" }, + { 10075, 19, "mobile-command-post" }, + { 10076, 17, "chief-officer-car" }, + { 10077, 11, "hAZMAT-unit" }, + { 10078, 16, "type-i-hand-crew" }, + { 10079, 17, "type-ii-hand-crew" }, + { 10083, 23, "privately-owned-vehicle" }, + { 10084, 24, "other-apparatus-resource" }, + { 10085, 9, "ambulance" }, + { 10086, 14, "bomb-squad-van" }, + { 10087, 17, "combine-harvester" }, + { 10088, 20, "construction-vehicle" }, + { 10089, 12, "farm-tractor" }, + { 10090, 22, "grass-cutting-machines" }, + { 10091, 22, "hAZMAT-containment-tow" }, + { 10092, 9, "heavy-tow" }, + { 10093, 22, "hedge-cutting-machines" }, + { 10094, 9, "light-tow" }, + { 10095, 12, "mobile-crane" }, + { 10096, 25, "refuse-collection-vehicle" }, + { 10097, 19, "resurfacing-vehicle" }, + { 10098, 12, "road-sweeper" }, + { 10099, 32, "roadside-litter-collection-crews" }, + { 10100, 15, "salvage-vehicle" }, + { 10101, 10, "sand-truck" }, + { 10102, 8, "snowplow" }, + { 10103, 12, "steam-roller" }, + { 10104, 13, "swat-team-van" }, + { 10105, 20, "track-laying-vehicle" }, + { 10106, 15, "unknown-vehicle" }, + { 10107, 20, "white-lining-vehicle" }, + { 10108, 10, "dump-truck" }, + { 10109, 18, "supervisor-vehicle" }, + { 10110, 11, "snow-blower" }, + { 10111, 18, "rotary-snow-blower" }, + { 10112, 11, "road-grader" }, + { 10113, 11, "steam-truck" }, + { 10114, 11, "flatbed-tow" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_IncidentResponseEquipment_enum2value_1[] = { + 34, /* aLS-unit(10060) */ + 2, /* aircraft(9988) */ + 19, /* aircraft-fixed-wing-tanker(10025) */ + 18, /* aircraft-other(10024) */ + 13, /* aircraft-rescue-firefighting(10001) */ + 42, /* ambulance(10085) */ + 33, /* bLS-unit(10059) */ + 24, /* boat-no-pump(10036) */ + 43, /* bomb-squad-van(10086) */ + 26, /* breathing-apparatus-support(10045) */ + 12, /* brush-truck(10000) */ + 36, /* chief-officer-car(10076) */ + 44, /* combine-harvester(10087) */ + 45, /* construction-vehicle(10088) */ + 32, /* crash-fire-rescue(10058) */ + 15, /* dozer-or-plow(10005) */ + 65, /* dump-truck(10108) */ + 8, /* engine(9995) */ + 46, /* farm-tractor(10089) */ + 23, /* fire-boat-with-pump(10035) */ + 71, /* flatbed-tow(10114) */ + 47, /* grass-cutting-machines(10090) */ + 0, /* ground-fire-suppression(9985) */ + 7, /* ground-fire-suppression-other(9994) */ + 48, /* hAZMAT-containment-tow(10091) */ + 37, /* hAZMAT-unit(10077) */ + 1, /* heavy-ground-equipment(9986) */ + 14, /* heavy-ground-equipment-other(10004) */ + 49, /* heavy-tow(10092) */ + 50, /* hedge-cutting-machines(10093) */ + 21, /* helicopter(10027) */ + 20, /* helitanker(10026) */ + 31, /* high-angle-rescue(10057) */ + 27, /* light-and-air-unit(10046) */ + 51, /* light-tow(10094) */ + 3, /* marine-equipment(9989) */ + 22, /* marine-equipment-other(10034) */ + 5, /* medical-rescue-unit(9991) */ + 28, /* medical-rescue-unit-other(10054) */ + 35, /* mobile-command-post(10075) */ + 52, /* mobile-crane(10095) */ + 6, /* other(9993) */ + 41, /* other-apparatus-resource(10084) */ + 40, /* privately-owned-vehicle(10083) */ + 10, /* quint(9997) */ + 53, /* refuse-collection-vehicle(10096) */ + 29, /* rescue-unit(10055) */ + 54, /* resurfacing-vehicle(10097) */ + 69, /* road-grader(10112) */ + 55, /* road-sweeper(10098) */ + 56, /* roadside-litter-collection-crews(10099) */ + 68, /* rotary-snow-blower(10111) */ + 57, /* salvage-vehicle(10100) */ + 58, /* sand-truck(10101) */ + 67, /* snow-blower(10110) */ + 59, /* snowplow(10102) */ + 60, /* steam-roller(10103) */ + 70, /* steam-truck(10113) */ + 66, /* supervisor-vehicle(10109) */ + 25, /* support-apparatus-other(10044) */ + 4, /* support-equipment(9990) */ + 61, /* swat-team-van(10104) */ + 17, /* tanker-or-tender(10008) */ + 11, /* tanker-pumper-combination(9998) */ + 62, /* track-laying-vehicle(10105) */ + 16, /* tractor(10006) */ + 9, /* truck-or-aerial(9996) */ + 38, /* type-i-hand-crew(10078) */ + 39, /* type-ii-hand-crew(10079) */ + 63, /* unknown-vehicle(10106) */ + 30, /* urban-search-rescue-unit(10056) */ + 64 /* white-lining-vehicle(10107) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_IncidentResponseEquipment_specs_1 = { + asn_MAP_IncidentResponseEquipment_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_IncidentResponseEquipment_enum2value_1, /* N => "tag"; sorted by N */ + 72, /* Number of elements in the maps */ + 73, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_IncidentResponseEquipment_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IncidentResponseEquipment = { + "IncidentResponseEquipment", + "IncidentResponseEquipment", + &asn_OP_NativeEnumerated, + asn_DEF_IncidentResponseEquipment_tags_1, + sizeof(asn_DEF_IncidentResponseEquipment_tags_1) + /sizeof(asn_DEF_IncidentResponseEquipment_tags_1[0]), /* 1 */ + asn_DEF_IncidentResponseEquipment_tags_1, /* Same as above */ + sizeof(asn_DEF_IncidentResponseEquipment_tags_1) + /sizeof(asn_DEF_IncidentResponseEquipment_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_IncidentResponseEquipment_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_IncidentResponseEquipment_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_IncidentResponseEquipment_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IntersectionAccessPoint.c b/src/tmx/Asn_J2735/src/r2020/IntersectionAccessPoint.c new file mode 100644 index 000000000..2a2dc5389 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IntersectionAccessPoint.c @@ -0,0 +1,111 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IntersectionAccessPoint.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_IntersectionAccessPoint_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_IntersectionAccessPoint_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_IntersectionAccessPoint_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct IntersectionAccessPoint, choice.lane), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lane" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionAccessPoint, choice.approach), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ApproachID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "approach" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionAccessPoint, choice.connection), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneConnectionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "connection" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_IntersectionAccessPoint_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lane */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* approach */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* connection */ +}; +asn_CHOICE_specifics_t asn_SPC_IntersectionAccessPoint_specs_1 = { + sizeof(struct IntersectionAccessPoint), + offsetof(struct IntersectionAccessPoint, _asn_ctx), + offsetof(struct IntersectionAccessPoint, present), + sizeof(((struct IntersectionAccessPoint *)0)->present), + asn_MAP_IntersectionAccessPoint_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_IntersectionAccessPoint = { + "IntersectionAccessPoint", + "IntersectionAccessPoint", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_IntersectionAccessPoint_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_IntersectionAccessPoint_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_IntersectionAccessPoint_1, + 3, /* Elements count */ + &asn_SPC_IntersectionAccessPoint_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IntersectionCollision.c b/src/tmx/Asn_J2735/src/r2020/IntersectionCollision.c new file mode 100644 index 000000000..f825e39ed --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IntersectionCollision.c @@ -0,0 +1,333 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "IntersectionCollision" + * found in "J2735-IntersectionCollision.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IntersectionCollision.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_IntersectionCollision, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_11[] = { + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_11 = { + sizeof(struct IntersectionCollision__regional), + offsetof(struct IntersectionCollision__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_11 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_11, + sizeof(asn_DEF_regional_tags_11) + /sizeof(asn_DEF_regional_tags_11[0]) - 1, /* 1 */ + asn_DEF_regional_tags_11, /* Same as above */ + sizeof(asn_DEF_regional_tags_11) + /sizeof(asn_DEF_regional_tags_11[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_11, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_11, + 1, /* Single element */ + &asn_SPC_regional_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_IntersectionCollision_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct IntersectionCollision, msgCnt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgCnt" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionCollision, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TemporaryID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_POINTER, 4, offsetof(struct IntersectionCollision, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_POINTER, 3, offsetof(struct IntersectionCollision, partOne), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BSMcoreData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "partOne" + }, + { ATF_POINTER, 2, offsetof(struct IntersectionCollision, path), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PathHistory, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "path" + }, + { ATF_POINTER, 1, offsetof(struct IntersectionCollision, pathPrediction), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PathPrediction, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pathPrediction" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionCollision, intersectionID), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntersectionReferenceID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "intersectionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionCollision, laneNumber), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ApproachOrLane, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneNumber" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionCollision, eventFlag), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleEventFlags, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eventFlag" + }, + { ATF_POINTER, 1, offsetof(struct IntersectionCollision, regional), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + 0, + &asn_DEF_regional_11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_11, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_IntersectionCollision_oms_1[] = { 2, 3, 4, 5, 9 }; +static const ber_tlv_tag_t asn_DEF_IntersectionCollision_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IntersectionCollision_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* msgCnt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* partOne */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* path */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* pathPrediction */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* intersectionID */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* laneNumber */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* eventFlag */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_IntersectionCollision_specs_1 = { + sizeof(struct IntersectionCollision), + offsetof(struct IntersectionCollision, _asn_ctx), + asn_MAP_IntersectionCollision_tag2el_1, + 10, /* Count of tags in the map */ + asn_MAP_IntersectionCollision_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 10, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_IntersectionCollision = { + "IntersectionCollision", + "IntersectionCollision", + &asn_OP_SEQUENCE, + asn_DEF_IntersectionCollision_tags_1, + sizeof(asn_DEF_IntersectionCollision_tags_1) + /sizeof(asn_DEF_IntersectionCollision_tags_1[0]), /* 1 */ + asn_DEF_IntersectionCollision_tags_1, /* Same as above */ + sizeof(asn_DEF_IntersectionCollision_tags_1) + /sizeof(asn_DEF_IntersectionCollision_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_IntersectionCollision_1, + 10, /* Elements count */ + &asn_SPC_IntersectionCollision_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IntersectionGeometry.c b/src/tmx/Asn_J2735/src/r2020/IntersectionGeometry.c new file mode 100644 index 000000000..03dfb542b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IntersectionGeometry.c @@ -0,0 +1,315 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IntersectionGeometry.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_10 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_10 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_10[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_IntersectionGeometry, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_10[] = { + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_10 = { + sizeof(struct IntersectionGeometry__regional), + offsetof(struct IntersectionGeometry__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_10 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_10, + sizeof(asn_DEF_regional_tags_10) + /sizeof(asn_DEF_regional_tags_10[0]) - 1, /* 1 */ + asn_DEF_regional_tags_10, /* Same as above */ + sizeof(asn_DEF_regional_tags_10) + /sizeof(asn_DEF_regional_tags_10[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_10, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_10, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_10, + 1, /* Single element */ + &asn_SPC_regional_specs_10 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_IntersectionGeometry_1[] = { + { ATF_POINTER, 1, offsetof(struct IntersectionGeometry, name), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DescriptiveName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "name" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionGeometry, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntersectionReferenceID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionGeometry, revision), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "revision" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionGeometry, refPoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Position3D, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "refPoint" + }, + { ATF_POINTER, 2, offsetof(struct IntersectionGeometry, laneWidth), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneWidth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneWidth" + }, + { ATF_POINTER, 1, offsetof(struct IntersectionGeometry, speedLimits), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedLimitList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedLimits" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionGeometry, laneSet), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneSet" + }, + { ATF_POINTER, 2, offsetof(struct IntersectionGeometry, preemptPriorityData), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PreemptPriorityList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "preemptPriorityData" + }, + { ATF_POINTER, 1, offsetof(struct IntersectionGeometry, regional), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + 0, + &asn_DEF_regional_10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_10, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_10, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_IntersectionGeometry_oms_1[] = { 0, 4, 5, 7, 8 }; +static const ber_tlv_tag_t asn_DEF_IntersectionGeometry_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IntersectionGeometry_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* name */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* revision */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* refPoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* laneWidth */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* speedLimits */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* laneSet */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* preemptPriorityData */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_IntersectionGeometry_specs_1 = { + sizeof(struct IntersectionGeometry), + offsetof(struct IntersectionGeometry, _asn_ctx), + asn_MAP_IntersectionGeometry_tag2el_1, + 9, /* Count of tags in the map */ + asn_MAP_IntersectionGeometry_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 9, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_IntersectionGeometry = { + "IntersectionGeometry", + "IntersectionGeometry", + &asn_OP_SEQUENCE, + asn_DEF_IntersectionGeometry_tags_1, + sizeof(asn_DEF_IntersectionGeometry_tags_1) + /sizeof(asn_DEF_IntersectionGeometry_tags_1[0]), /* 1 */ + asn_DEF_IntersectionGeometry_tags_1, /* Same as above */ + sizeof(asn_DEF_IntersectionGeometry_tags_1) + /sizeof(asn_DEF_IntersectionGeometry_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_IntersectionGeometry_1, + 9, /* Elements count */ + &asn_SPC_IntersectionGeometry_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IntersectionGeometryList.c b/src/tmx/Asn_J2735/src/r2020/IntersectionGeometryList.c new file mode 100644 index 000000000..60d2518bd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IntersectionGeometryList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IntersectionGeometryList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_IntersectionGeometryList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_IntersectionGeometryList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_IntersectionGeometryList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IntersectionGeometry, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_IntersectionGeometryList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_IntersectionGeometryList_specs_1 = { + sizeof(struct IntersectionGeometryList), + offsetof(struct IntersectionGeometryList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_IntersectionGeometryList = { + "IntersectionGeometryList", + "IntersectionGeometryList", + &asn_OP_SEQUENCE_OF, + asn_DEF_IntersectionGeometryList_tags_1, + sizeof(asn_DEF_IntersectionGeometryList_tags_1) + /sizeof(asn_DEF_IntersectionGeometryList_tags_1[0]), /* 1 */ + asn_DEF_IntersectionGeometryList_tags_1, /* Same as above */ + sizeof(asn_DEF_IntersectionGeometryList_tags_1) + /sizeof(asn_DEF_IntersectionGeometryList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_IntersectionGeometryList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_IntersectionGeometryList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_IntersectionGeometryList_1, + 1, /* Single element */ + &asn_SPC_IntersectionGeometryList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IntersectionID.c b/src/tmx/Asn_J2735/src/r2020/IntersectionID.c new file mode 100644 index 000000000..ea64cb24d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IntersectionID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IntersectionID.h" + +int +IntersectionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_IntersectionID_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_IntersectionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_IntersectionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IntersectionID = { + "IntersectionID", + "IntersectionID", + &asn_OP_NativeInteger, + asn_DEF_IntersectionID_tags_1, + sizeof(asn_DEF_IntersectionID_tags_1) + /sizeof(asn_DEF_IntersectionID_tags_1[0]), /* 1 */ + asn_DEF_IntersectionID_tags_1, /* Same as above */ + sizeof(asn_DEF_IntersectionID_tags_1) + /sizeof(asn_DEF_IntersectionID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_IntersectionID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_IntersectionID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + IntersectionID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IntersectionReferenceID.c b/src/tmx/Asn_J2735/src/r2020/IntersectionReferenceID.c new file mode 100644 index 000000000..12355f463 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IntersectionReferenceID.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IntersectionReferenceID.h" + +asn_TYPE_member_t asn_MBR_IntersectionReferenceID_1[] = { + { ATF_POINTER, 1, offsetof(struct IntersectionReferenceID, region), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadRegulatorID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "region" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionReferenceID, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntersectionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, +}; +static const int asn_MAP_IntersectionReferenceID_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_IntersectionReferenceID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IntersectionReferenceID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* region */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* id */ +}; +asn_SEQUENCE_specifics_t asn_SPC_IntersectionReferenceID_specs_1 = { + sizeof(struct IntersectionReferenceID), + offsetof(struct IntersectionReferenceID, _asn_ctx), + asn_MAP_IntersectionReferenceID_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_IntersectionReferenceID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_IntersectionReferenceID = { + "IntersectionReferenceID", + "IntersectionReferenceID", + &asn_OP_SEQUENCE, + asn_DEF_IntersectionReferenceID_tags_1, + sizeof(asn_DEF_IntersectionReferenceID_tags_1) + /sizeof(asn_DEF_IntersectionReferenceID_tags_1[0]), /* 1 */ + asn_DEF_IntersectionReferenceID_tags_1, /* Same as above */ + sizeof(asn_DEF_IntersectionReferenceID_tags_1) + /sizeof(asn_DEF_IntersectionReferenceID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_IntersectionReferenceID_1, + 2, /* Elements count */ + &asn_SPC_IntersectionReferenceID_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IntersectionState-addGrpC.c b/src/tmx/Asn_J2735/src/r2020/IntersectionState-addGrpC.c new file mode 100644 index 000000000..80e765cf0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IntersectionState-addGrpC.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IntersectionState-addGrpC.h" + +asn_TYPE_member_t asn_MBR_IntersectionState_addGrpC_1[] = { + { ATF_POINTER, 1, offsetof(struct IntersectionState_addGrpC, activePrioritizations), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrioritizationResponseList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "activePrioritizations" + }, +}; +static const int asn_MAP_IntersectionState_addGrpC_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_IntersectionState_addGrpC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IntersectionState_addGrpC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* activePrioritizations */ +}; +asn_SEQUENCE_specifics_t asn_SPC_IntersectionState_addGrpC_specs_1 = { + sizeof(struct IntersectionState_addGrpC), + offsetof(struct IntersectionState_addGrpC, _asn_ctx), + asn_MAP_IntersectionState_addGrpC_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_IntersectionState_addGrpC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_IntersectionState_addGrpC = { + "IntersectionState-addGrpC", + "IntersectionState-addGrpC", + &asn_OP_SEQUENCE, + asn_DEF_IntersectionState_addGrpC_tags_1, + sizeof(asn_DEF_IntersectionState_addGrpC_tags_1) + /sizeof(asn_DEF_IntersectionState_addGrpC_tags_1[0]), /* 1 */ + asn_DEF_IntersectionState_addGrpC_tags_1, /* Same as above */ + sizeof(asn_DEF_IntersectionState_addGrpC_tags_1) + /sizeof(asn_DEF_IntersectionState_addGrpC_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_IntersectionState_addGrpC_1, + 1, /* Elements count */ + &asn_SPC_IntersectionState_addGrpC_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IntersectionState.c b/src/tmx/Asn_J2735/src/r2020/IntersectionState.c new file mode 100644 index 000000000..36fd1eac7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IntersectionState.c @@ -0,0 +1,333 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IntersectionState.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_IntersectionState, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_11[] = { + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_11 = { + sizeof(struct IntersectionState__regional), + offsetof(struct IntersectionState__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_11 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_11, + sizeof(asn_DEF_regional_tags_11) + /sizeof(asn_DEF_regional_tags_11[0]) - 1, /* 1 */ + asn_DEF_regional_tags_11, /* Same as above */ + sizeof(asn_DEF_regional_tags_11) + /sizeof(asn_DEF_regional_tags_11[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_11, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_11, + 1, /* Single element */ + &asn_SPC_regional_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_IntersectionState_1[] = { + { ATF_POINTER, 1, offsetof(struct IntersectionState, name), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DescriptiveName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "name" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionState, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntersectionReferenceID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionState, revision), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "revision" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionState, status), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntersectionStatusObject, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "status" + }, + { ATF_POINTER, 3, offsetof(struct IntersectionState, moy), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "moy" + }, + { ATF_POINTER, 2, offsetof(struct IntersectionState, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_POINTER, 1, offsetof(struct IntersectionState, enabledLanes), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EnabledLaneList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "enabledLanes" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionState, states), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MovementList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "states" + }, + { ATF_POINTER, 2, offsetof(struct IntersectionState, maneuverAssistList), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ManeuverAssistList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "maneuverAssistList" + }, + { ATF_POINTER, 1, offsetof(struct IntersectionState, regional), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + 0, + &asn_DEF_regional_11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_11, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_IntersectionState_oms_1[] = { 0, 4, 5, 6, 8, 9 }; +static const ber_tlv_tag_t asn_DEF_IntersectionState_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IntersectionState_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* name */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* revision */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* status */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* moy */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* enabledLanes */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* states */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* maneuverAssistList */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_IntersectionState_specs_1 = { + sizeof(struct IntersectionState), + offsetof(struct IntersectionState, _asn_ctx), + asn_MAP_IntersectionState_tag2el_1, + 10, /* Count of tags in the map */ + asn_MAP_IntersectionState_oms_1, /* Optional members */ + 6, 0, /* Root/Additions */ + 10, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_IntersectionState = { + "IntersectionState", + "IntersectionState", + &asn_OP_SEQUENCE, + asn_DEF_IntersectionState_tags_1, + sizeof(asn_DEF_IntersectionState_tags_1) + /sizeof(asn_DEF_IntersectionState_tags_1[0]), /* 1 */ + asn_DEF_IntersectionState_tags_1, /* Same as above */ + sizeof(asn_DEF_IntersectionState_tags_1) + /sizeof(asn_DEF_IntersectionState_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_IntersectionState_1, + 10, /* Elements count */ + &asn_SPC_IntersectionState_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IntersectionStateList.c b/src/tmx/Asn_J2735/src/r2020/IntersectionStateList.c new file mode 100644 index 000000000..6e2e3e2b8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IntersectionStateList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IntersectionStateList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_IntersectionStateList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_IntersectionStateList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_IntersectionStateList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IntersectionState, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_IntersectionStateList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_IntersectionStateList_specs_1 = { + sizeof(struct IntersectionStateList), + offsetof(struct IntersectionStateList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_IntersectionStateList = { + "IntersectionStateList", + "IntersectionStateList", + &asn_OP_SEQUENCE_OF, + asn_DEF_IntersectionStateList_tags_1, + sizeof(asn_DEF_IntersectionStateList_tags_1) + /sizeof(asn_DEF_IntersectionStateList_tags_1[0]), /* 1 */ + asn_DEF_IntersectionStateList_tags_1, /* Same as above */ + sizeof(asn_DEF_IntersectionStateList_tags_1) + /sizeof(asn_DEF_IntersectionStateList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_IntersectionStateList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_IntersectionStateList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_IntersectionStateList_1, + 1, /* Single element */ + &asn_SPC_IntersectionStateList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IntersectionStatusObject.c b/src/tmx/Asn_J2735/src/r2020/IntersectionStatusObject.c new file mode 100644 index 000000000..1a0f5da10 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IntersectionStatusObject.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IntersectionStatusObject.h" + +int +IntersectionStatusObject_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_IntersectionStatusObject_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_IntersectionStatusObject_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_IntersectionStatusObject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IntersectionStatusObject = { + "IntersectionStatusObject", + "IntersectionStatusObject", + &asn_OP_BIT_STRING, + asn_DEF_IntersectionStatusObject_tags_1, + sizeof(asn_DEF_IntersectionStatusObject_tags_1) + /sizeof(asn_DEF_IntersectionStatusObject_tags_1[0]), /* 1 */ + asn_DEF_IntersectionStatusObject_tags_1, /* Same as above */ + sizeof(asn_DEF_IntersectionStatusObject_tags_1) + /sizeof(asn_DEF_IntersectionStatusObject_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_IntersectionStatusObject_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_IntersectionStatusObject_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + IntersectionStatusObject_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/IsDolly.c b/src/tmx/Asn_J2735/src/r2020/IsDolly.c new file mode 100644 index 000000000..674cf7fa5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/IsDolly.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "IsDolly.h" + +/* + * This type is implemented using BOOLEAN, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_IsDolly_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IsDolly = { + "IsDolly", + "IsDolly", + &asn_OP_BOOLEAN, + asn_DEF_IsDolly_tags_1, + sizeof(asn_DEF_IsDolly_tags_1) + /sizeof(asn_DEF_IsDolly_tags_1[0]), /* 1 */ + asn_DEF_IsDolly_tags_1, /* Same as above */ + sizeof(asn_DEF_IsDolly_tags_1) + /sizeof(asn_DEF_IsDolly_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BOOLEAN_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Iso3833VehicleType.c b/src/tmx/Asn_J2735/src/r2020/Iso3833VehicleType.c new file mode 100644 index 000000000..0b85b106e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Iso3833VehicleType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Iso3833VehicleType.h" + +int +Iso3833VehicleType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 100L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Iso3833VehicleType_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..100) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Iso3833VehicleType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Iso3833VehicleType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Iso3833VehicleType = { + "Iso3833VehicleType", + "Iso3833VehicleType", + &asn_OP_NativeInteger, + asn_DEF_Iso3833VehicleType_tags_1, + sizeof(asn_DEF_Iso3833VehicleType_tags_1) + /sizeof(asn_DEF_Iso3833VehicleType_tags_1[0]), /* 1 */ + asn_DEF_Iso3833VehicleType_tags_1, /* Same as above */ + sizeof(asn_DEF_Iso3833VehicleType_tags_1) + /sizeof(asn_DEF_Iso3833VehicleType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Iso3833VehicleType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Iso3833VehicleType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Iso3833VehicleType_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/J1939data.c b/src/tmx/Asn_J2735/src/r2020/J1939data.c new file mode 100644 index 000000000..cf7007321 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/J1939data.c @@ -0,0 +1,230 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "J1939data.h" + +asn_TYPE_member_t asn_MBR_J1939data_1[] = { + { ATF_POINTER, 10, offsetof(struct J1939data, tires), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TireDataList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "tires" + }, + { ATF_POINTER, 9, offsetof(struct J1939data, axles), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AxleWeightList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "axles" + }, + { ATF_POINTER, 8, offsetof(struct J1939data, trailerWeight), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrailerWeight, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trailerWeight" + }, + { ATF_POINTER, 7, offsetof(struct J1939data, cargoWeight), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CargoWeight, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cargoWeight" + }, + { ATF_POINTER, 6, offsetof(struct J1939data, steeringAxleTemperature), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SteeringAxleTemperature, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "steeringAxleTemperature" + }, + { ATF_POINTER, 5, offsetof(struct J1939data, driveAxleLocation), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DriveAxleLocation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "driveAxleLocation" + }, + { ATF_POINTER, 4, offsetof(struct J1939data, driveAxleLiftAirPressure), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DriveAxleLiftAirPressure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "driveAxleLiftAirPressure" + }, + { ATF_POINTER, 3, offsetof(struct J1939data, driveAxleTemperature), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DriveAxleTemperature, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "driveAxleTemperature" + }, + { ATF_POINTER, 2, offsetof(struct J1939data, driveAxleLubePressure), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DriveAxleLubePressure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "driveAxleLubePressure" + }, + { ATF_POINTER, 1, offsetof(struct J1939data, steeringAxleLubePressure), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SteeringAxleLubePressure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "steeringAxleLubePressure" + }, +}; +static const int asn_MAP_J1939data_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; +static const ber_tlv_tag_t asn_DEF_J1939data_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_J1939data_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tires */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* axles */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* trailerWeight */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* cargoWeight */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* steeringAxleTemperature */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* driveAxleLocation */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* driveAxleLiftAirPressure */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* driveAxleTemperature */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* driveAxleLubePressure */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* steeringAxleLubePressure */ +}; +asn_SEQUENCE_specifics_t asn_SPC_J1939data_specs_1 = { + sizeof(struct J1939data), + offsetof(struct J1939data, _asn_ctx), + asn_MAP_J1939data_tag2el_1, + 10, /* Count of tags in the map */ + asn_MAP_J1939data_oms_1, /* Optional members */ + 10, 0, /* Root/Additions */ + 10, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_J1939data = { + "J1939data", + "J1939data", + &asn_OP_SEQUENCE, + asn_DEF_J1939data_tags_1, + sizeof(asn_DEF_J1939data_tags_1) + /sizeof(asn_DEF_J1939data_tags_1[0]), /* 1 */ + asn_DEF_J1939data_tags_1, /* Same as above */ + sizeof(asn_DEF_J1939data_tags_1) + /sizeof(asn_DEF_J1939data_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_J1939data_1, + 10, /* Elements count */ + &asn_SPC_J1939data_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Barrier.c b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Barrier.c new file mode 100644 index 000000000..baa043408 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Barrier.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneAttributes-Barrier.h" + +int +LaneAttributes_Barrier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneAttributes_Barrier_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneAttributes_Barrier_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneAttributes_Barrier_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Barrier = { + "LaneAttributes-Barrier", + "LaneAttributes-Barrier", + &asn_OP_BIT_STRING, + asn_DEF_LaneAttributes_Barrier_tags_1, + sizeof(asn_DEF_LaneAttributes_Barrier_tags_1) + /sizeof(asn_DEF_LaneAttributes_Barrier_tags_1[0]), /* 1 */ + asn_DEF_LaneAttributes_Barrier_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneAttributes_Barrier_tags_1) + /sizeof(asn_DEF_LaneAttributes_Barrier_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneAttributes_Barrier_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneAttributes_Barrier_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneAttributes_Barrier_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Bike.c b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Bike.c new file mode 100644 index 000000000..95fc11063 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Bike.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneAttributes-Bike.h" + +int +LaneAttributes_Bike_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneAttributes_Bike_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneAttributes_Bike_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneAttributes_Bike_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Bike = { + "LaneAttributes-Bike", + "LaneAttributes-Bike", + &asn_OP_BIT_STRING, + asn_DEF_LaneAttributes_Bike_tags_1, + sizeof(asn_DEF_LaneAttributes_Bike_tags_1) + /sizeof(asn_DEF_LaneAttributes_Bike_tags_1[0]), /* 1 */ + asn_DEF_LaneAttributes_Bike_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneAttributes_Bike_tags_1) + /sizeof(asn_DEF_LaneAttributes_Bike_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneAttributes_Bike_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneAttributes_Bike_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneAttributes_Bike_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Crosswalk.c b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Crosswalk.c new file mode 100644 index 000000000..21e587082 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Crosswalk.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneAttributes-Crosswalk.h" + +int +LaneAttributes_Crosswalk_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneAttributes_Crosswalk_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneAttributes_Crosswalk_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneAttributes_Crosswalk_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Crosswalk = { + "LaneAttributes-Crosswalk", + "LaneAttributes-Crosswalk", + &asn_OP_BIT_STRING, + asn_DEF_LaneAttributes_Crosswalk_tags_1, + sizeof(asn_DEF_LaneAttributes_Crosswalk_tags_1) + /sizeof(asn_DEF_LaneAttributes_Crosswalk_tags_1[0]), /* 1 */ + asn_DEF_LaneAttributes_Crosswalk_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneAttributes_Crosswalk_tags_1) + /sizeof(asn_DEF_LaneAttributes_Crosswalk_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneAttributes_Crosswalk_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneAttributes_Crosswalk_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneAttributes_Crosswalk_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Parking.c b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Parking.c new file mode 100644 index 000000000..006f75562 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Parking.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneAttributes-Parking.h" + +int +LaneAttributes_Parking_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneAttributes_Parking_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneAttributes_Parking_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneAttributes_Parking_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Parking = { + "LaneAttributes-Parking", + "LaneAttributes-Parking", + &asn_OP_BIT_STRING, + asn_DEF_LaneAttributes_Parking_tags_1, + sizeof(asn_DEF_LaneAttributes_Parking_tags_1) + /sizeof(asn_DEF_LaneAttributes_Parking_tags_1[0]), /* 1 */ + asn_DEF_LaneAttributes_Parking_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneAttributes_Parking_tags_1) + /sizeof(asn_DEF_LaneAttributes_Parking_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneAttributes_Parking_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneAttributes_Parking_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneAttributes_Parking_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Sidewalk.c b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Sidewalk.c new file mode 100644 index 000000000..86e6627d0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Sidewalk.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneAttributes-Sidewalk.h" + +int +LaneAttributes_Sidewalk_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneAttributes_Sidewalk_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneAttributes_Sidewalk_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneAttributes_Sidewalk_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Sidewalk = { + "LaneAttributes-Sidewalk", + "LaneAttributes-Sidewalk", + &asn_OP_BIT_STRING, + asn_DEF_LaneAttributes_Sidewalk_tags_1, + sizeof(asn_DEF_LaneAttributes_Sidewalk_tags_1) + /sizeof(asn_DEF_LaneAttributes_Sidewalk_tags_1[0]), /* 1 */ + asn_DEF_LaneAttributes_Sidewalk_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneAttributes_Sidewalk_tags_1) + /sizeof(asn_DEF_LaneAttributes_Sidewalk_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneAttributes_Sidewalk_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneAttributes_Sidewalk_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneAttributes_Sidewalk_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Striping.c b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Striping.c new file mode 100644 index 000000000..486af6d5c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Striping.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneAttributes-Striping.h" + +int +LaneAttributes_Striping_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneAttributes_Striping_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneAttributes_Striping_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneAttributes_Striping_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Striping = { + "LaneAttributes-Striping", + "LaneAttributes-Striping", + &asn_OP_BIT_STRING, + asn_DEF_LaneAttributes_Striping_tags_1, + sizeof(asn_DEF_LaneAttributes_Striping_tags_1) + /sizeof(asn_DEF_LaneAttributes_Striping_tags_1[0]), /* 1 */ + asn_DEF_LaneAttributes_Striping_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneAttributes_Striping_tags_1) + /sizeof(asn_DEF_LaneAttributes_Striping_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneAttributes_Striping_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneAttributes_Striping_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneAttributes_Striping_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneAttributes-TrackedVehicle.c b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-TrackedVehicle.c new file mode 100644 index 000000000..005de4068 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-TrackedVehicle.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneAttributes-TrackedVehicle.h" + +int +LaneAttributes_TrackedVehicle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneAttributes_TrackedVehicle_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneAttributes_TrackedVehicle_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneAttributes_TrackedVehicle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneAttributes_TrackedVehicle = { + "LaneAttributes-TrackedVehicle", + "LaneAttributes-TrackedVehicle", + &asn_OP_BIT_STRING, + asn_DEF_LaneAttributes_TrackedVehicle_tags_1, + sizeof(asn_DEF_LaneAttributes_TrackedVehicle_tags_1) + /sizeof(asn_DEF_LaneAttributes_TrackedVehicle_tags_1[0]), /* 1 */ + asn_DEF_LaneAttributes_TrackedVehicle_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneAttributes_TrackedVehicle_tags_1) + /sizeof(asn_DEF_LaneAttributes_TrackedVehicle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneAttributes_TrackedVehicle_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneAttributes_TrackedVehicle_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneAttributes_TrackedVehicle_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Vehicle.c b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Vehicle.c new file mode 100644 index 000000000..9478b18ba --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneAttributes-Vehicle.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneAttributes-Vehicle.h" + +int +LaneAttributes_Vehicle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneAttributes_Vehicle_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneAttributes_Vehicle_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 8, 8 } /* (SIZE(8..8,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneAttributes_Vehicle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneAttributes_Vehicle = { + "LaneAttributes-Vehicle", + "LaneAttributes-Vehicle", + &asn_OP_BIT_STRING, + asn_DEF_LaneAttributes_Vehicle_tags_1, + sizeof(asn_DEF_LaneAttributes_Vehicle_tags_1) + /sizeof(asn_DEF_LaneAttributes_Vehicle_tags_1[0]), /* 1 */ + asn_DEF_LaneAttributes_Vehicle_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneAttributes_Vehicle_tags_1) + /sizeof(asn_DEF_LaneAttributes_Vehicle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneAttributes_Vehicle_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneAttributes_Vehicle_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneAttributes_Vehicle_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneAttributes.c b/src/tmx/Asn_J2735/src/r2020/LaneAttributes.c new file mode 100644 index 000000000..471526760 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneAttributes.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneAttributes.h" + +asn_TYPE_member_t asn_MBR_LaneAttributes_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LaneAttributes, directionalUse), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneDirection, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "directionalUse" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneAttributes, sharedWith), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneSharing, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sharedWith" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneAttributes, laneType), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_LaneTypeAttributes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneType" + }, + { ATF_POINTER, 1, offsetof(struct LaneAttributes, regional), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_LaneAttributes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_LaneAttributes_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_LaneAttributes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LaneAttributes_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* directionalUse */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sharedWith */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* laneType */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LaneAttributes_specs_1 = { + sizeof(struct LaneAttributes), + offsetof(struct LaneAttributes, _asn_ctx), + asn_MAP_LaneAttributes_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_LaneAttributes_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LaneAttributes = { + "LaneAttributes", + "LaneAttributes", + &asn_OP_SEQUENCE, + asn_DEF_LaneAttributes_tags_1, + sizeof(asn_DEF_LaneAttributes_tags_1) + /sizeof(asn_DEF_LaneAttributes_tags_1[0]), /* 1 */ + asn_DEF_LaneAttributes_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneAttributes_tags_1) + /sizeof(asn_DEF_LaneAttributes_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_LaneAttributes_1, + 4, /* Elements count */ + &asn_SPC_LaneAttributes_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneConnectionID.c b/src/tmx/Asn_J2735/src/r2020/LaneConnectionID.c new file mode 100644 index 000000000..333f04468 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneConnectionID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneConnectionID.h" + +int +LaneConnectionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneConnectionID_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneConnectionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneConnectionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneConnectionID = { + "LaneConnectionID", + "LaneConnectionID", + &asn_OP_NativeInteger, + asn_DEF_LaneConnectionID_tags_1, + sizeof(asn_DEF_LaneConnectionID_tags_1) + /sizeof(asn_DEF_LaneConnectionID_tags_1[0]), /* 1 */ + asn_DEF_LaneConnectionID_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneConnectionID_tags_1) + /sizeof(asn_DEF_LaneConnectionID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneConnectionID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneConnectionID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneConnectionID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneDataAttribute-addGrpB.c b/src/tmx/Asn_J2735/src/r2020/LaneDataAttribute-addGrpB.c new file mode 100644 index 000000000..b3c72e982 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneDataAttribute-addGrpB.c @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneDataAttribute-addGrpB.h" + +static const ber_tlv_tag_t asn_DEF_LaneDataAttribute_addGrpB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SEQUENCE_specifics_t asn_SPC_LaneDataAttribute_addGrpB_specs_1 = { + sizeof(struct LaneDataAttribute_addGrpB), + offsetof(struct LaneDataAttribute_addGrpB, _asn_ctx), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LaneDataAttribute_addGrpB = { + "LaneDataAttribute-addGrpB", + "LaneDataAttribute-addGrpB", + &asn_OP_SEQUENCE, + asn_DEF_LaneDataAttribute_addGrpB_tags_1, + sizeof(asn_DEF_LaneDataAttribute_addGrpB_tags_1) + /sizeof(asn_DEF_LaneDataAttribute_addGrpB_tags_1[0]), /* 1 */ + asn_DEF_LaneDataAttribute_addGrpB_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneDataAttribute_addGrpB_tags_1) + /sizeof(asn_DEF_LaneDataAttribute_addGrpB_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_LaneDataAttribute_addGrpB_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneDataAttribute.c b/src/tmx/Asn_J2735/src/r2020/LaneDataAttribute.c new file mode 100644 index 000000000..ea79742fd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneDataAttribute.c @@ -0,0 +1,286 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneDataAttribute.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneDataAttribute_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneDataAttribute_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_8[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_LaneDataAttribute, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_8[] = { + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_8 = { + sizeof(struct LaneDataAttribute__regional), + offsetof(struct LaneDataAttribute__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_8 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_8, + sizeof(asn_DEF_regional_tags_8) + /sizeof(asn_DEF_regional_tags_8[0]) - 1, /* 1 */ + asn_DEF_regional_tags_8, /* Same as above */ + sizeof(asn_DEF_regional_tags_8) + /sizeof(asn_DEF_regional_tags_8[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_8, + 1, /* Single element */ + &asn_SPC_regional_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_LaneDataAttribute_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LaneDataAttribute, choice.pathEndPointAngle), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pathEndPointAngle" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneDataAttribute, choice.laneCrownPointCenter), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadwayCrownAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneCrownPointCenter" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneDataAttribute, choice.laneCrownPointLeft), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadwayCrownAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneCrownPointLeft" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneDataAttribute, choice.laneCrownPointRight), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadwayCrownAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneCrownPointRight" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneDataAttribute, choice.laneAngle), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MergeDivergeNodeAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneAngle" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneDataAttribute, choice.speedLimits), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedLimitList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedLimits" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneDataAttribute, choice.regional), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + 0, + &asn_DEF_regional_8, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_LaneDataAttribute_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pathEndPointAngle */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* laneCrownPointCenter */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* laneCrownPointLeft */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* laneCrownPointRight */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* laneAngle */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* speedLimits */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* regional */ +}; +asn_CHOICE_specifics_t asn_SPC_LaneDataAttribute_specs_1 = { + sizeof(struct LaneDataAttribute), + offsetof(struct LaneDataAttribute, _asn_ctx), + offsetof(struct LaneDataAttribute, present), + sizeof(((struct LaneDataAttribute *)0)->present), + asn_MAP_LaneDataAttribute_tag2el_1, + 7, /* Count of tags in the map */ + 0, 0, + 7 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_LaneDataAttribute = { + "LaneDataAttribute", + "LaneDataAttribute", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneDataAttribute_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneDataAttribute_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_LaneDataAttribute_1, + 7, /* Elements count */ + &asn_SPC_LaneDataAttribute_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneDataAttributeList.c b/src/tmx/Asn_J2735/src/r2020/LaneDataAttributeList.c new file mode 100644 index 000000000..001029557 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneDataAttributeList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneDataAttributeList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneDataAttributeList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneDataAttributeList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_LaneDataAttributeList_1[] = { + { ATF_POINTER, 0, 0, + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_LaneDataAttribute, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_LaneDataAttributeList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_LaneDataAttributeList_specs_1 = { + sizeof(struct LaneDataAttributeList), + offsetof(struct LaneDataAttributeList, _asn_ctx), + 2, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_LaneDataAttributeList = { + "LaneDataAttributeList", + "LaneDataAttributeList", + &asn_OP_SEQUENCE_OF, + asn_DEF_LaneDataAttributeList_tags_1, + sizeof(asn_DEF_LaneDataAttributeList_tags_1) + /sizeof(asn_DEF_LaneDataAttributeList_tags_1[0]), /* 1 */ + asn_DEF_LaneDataAttributeList_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneDataAttributeList_tags_1) + /sizeof(asn_DEF_LaneDataAttributeList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneDataAttributeList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneDataAttributeList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_LaneDataAttributeList_1, + 1, /* Single element */ + &asn_SPC_LaneDataAttributeList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneDirection.c b/src/tmx/Asn_J2735/src/r2020/LaneDirection.c new file mode 100644 index 000000000..b9cd8073b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneDirection.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneDirection.h" + +int +LaneDirection_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 2UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneDirection_constr_1 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneDirection_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneDirection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneDirection = { + "LaneDirection", + "LaneDirection", + &asn_OP_BIT_STRING, + asn_DEF_LaneDirection_tags_1, + sizeof(asn_DEF_LaneDirection_tags_1) + /sizeof(asn_DEF_LaneDirection_tags_1[0]), /* 1 */ + asn_DEF_LaneDirection_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneDirection_tags_1) + /sizeof(asn_DEF_LaneDirection_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneDirection_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneDirection_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneDirection_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneID.c b/src/tmx/Asn_J2735/src/r2020/LaneID.c new file mode 100644 index 000000000..b04e299bf --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneID.h" + +int +LaneID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneID_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneID = { + "LaneID", + "LaneID", + &asn_OP_NativeInteger, + asn_DEF_LaneID_tags_1, + sizeof(asn_DEF_LaneID_tags_1) + /sizeof(asn_DEF_LaneID_tags_1[0]), /* 1 */ + asn_DEF_LaneID_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneID_tags_1) + /sizeof(asn_DEF_LaneID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneList.c b/src/tmx/Asn_J2735/src/r2020/LaneList.c new file mode 100644 index 000000000..f41b17fe6 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_LaneList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GenericLane, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_LaneList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_LaneList_specs_1 = { + sizeof(struct LaneList), + offsetof(struct LaneList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_LaneList = { + "LaneList", + "LaneList", + &asn_OP_SEQUENCE_OF, + asn_DEF_LaneList_tags_1, + sizeof(asn_DEF_LaneList_tags_1) + /sizeof(asn_DEF_LaneList_tags_1[0]), /* 1 */ + asn_DEF_LaneList_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneList_tags_1) + /sizeof(asn_DEF_LaneList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_LaneList_1, + 1, /* Single element */ + &asn_SPC_LaneList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneSharing.c b/src/tmx/Asn_J2735/src/r2020/LaneSharing.c new file mode 100644 index 000000000..6d4c4f7c1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneSharing.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneSharing.h" + +int +LaneSharing_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 10UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneSharing_constr_1 CC_NOTUSED = { + { 0, 0 }, + 10 /* (SIZE(10..10)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneSharing_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 10, 10 } /* (SIZE(10..10)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneSharing_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneSharing = { + "LaneSharing", + "LaneSharing", + &asn_OP_BIT_STRING, + asn_DEF_LaneSharing_tags_1, + sizeof(asn_DEF_LaneSharing_tags_1) + /sizeof(asn_DEF_LaneSharing_tags_1[0]), /* 1 */ + asn_DEF_LaneSharing_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneSharing_tags_1) + /sizeof(asn_DEF_LaneSharing_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneSharing_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneSharing_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneSharing_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneTypeAttributes.c b/src/tmx/Asn_J2735/src/r2020/LaneTypeAttributes.c new file mode 100644 index 000000000..32c536e50 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneTypeAttributes.c @@ -0,0 +1,201 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneTypeAttributes.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneTypeAttributes_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneTypeAttributes_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_LaneTypeAttributes_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LaneTypeAttributes, choice.vehicle), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneAttributes_Vehicle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicle" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneTypeAttributes, choice.crosswalk), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneAttributes_Crosswalk, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "crosswalk" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneTypeAttributes, choice.bikeLane), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneAttributes_Bike, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "bikeLane" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneTypeAttributes, choice.sidewalk), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneAttributes_Sidewalk, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sidewalk" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneTypeAttributes, choice.median), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneAttributes_Barrier, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "median" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneTypeAttributes, choice.striping), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneAttributes_Striping, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "striping" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneTypeAttributes, choice.trackedVehicle), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneAttributes_TrackedVehicle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trackedVehicle" + }, + { ATF_NOFLAGS, 0, offsetof(struct LaneTypeAttributes, choice.parking), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneAttributes_Parking, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "parking" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_LaneTypeAttributes_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vehicle */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* crosswalk */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bikeLane */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sidewalk */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* median */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* striping */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* trackedVehicle */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* parking */ +}; +asn_CHOICE_specifics_t asn_SPC_LaneTypeAttributes_specs_1 = { + sizeof(struct LaneTypeAttributes), + offsetof(struct LaneTypeAttributes, _asn_ctx), + offsetof(struct LaneTypeAttributes, present), + sizeof(((struct LaneTypeAttributes *)0)->present), + asn_MAP_LaneTypeAttributes_tag2el_1, + 8, /* Count of tags in the map */ + 0, 0, + 8 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_LaneTypeAttributes = { + "LaneTypeAttributes", + "LaneTypeAttributes", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneTypeAttributes_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneTypeAttributes_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_LaneTypeAttributes_1, + 8, /* Elements count */ + &asn_SPC_LaneTypeAttributes_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LaneWidth.c b/src/tmx/Asn_J2735/src/r2020/LaneWidth.c new file mode 100644 index 000000000..a688c0aed --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LaneWidth.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LaneWidth.h" + +int +LaneWidth_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneWidth_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneWidth_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32767 } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneWidth_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneWidth = { + "LaneWidth", + "LaneWidth", + &asn_OP_NativeInteger, + asn_DEF_LaneWidth_tags_1, + sizeof(asn_DEF_LaneWidth_tags_1) + /sizeof(asn_DEF_LaneWidth_tags_1[0]), /* 1 */ + asn_DEF_LaneWidth_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneWidth_tags_1) + /sizeof(asn_DEF_LaneWidth_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneWidth_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneWidth_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneWidth_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Latitude.c b/src/tmx/Asn_J2735/src/r2020/Latitude.c new file mode 100644 index 000000000..8eef96907 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Latitude.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Latitude.h" + +int +Latitude_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -900000000L && value <= 900000001L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Latitude_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-900000000..900000001) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Latitude_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 31, -1, -900000000, 900000001 } /* (-900000000..900000001) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Latitude_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Latitude = { + "Latitude", + "Latitude", + &asn_OP_NativeInteger, + asn_DEF_Latitude_tags_1, + sizeof(asn_DEF_Latitude_tags_1) + /sizeof(asn_DEF_Latitude_tags_1[0]), /* 1 */ + asn_DEF_Latitude_tags_1, /* Same as above */ + sizeof(asn_DEF_Latitude_tags_1) + /sizeof(asn_DEF_Latitude_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Latitude_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Latitude_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Latitude_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LatitudeDMS.c b/src/tmx/Asn_J2735/src/r2020/LatitudeDMS.c new file mode 100644 index 000000000..83f85c61e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LatitudeDMS.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LatitudeDMS.h" + +int +LatitudeDMS_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32400000L && value <= 32400000L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LatitudeDMS_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-32400000..32400000) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LatitudeDMS_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 26, -1, -32400000, 32400000 } /* (-32400000..32400000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LatitudeDMS_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LatitudeDMS = { + "LatitudeDMS", + "LatitudeDMS", + &asn_OP_NativeInteger, + asn_DEF_LatitudeDMS_tags_1, + sizeof(asn_DEF_LatitudeDMS_tags_1) + /sizeof(asn_DEF_LatitudeDMS_tags_1[0]), /* 1 */ + asn_DEF_LatitudeDMS_tags_1, /* Same as above */ + sizeof(asn_DEF_LatitudeDMS_tags_1) + /sizeof(asn_DEF_LatitudeDMS_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LatitudeDMS_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LatitudeDMS_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LatitudeDMS_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LatitudeDMS2.c b/src/tmx/Asn_J2735/src/r2020/LatitudeDMS2.c new file mode 100644 index 000000000..66d2feef4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LatitudeDMS2.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LatitudeDMS2.h" + +asn_TYPE_member_t asn_MBR_LatitudeDMS2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LatitudeDMS2, d), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DegreesLat, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "d" + }, + { ATF_NOFLAGS, 0, offsetof(struct LatitudeDMS2, m), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinutesAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "m" + }, + { ATF_NOFLAGS, 0, offsetof(struct LatitudeDMS2, s), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SecondsAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "s" + }, +}; +static const ber_tlv_tag_t asn_DEF_LatitudeDMS2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LatitudeDMS2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* d */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* s */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LatitudeDMS2_specs_1 = { + sizeof(struct LatitudeDMS2), + offsetof(struct LatitudeDMS2, _asn_ctx), + asn_MAP_LatitudeDMS2_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LatitudeDMS2 = { + "LatitudeDMS2", + "LatitudeDMS2", + &asn_OP_SEQUENCE, + asn_DEF_LatitudeDMS2_tags_1, + sizeof(asn_DEF_LatitudeDMS2_tags_1) + /sizeof(asn_DEF_LatitudeDMS2_tags_1[0]), /* 1 */ + asn_DEF_LatitudeDMS2_tags_1, /* Same as above */ + sizeof(asn_DEF_LatitudeDMS2_tags_1) + /sizeof(asn_DEF_LatitudeDMS2_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_LatitudeDMS2_1, + 3, /* Elements count */ + &asn_SPC_LatitudeDMS2_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LayerID.c b/src/tmx/Asn_J2735/src/r2020/LayerID.c new file mode 100644 index 000000000..a7e02ee36 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LayerID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LayerID.h" + +int +LayerID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 100L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LayerID_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..100) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LayerID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LayerID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LayerID = { + "LayerID", + "LayerID", + &asn_OP_NativeInteger, + asn_DEF_LayerID_tags_1, + sizeof(asn_DEF_LayerID_tags_1) + /sizeof(asn_DEF_LayerID_tags_1[0]), /* 1 */ + asn_DEF_LayerID_tags_1, /* Same as above */ + sizeof(asn_DEF_LayerID_tags_1) + /sizeof(asn_DEF_LayerID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LayerID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LayerID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LayerID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LayerType.c b/src/tmx/Asn_J2735/src/r2020/LayerType.c new file mode 100644 index 000000000..82c476608 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LayerType.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LayerType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LayerType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LayerType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_LayerType_value2enum_1[] = { + { 0, 4, "none" }, + { 1, 12, "mixedContent" }, + { 2, 14, "generalMapData" }, + { 3, 16, "intersectionData" }, + { 4, 9, "curveData" }, + { 5, 18, "roadwaySectionData" }, + { 6, 15, "parkingAreaData" }, + { 7, 14, "sharedLaneData" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_LayerType_enum2value_1[] = { + 4, /* curveData(4) */ + 2, /* generalMapData(2) */ + 3, /* intersectionData(3) */ + 1, /* mixedContent(1) */ + 0, /* none(0) */ + 6, /* parkingAreaData(6) */ + 5, /* roadwaySectionData(5) */ + 7 /* sharedLaneData(7) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_LayerType_specs_1 = { + asn_MAP_LayerType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_LayerType_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 9, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_LayerType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LayerType = { + "LayerType", + "LayerType", + &asn_OP_NativeEnumerated, + asn_DEF_LayerType_tags_1, + sizeof(asn_DEF_LayerType_tags_1) + /sizeof(asn_DEF_LayerType_tags_1[0]), /* 1 */ + asn_DEF_LayerType_tags_1, /* Same as above */ + sizeof(asn_DEF_LayerType_tags_1) + /sizeof(asn_DEF_LayerType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LayerType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LayerType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_LayerType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LightbarInUse.c b/src/tmx/Asn_J2735/src/r2020/LightbarInUse.c new file mode 100644 index 000000000..04ea45759 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LightbarInUse.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LightbarInUse.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LightbarInUse_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LightbarInUse_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_LightbarInUse_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 8, "notInUse" }, + { 2, 5, "inUse" }, + { 3, 19, "yellowCautionLights" }, + { 4, 16, "schooldBusLights" }, + { 5, 16, "arrowSignsActive" }, + { 6, 17, "slowMovingVehicle" }, + { 7, 9, "freqStops" } +}; +static const unsigned int asn_MAP_LightbarInUse_enum2value_1[] = { + 5, /* arrowSignsActive(5) */ + 7, /* freqStops(7) */ + 2, /* inUse(2) */ + 1, /* notInUse(1) */ + 4, /* schooldBusLights(4) */ + 6, /* slowMovingVehicle(6) */ + 0, /* unavailable(0) */ + 3 /* yellowCautionLights(3) */ +}; +const asn_INTEGER_specifics_t asn_SPC_LightbarInUse_specs_1 = { + asn_MAP_LightbarInUse_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_LightbarInUse_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_LightbarInUse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LightbarInUse = { + "LightbarInUse", + "LightbarInUse", + &asn_OP_NativeEnumerated, + asn_DEF_LightbarInUse_tags_1, + sizeof(asn_DEF_LightbarInUse_tags_1) + /sizeof(asn_DEF_LightbarInUse_tags_1[0]), /* 1 */ + asn_DEF_LightbarInUse_tags_1, /* Same as above */ + sizeof(asn_DEF_LightbarInUse_tags_1) + /sizeof(asn_DEF_LightbarInUse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LightbarInUse_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LightbarInUse_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_LightbarInUse_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Location-quality.c b/src/tmx/Asn_J2735/src/r2020/Location-quality.c new file mode 100644 index 000000000..c425d5b84 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Location-quality.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Location-quality.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Location_quality_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_Location_quality_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_Location_quality_value2enum_1[] = { + { 0, 13, "loc-qual-bt1m" }, + { 1, 13, "loc-qual-bt5m" }, + { 2, 14, "loc-qual-bt12m" }, + { 3, 14, "loc-qual-bt50m" }, + { 4, 15, "loc-qual-bt125m" }, + { 5, 15, "loc-qual-bt500m" }, + { 6, 16, "loc-qual-bt1250m" }, + { 7, 16, "loc-qual-unknown" } +}; +static const unsigned int asn_MAP_Location_quality_enum2value_1[] = { + 6, /* loc-qual-bt1250m(6) */ + 4, /* loc-qual-bt125m(4) */ + 2, /* loc-qual-bt12m(2) */ + 0, /* loc-qual-bt1m(0) */ + 5, /* loc-qual-bt500m(5) */ + 3, /* loc-qual-bt50m(3) */ + 1, /* loc-qual-bt5m(1) */ + 7 /* loc-qual-unknown(7) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_Location_quality_specs_1 = { + asn_MAP_Location_quality_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Location_quality_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Location_quality_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Location_quality = { + "Location-quality", + "Location-quality", + &asn_OP_NativeEnumerated, + asn_DEF_Location_quality_tags_1, + sizeof(asn_DEF_Location_quality_tags_1) + /sizeof(asn_DEF_Location_quality_tags_1[0]), /* 1 */ + asn_DEF_Location_quality_tags_1, /* Same as above */ + sizeof(asn_DEF_Location_quality_tags_1) + /sizeof(asn_DEF_Location_quality_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Location_quality_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Location_quality_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Location_quality_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Location-tech.c b/src/tmx/Asn_J2735/src/r2020/Location-tech.c new file mode 100644 index 000000000..e3f41212b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Location-tech.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Location-tech.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Location_tech_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_Location_tech_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 9 } /* (0..9,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_Location_tech_value2enum_1[] = { + { 0, 16, "loc-tech-unknown" }, + { 1, 13, "loc-tech-GNSS" }, + { 2, 13, "loc-tech-DGPS" }, + { 3, 12, "loc-tech-RTK" }, + { 4, 12, "loc-tech-PPP" }, + { 5, 14, "loc-tech-drGPS" }, + { 6, 15, "loc-tech-drDGPS" }, + { 7, 11, "loc-tech-dr" }, + { 8, 12, "loc-tech-nav" }, + { 9, 14, "loc-tech-fault" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Location_tech_enum2value_1[] = { + 2, /* loc-tech-DGPS(2) */ + 1, /* loc-tech-GNSS(1) */ + 4, /* loc-tech-PPP(4) */ + 3, /* loc-tech-RTK(3) */ + 7, /* loc-tech-dr(7) */ + 6, /* loc-tech-drDGPS(6) */ + 5, /* loc-tech-drGPS(5) */ + 9, /* loc-tech-fault(9) */ + 8, /* loc-tech-nav(8) */ + 0 /* loc-tech-unknown(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_Location_tech_specs_1 = { + asn_MAP_Location_tech_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Location_tech_enum2value_1, /* N => "tag"; sorted by N */ + 10, /* Number of elements in the maps */ + 11, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Location_tech_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Location_tech = { + "Location-tech", + "Location-tech", + &asn_OP_NativeEnumerated, + asn_DEF_Location_tech_tags_1, + sizeof(asn_DEF_Location_tech_tags_1) + /sizeof(asn_DEF_Location_tech_tags_1[0]), /* 1 */ + asn_DEF_Location_tech_tags_1, /* Same as above */ + sizeof(asn_DEF_Location_tech_tags_1) + /sizeof(asn_DEF_Location_tech_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Location_tech_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Location_tech_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Location_tech_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Longitude.c b/src/tmx/Asn_J2735/src/r2020/Longitude.c new file mode 100644 index 000000000..55bfb90bc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Longitude.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Longitude.h" + +int +Longitude_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -1799999999L && value <= 1800000001L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Longitude_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-1799999999..1800000001) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Longitude_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, -1799999999, 1800000001 } /* (-1799999999..1800000001) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Longitude_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Longitude = { + "Longitude", + "Longitude", + &asn_OP_NativeInteger, + asn_DEF_Longitude_tags_1, + sizeof(asn_DEF_Longitude_tags_1) + /sizeof(asn_DEF_Longitude_tags_1[0]), /* 1 */ + asn_DEF_Longitude_tags_1, /* Same as above */ + sizeof(asn_DEF_Longitude_tags_1) + /sizeof(asn_DEF_Longitude_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Longitude_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Longitude_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Longitude_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LongitudeDMS.c b/src/tmx/Asn_J2735/src/r2020/LongitudeDMS.c new file mode 100644 index 000000000..3d684d51b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LongitudeDMS.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LongitudeDMS.h" + +int +LongitudeDMS_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -64800000L && value <= 64800000L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LongitudeDMS_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-64800000..64800000) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LongitudeDMS_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 27, -1, -64800000, 64800000 } /* (-64800000..64800000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LongitudeDMS_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LongitudeDMS = { + "LongitudeDMS", + "LongitudeDMS", + &asn_OP_NativeInteger, + asn_DEF_LongitudeDMS_tags_1, + sizeof(asn_DEF_LongitudeDMS_tags_1) + /sizeof(asn_DEF_LongitudeDMS_tags_1[0]), /* 1 */ + asn_DEF_LongitudeDMS_tags_1, /* Same as above */ + sizeof(asn_DEF_LongitudeDMS_tags_1) + /sizeof(asn_DEF_LongitudeDMS_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LongitudeDMS_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LongitudeDMS_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LongitudeDMS_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/LongitudeDMS2.c b/src/tmx/Asn_J2735/src/r2020/LongitudeDMS2.c new file mode 100644 index 000000000..11412c506 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/LongitudeDMS2.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "LongitudeDMS2.h" + +asn_TYPE_member_t asn_MBR_LongitudeDMS2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LongitudeDMS2, d), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DegreesLong, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "d" + }, + { ATF_NOFLAGS, 0, offsetof(struct LongitudeDMS2, m), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinutesAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "m" + }, + { ATF_NOFLAGS, 0, offsetof(struct LongitudeDMS2, s), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SecondsAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "s" + }, +}; +static const ber_tlv_tag_t asn_DEF_LongitudeDMS2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LongitudeDMS2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* d */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* s */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LongitudeDMS2_specs_1 = { + sizeof(struct LongitudeDMS2), + offsetof(struct LongitudeDMS2, _asn_ctx), + asn_MAP_LongitudeDMS2_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LongitudeDMS2 = { + "LongitudeDMS2", + "LongitudeDMS2", + &asn_OP_SEQUENCE, + asn_DEF_LongitudeDMS2_tags_1, + sizeof(asn_DEF_LongitudeDMS2_tags_1) + /sizeof(asn_DEF_LongitudeDMS2_tags_1[0]), /* 1 */ + asn_DEF_LongitudeDMS2_tags_1, /* Same as above */ + sizeof(asn_DEF_LongitudeDMS2_tags_1) + /sizeof(asn_DEF_LongitudeDMS2_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_LongitudeDMS2_1, + 3, /* Elements count */ + &asn_SPC_LongitudeDMS2_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MUTCDCode.c b/src/tmx/Asn_J2735/src/r2020/MUTCDCode.c new file mode 100644 index 000000000..2e677f5aa --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MUTCDCode.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MUTCDCode.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MUTCDCode_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MUTCDCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_MUTCDCode_value2enum_1[] = { + { 0, 4, "none" }, + { 1, 10, "regulatory" }, + { 2, 7, "warning" }, + { 3, 11, "maintenance" }, + { 4, 15, "motoristService" }, + { 5, 5, "guide" }, + { 6, 3, "rec" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_MUTCDCode_enum2value_1[] = { + 5, /* guide(5) */ + 3, /* maintenance(3) */ + 4, /* motoristService(4) */ + 0, /* none(0) */ + 6, /* rec(6) */ + 1, /* regulatory(1) */ + 2 /* warning(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_MUTCDCode_specs_1 = { + asn_MAP_MUTCDCode_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_MUTCDCode_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_MUTCDCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MUTCDCode = { + "MUTCDCode", + "MUTCDCode", + &asn_OP_NativeEnumerated, + asn_DEF_MUTCDCode_tags_1, + sizeof(asn_DEF_MUTCDCode_tags_1) + /sizeof(asn_DEF_MUTCDCode_tags_1[0]), /* 1 */ + asn_DEF_MUTCDCode_tags_1, /* Same as above */ + sizeof(asn_DEF_MUTCDCode_tags_1) + /sizeof(asn_DEF_MUTCDCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MUTCDCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MUTCDCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_MUTCDCode_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ManeuverAssistList.c b/src/tmx/Asn_J2735/src/r2020/ManeuverAssistList.c new file mode 100644 index 000000000..42d449e8c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ManeuverAssistList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ManeuverAssistList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ManeuverAssistList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ManeuverAssistList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_ManeuverAssistList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ConnectionManeuverAssist, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ManeuverAssistList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ManeuverAssistList_specs_1 = { + sizeof(struct ManeuverAssistList), + offsetof(struct ManeuverAssistList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ManeuverAssistList = { + "ManeuverAssistList", + "ManeuverAssistList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ManeuverAssistList_tags_1, + sizeof(asn_DEF_ManeuverAssistList_tags_1) + /sizeof(asn_DEF_ManeuverAssistList_tags_1[0]), /* 1 */ + asn_DEF_ManeuverAssistList_tags_1, /* Same as above */ + sizeof(asn_DEF_ManeuverAssistList_tags_1) + /sizeof(asn_DEF_ManeuverAssistList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ManeuverAssistList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ManeuverAssistList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ManeuverAssistList_1, + 1, /* Single element */ + &asn_SPC_ManeuverAssistList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MapData-addGrpC.c b/src/tmx/Asn_J2735/src/r2020/MapData-addGrpC.c new file mode 100644 index 000000000..254814c23 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MapData-addGrpC.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MapData-addGrpC.h" + +asn_TYPE_member_t asn_MBR_MapData_addGrpC_1[] = { + { ATF_POINTER, 1, offsetof(struct MapData_addGrpC, signalHeadLocations), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignalHeadLocationList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "signalHeadLocations" + }, +}; +static const int asn_MAP_MapData_addGrpC_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_MapData_addGrpC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MapData_addGrpC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* signalHeadLocations */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MapData_addGrpC_specs_1 = { + sizeof(struct MapData_addGrpC), + offsetof(struct MapData_addGrpC, _asn_ctx), + asn_MAP_MapData_addGrpC_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_MapData_addGrpC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MapData_addGrpC = { + "MapData-addGrpC", + "MapData-addGrpC", + &asn_OP_SEQUENCE, + asn_DEF_MapData_addGrpC_tags_1, + sizeof(asn_DEF_MapData_addGrpC_tags_1) + /sizeof(asn_DEF_MapData_addGrpC_tags_1[0]), /* 1 */ + asn_DEF_MapData_addGrpC_tags_1, /* Same as above */ + sizeof(asn_DEF_MapData_addGrpC_tags_1) + /sizeof(asn_DEF_MapData_addGrpC_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MapData_addGrpC_1, + 1, /* Elements count */ + &asn_SPC_MapData_addGrpC_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MapData.c b/src/tmx/Asn_J2735/src/r2020/MapData.c new file mode 100644 index 000000000..49aafd0f1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MapData.c @@ -0,0 +1,315 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MapData.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_10 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_10 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_10[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_MapData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_10[] = { + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_10 = { + sizeof(struct MapData__regional), + offsetof(struct MapData__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_10 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_10, + sizeof(asn_DEF_regional_tags_10) + /sizeof(asn_DEF_regional_tags_10[0]) - 1, /* 1 */ + asn_DEF_regional_tags_10, /* Same as above */ + sizeof(asn_DEF_regional_tags_10) + /sizeof(asn_DEF_regional_tags_10[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_10, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_10, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_10, + 1, /* Single element */ + &asn_SPC_regional_specs_10 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MapData_1[] = { + { ATF_POINTER, 1, offsetof(struct MapData, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_NOFLAGS, 0, offsetof(struct MapData, msgIssueRevision), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgIssueRevision" + }, + { ATF_POINTER, 7, offsetof(struct MapData, layerType), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LayerType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "layerType" + }, + { ATF_POINTER, 6, offsetof(struct MapData, layerID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LayerID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "layerID" + }, + { ATF_POINTER, 5, offsetof(struct MapData, intersections), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntersectionGeometryList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "intersections" + }, + { ATF_POINTER, 4, offsetof(struct MapData, roadSegments), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadSegmentList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "roadSegments" + }, + { ATF_POINTER, 3, offsetof(struct MapData, dataParameters), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DataParameters, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dataParameters" + }, + { ATF_POINTER, 2, offsetof(struct MapData, restrictionList), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RestrictionClassList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "restrictionList" + }, + { ATF_POINTER, 1, offsetof(struct MapData, regional), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + 0, + &asn_DEF_regional_10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_10, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_10, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_MapData_oms_1[] = { 0, 2, 3, 4, 5, 6, 7, 8 }; +static const ber_tlv_tag_t asn_DEF_MapData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MapData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* msgIssueRevision */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* layerType */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* layerID */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* intersections */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* roadSegments */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* dataParameters */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* restrictionList */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MapData_specs_1 = { + sizeof(struct MapData), + offsetof(struct MapData, _asn_ctx), + asn_MAP_MapData_tag2el_1, + 9, /* Count of tags in the map */ + asn_MAP_MapData_oms_1, /* Optional members */ + 8, 0, /* Root/Additions */ + 9, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MapData = { + "MapData", + "MapData", + &asn_OP_SEQUENCE, + asn_DEF_MapData_tags_1, + sizeof(asn_DEF_MapData_tags_1) + /sizeof(asn_DEF_MapData_tags_1[0]), /* 1 */ + asn_DEF_MapData_tags_1, /* Same as above */ + sizeof(asn_DEF_MapData_tags_1) + /sizeof(asn_DEF_MapData_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MapData_1, + 9, /* Elements count */ + &asn_SPC_MapData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MaxTimetoChange.c b/src/tmx/Asn_J2735/src/r2020/MaxTimetoChange.c new file mode 100644 index 000000000..d49a54fae --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MaxTimetoChange.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MaxTimetoChange.h" + +int +MaxTimetoChange_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 2402L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MaxTimetoChange_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..2402) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MaxTimetoChange_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 2402 } /* (0..2402) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MaxTimetoChange_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MaxTimetoChange = { + "MaxTimetoChange", + "MaxTimetoChange", + &asn_OP_NativeInteger, + asn_DEF_MaxTimetoChange_tags_1, + sizeof(asn_DEF_MaxTimetoChange_tags_1) + /sizeof(asn_DEF_MaxTimetoChange_tags_1[0]), /* 1 */ + asn_DEF_MaxTimetoChange_tags_1, /* Same as above */ + sizeof(asn_DEF_MaxTimetoChange_tags_1) + /sizeof(asn_DEF_MaxTimetoChange_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MaxTimetoChange_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MaxTimetoChange_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MaxTimetoChange_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MeasurementTimeOffset.c b/src/tmx/Asn_J2735/src/r2020/MeasurementTimeOffset.c new file mode 100644 index 000000000..604caf91c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MeasurementTimeOffset.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "MeasurementTimeOffset.h" + +int +MeasurementTimeOffset_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -1500 && value <= 1500)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_MeasurementTimeOffset_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-1500..1500) */, + -1}; +asn_per_constraints_t asn_PER_type_MeasurementTimeOffset_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, -1500, 1500 } /* (-1500..1500) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MeasurementTimeOffset_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementTimeOffset = { + "MeasurementTimeOffset", + "MeasurementTimeOffset", + &asn_OP_NativeInteger, + asn_DEF_MeasurementTimeOffset_tags_1, + sizeof(asn_DEF_MeasurementTimeOffset_tags_1) + /sizeof(asn_DEF_MeasurementTimeOffset_tags_1[0]), /* 1 */ + asn_DEF_MeasurementTimeOffset_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementTimeOffset_tags_1) + /sizeof(asn_DEF_MeasurementTimeOffset_tags_1[0]), /* 1 */ + { &asn_OER_type_MeasurementTimeOffset_constr_1, &asn_PER_type_MeasurementTimeOffset_constr_1, MeasurementTimeOffset_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MergeDivergeNodeAngle.c b/src/tmx/Asn_J2735/src/r2020/MergeDivergeNodeAngle.c new file mode 100644 index 000000000..c2a31f809 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MergeDivergeNodeAngle.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MergeDivergeNodeAngle.h" + +int +MergeDivergeNodeAngle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -180L && value <= 180L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MergeDivergeNodeAngle_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-180..180) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MergeDivergeNodeAngle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, -180, 180 } /* (-180..180) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MergeDivergeNodeAngle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MergeDivergeNodeAngle = { + "MergeDivergeNodeAngle", + "MergeDivergeNodeAngle", + &asn_OP_NativeInteger, + asn_DEF_MergeDivergeNodeAngle_tags_1, + sizeof(asn_DEF_MergeDivergeNodeAngle_tags_1) + /sizeof(asn_DEF_MergeDivergeNodeAngle_tags_1[0]), /* 1 */ + asn_DEF_MergeDivergeNodeAngle_tags_1, /* Same as above */ + sizeof(asn_DEF_MergeDivergeNodeAngle_tags_1) + /sizeof(asn_DEF_MergeDivergeNodeAngle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MergeDivergeNodeAngle_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MergeDivergeNodeAngle_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MergeDivergeNodeAngle_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MessageBLOB.c b/src/tmx/Asn_J2735/src/r2020/MessageBLOB.c new file mode 100644 index 000000000..2f59a34df --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MessageBLOB.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MessageBLOB.h" + +int +MessageBLOB_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 10UL && size <= 2000UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MessageBLOB_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(10..2000)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_MessageBLOB_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 11, 11, 10, 2000 } /* (SIZE(10..2000)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MessageBLOB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MessageBLOB = { + "MessageBLOB", + "MessageBLOB", + &asn_OP_OCTET_STRING, + asn_DEF_MessageBLOB_tags_1, + sizeof(asn_DEF_MessageBLOB_tags_1) + /sizeof(asn_DEF_MessageBLOB_tags_1[0]), /* 1 */ + asn_DEF_MessageBLOB_tags_1, /* Same as above */ + sizeof(asn_DEF_MessageBLOB_tags_1) + /sizeof(asn_DEF_MessageBLOB_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MessageBLOB_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MessageBLOB_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MessageBLOB_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MessageFrame.c b/src/tmx/Asn_J2735/src/r2020/MessageFrame.c new file mode 100644 index 000000000..21ef56973 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MessageFrame.c @@ -0,0 +1,885 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MessageFrame" + * found in "J2735-MessageFrame.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MessageFrame.h" + +static const long asn_VAL_1_basicSafetyMessage = 20; +static const long asn_VAL_2_mapData = 18; +static const long asn_VAL_3_signalPhaseAndTimingMessage = 19; +static const long asn_VAL_4_commonSafetyRequest = 21; +static const long asn_VAL_5_emergencyVehicleAlert = 22; +static const long asn_VAL_6_intersectionCollision = 23; +static const long asn_VAL_7_nmeaCorrections = 24; +static const long asn_VAL_8_probeDataManagement = 25; +static const long asn_VAL_9_probeVehicleData = 26; +static const long asn_VAL_10_roadSideAlert = 27; +static const long asn_VAL_11_rtcmCorrections = 28; +static const long asn_VAL_12_signalRequestMessage = 29; +static const long asn_VAL_13_signalStatusMessage = 30; +static const long asn_VAL_14_travelerInformation = 31; +static const long asn_VAL_15_personalSafetyMessage = 32; +static const long asn_VAL_16_testMessage00 = 240; +static const long asn_VAL_17_testMessage01 = 241; +static const long asn_VAL_18_testMessage02 = 242; +static const long asn_VAL_19_testMessage03 = 243; +static const long asn_VAL_20_testMessage04 = 244; +static const long asn_VAL_21_testMessage05 = 245; +static const long asn_VAL_22_testMessage06 = 246; +static const long asn_VAL_23_testMessage07 = 247; +static const long asn_VAL_24_testMessage08 = 248; +static const long asn_VAL_25_testMessage09 = 249; +static const long asn_VAL_26_testMessage10 = 250; +static const long asn_VAL_27_testMessage11 = 251; +static const long asn_VAL_28_testMessage12 = 252; +static const long asn_VAL_29_testMessage13 = 253; +static const long asn_VAL_30_testMessage14 = 254; +static const long asn_VAL_31_testMessage15 = 255; +static const long asn_VAL_32_sensorDataSharingMessage = 41; +static const asn_ioc_cell_t asn_IOS_MessageTypes_1_rows[] = { + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_1_basicSafetyMessage }, + { "&Type", aioc__type, &asn_DEF_BasicSafetyMessage }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_2_mapData }, + { "&Type", aioc__type, &asn_DEF_MapData }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_3_signalPhaseAndTimingMessage }, + { "&Type", aioc__type, &asn_DEF_SPAT }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_4_commonSafetyRequest }, + { "&Type", aioc__type, &asn_DEF_CommonSafetyRequest }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_5_emergencyVehicleAlert }, + { "&Type", aioc__type, &asn_DEF_EmergencyVehicleAlert }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_6_intersectionCollision }, + { "&Type", aioc__type, &asn_DEF_IntersectionCollision }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_7_nmeaCorrections }, + { "&Type", aioc__type, &asn_DEF_NMEAcorrections }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_8_probeDataManagement }, + { "&Type", aioc__type, &asn_DEF_ProbeDataManagement }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_9_probeVehicleData }, + { "&Type", aioc__type, &asn_DEF_ProbeVehicleData }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_10_roadSideAlert }, + { "&Type", aioc__type, &asn_DEF_RoadSideAlert }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_11_rtcmCorrections }, + { "&Type", aioc__type, &asn_DEF_RTCMcorrections }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_12_signalRequestMessage }, + { "&Type", aioc__type, &asn_DEF_SignalRequestMessage }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_13_signalStatusMessage }, + { "&Type", aioc__type, &asn_DEF_SignalStatusMessage }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_14_travelerInformation }, + { "&Type", aioc__type, &asn_DEF_TravelerInformation }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_15_personalSafetyMessage }, + { "&Type", aioc__type, &asn_DEF_PersonalSafetyMessage }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_16_testMessage00 }, + { "&Type", aioc__type, &asn_DEF_TestMessage00 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_17_testMessage01 }, + { "&Type", aioc__type, &asn_DEF_TestMessage01 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_18_testMessage02 }, + { "&Type", aioc__type, &asn_DEF_TestMessage02 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_19_testMessage03 }, + { "&Type", aioc__type, &asn_DEF_TestMessage03 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_20_testMessage04 }, + { "&Type", aioc__type, &asn_DEF_TestMessage04 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_21_testMessage05 }, + { "&Type", aioc__type, &asn_DEF_TestMessage05 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_22_testMessage06 }, + { "&Type", aioc__type, &asn_DEF_TestMessage06 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_23_testMessage07 }, + { "&Type", aioc__type, &asn_DEF_TestMessage07 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_24_testMessage08 }, + { "&Type", aioc__type, &asn_DEF_TestMessage08 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_25_testMessage09 }, + { "&Type", aioc__type, &asn_DEF_TestMessage09 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_26_testMessage10 }, + { "&Type", aioc__type, &asn_DEF_TestMessage10 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_27_testMessage11 }, + { "&Type", aioc__type, &asn_DEF_TestMessage11 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_28_testMessage12 }, + { "&Type", aioc__type, &asn_DEF_TestMessage12 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_29_testMessage13 }, + { "&Type", aioc__type, &asn_DEF_TestMessage13 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_30_testMessage14 }, + { "&Type", aioc__type, &asn_DEF_TestMessage14 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_31_testMessage15 }, + { "&Type", aioc__type, &asn_DEF_TestMessage15 }, + { "&id", aioc__value, &asn_DEF_DSRCmsgID, &asn_VAL_32_sensorDataSharingMessage }, + { "&Type", aioc__type, &asn_DEF_SensorDataSharingMessage } +}; +static const asn_ioc_set_t asn_IOS_MessageTypes_1[] = { + { 32, 2, asn_IOS_MessageTypes_1_rows } +}; +static int +memb_messageId_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MessageFrame_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MessageTypes_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MessageFrame, messageId)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_messageId_constr_2 CC_NOTUSED = { + { 2, 1 } /* (0..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_messageId_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32767 } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_value_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_value_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.BasicSafetyMessage), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BasicSafetyMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "BasicSafetyMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.MapData), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MapData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "MapData" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.SPAT), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SPAT, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "SPAT" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.CommonSafetyRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CommonSafetyRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CommonSafetyRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.EmergencyVehicleAlert), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EmergencyVehicleAlert, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "EmergencyVehicleAlert" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.IntersectionCollision), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IntersectionCollision, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "IntersectionCollision" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.NMEAcorrections), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NMEAcorrections, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "NMEAcorrections" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.ProbeDataManagement), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProbeDataManagement, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ProbeDataManagement" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.ProbeVehicleData), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProbeVehicleData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ProbeVehicleData" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.RoadSideAlert), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RoadSideAlert, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RoadSideAlert" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.RTCMcorrections), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RTCMcorrections, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RTCMcorrections" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.SignalRequestMessage), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SignalRequestMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "SignalRequestMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.SignalStatusMessage), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SignalStatusMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "SignalStatusMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TravelerInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TravelerInformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TravelerInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.PersonalSafetyMessage), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PersonalSafetyMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "PersonalSafetyMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage00), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage00, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage00" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage01), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage01, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage01" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage02), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage02, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage02" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage03), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage03, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage03" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage04), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage04, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage04" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage05), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage05, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage05" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage06), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage06, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage06" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage07), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage07, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage07" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage08), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage08, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage08" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage09), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage09, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage09" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage10), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage10" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage11), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage11" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage12), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage12" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage13), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage13, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage13" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage14), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage14, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage14" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.TestMessage15), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TestMessage15, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TestMessage15" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame__value, choice.SensorDataSharingMessage), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SensorDataSharingMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SensorDataSharingMessage" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_3[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 31 }, /* BasicSafetyMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 30 }, /* MapData */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 29 }, /* SPAT */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 28 }, /* CommonSafetyRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 27 }, /* EmergencyVehicleAlert */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 26 }, /* IntersectionCollision */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 25 }, /* NMEAcorrections */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 24 }, /* ProbeDataManagement */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 23 }, /* ProbeVehicleData */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 22 }, /* RoadSideAlert */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -10, 21 }, /* RTCMcorrections */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -11, 20 }, /* SignalRequestMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -12, 19 }, /* SignalStatusMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 13, -13, 18 }, /* TravelerInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 14, -14, 17 }, /* PersonalSafetyMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 15, -15, 16 }, /* TestMessage00 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 16, -16, 15 }, /* TestMessage01 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 17, -17, 14 }, /* TestMessage02 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 18, -18, 13 }, /* TestMessage03 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 19, -19, 12 }, /* TestMessage04 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 20, -20, 11 }, /* TestMessage05 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 21, -21, 10 }, /* TestMessage06 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 22, -22, 9 }, /* TestMessage07 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 23, -23, 8 }, /* TestMessage08 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 24, -24, 7 }, /* TestMessage09 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 25, -25, 6 }, /* TestMessage10 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 26, -26, 5 }, /* TestMessage11 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 27, -27, 4 }, /* TestMessage12 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 28, -28, 3 }, /* TestMessage13 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 29, -29, 2 }, /* TestMessage14 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 30, -30, 1 }, /* TestMessage15 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 31, -31, 0 } /* SensorDataSharingMessage */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_3 = { + sizeof(struct MessageFrame__value), + offsetof(struct MessageFrame__value, _asn_ctx), + offsetof(struct MessageFrame__value, present), + sizeof(((struct MessageFrame__value *)0)->present), + asn_MAP_value_tag2el_3, + 32, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_3 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_3, + 32, /* Elements count */ + &asn_SPC_value_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_MessageFrame_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MessageFrame, messageId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSRCmsgID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_messageId_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_messageId_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_messageId_constraint_1 + }, + 0, 0, /* No default value */ + "messageId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MessageFrame, value), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_3, + select_MessageFrame_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_value_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_1 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_MessageFrame_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MessageFrame_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* messageId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* value */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_MessageFrame_specs_1 = { + sizeof(struct MessageFrame), + offsetof(struct MessageFrame, _asn_ctx), + asn_MAP_MessageFrame_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MessageFrame = { + "MessageFrame", + "MessageFrame", + &asn_OP_SEQUENCE, + asn_DEF_MessageFrame_tags_1, + sizeof(asn_DEF_MessageFrame_tags_1) + /sizeof(asn_DEF_MessageFrame_tags_1[0]), /* 1 */ + asn_DEF_MessageFrame_tags_1, /* Same as above */ + sizeof(asn_DEF_MessageFrame_tags_1) + /sizeof(asn_DEF_MessageFrame_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MessageFrame_1, + 2, /* Elements count */ + &asn_SPC_MessageFrame_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MinTimetoChange.c b/src/tmx/Asn_J2735/src/r2020/MinTimetoChange.c new file mode 100644 index 000000000..0f1bc375e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MinTimetoChange.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MinTimetoChange.h" + +int +MinTimetoChange_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 2402L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MinTimetoChange_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..2402) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MinTimetoChange_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 2402 } /* (0..2402) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MinTimetoChange_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MinTimetoChange = { + "MinTimetoChange", + "MinTimetoChange", + &asn_OP_NativeInteger, + asn_DEF_MinTimetoChange_tags_1, + sizeof(asn_DEF_MinTimetoChange_tags_1) + /sizeof(asn_DEF_MinTimetoChange_tags_1[0]), /* 1 */ + asn_DEF_MinTimetoChange_tags_1, /* Same as above */ + sizeof(asn_DEF_MinTimetoChange_tags_1) + /sizeof(asn_DEF_MinTimetoChange_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MinTimetoChange_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MinTimetoChange_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MinTimetoChange_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Minute.c b/src/tmx/Asn_J2735/src/r2020/Minute.c new file mode 100644 index 000000000..f02ac5f30 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Minute.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Minute.h" + +int +Minute_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Minute_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Minute_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Minute_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Minute = { + "Minute", + "Minute", + &asn_OP_NativeInteger, + asn_DEF_Minute_tags_1, + sizeof(asn_DEF_Minute_tags_1) + /sizeof(asn_DEF_Minute_tags_1[0]), /* 1 */ + asn_DEF_Minute_tags_1, /* Same as above */ + sizeof(asn_DEF_Minute_tags_1) + /sizeof(asn_DEF_Minute_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Minute_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Minute_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Minute_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MinuteOfTheYear.c b/src/tmx/Asn_J2735/src/r2020/MinuteOfTheYear.c new file mode 100644 index 000000000..b5a97a5d7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MinuteOfTheYear.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MinuteOfTheYear.h" + +int +MinuteOfTheYear_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 527040L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MinuteOfTheYear_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..527040) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MinuteOfTheYear_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 20, -1, 0, 527040 } /* (0..527040) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MinuteOfTheYear_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MinuteOfTheYear = { + "MinuteOfTheYear", + "MinuteOfTheYear", + &asn_OP_NativeInteger, + asn_DEF_MinuteOfTheYear_tags_1, + sizeof(asn_DEF_MinuteOfTheYear_tags_1) + /sizeof(asn_DEF_MinuteOfTheYear_tags_1[0]), /* 1 */ + asn_DEF_MinuteOfTheYear_tags_1, /* Same as above */ + sizeof(asn_DEF_MinuteOfTheYear_tags_1) + /sizeof(asn_DEF_MinuteOfTheYear_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MinuteOfTheYear_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MinuteOfTheYear_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MinuteOfTheYear_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MinutesAngle.c b/src/tmx/Asn_J2735/src/r2020/MinutesAngle.c new file mode 100644 index 000000000..4c2702de3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MinutesAngle.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MinutesAngle.h" + +int +MinutesAngle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 59L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MinutesAngle_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..59) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MinutesAngle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 59 } /* (0..59) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MinutesAngle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MinutesAngle = { + "MinutesAngle", + "MinutesAngle", + &asn_OP_NativeInteger, + asn_DEF_MinutesAngle_tags_1, + sizeof(asn_DEF_MinutesAngle_tags_1) + /sizeof(asn_DEF_MinutesAngle_tags_1[0]), /* 1 */ + asn_DEF_MinutesAngle_tags_1, /* Same as above */ + sizeof(asn_DEF_MinutesAngle_tags_1) + /sizeof(asn_DEF_MinutesAngle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MinutesAngle_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MinutesAngle_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MinutesAngle_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MinutesDuration.c b/src/tmx/Asn_J2735/src/r2020/MinutesDuration.c new file mode 100644 index 000000000..40d50071c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MinutesDuration.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MinutesDuration.h" + +int +MinutesDuration_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 32000L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MinutesDuration_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..32000) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MinutesDuration_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32000 } /* (0..32000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MinutesDuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MinutesDuration = { + "MinutesDuration", + "MinutesDuration", + &asn_OP_NativeInteger, + asn_DEF_MinutesDuration_tags_1, + sizeof(asn_DEF_MinutesDuration_tags_1) + /sizeof(asn_DEF_MinutesDuration_tags_1[0]), /* 1 */ + asn_DEF_MinutesDuration_tags_1, /* Same as above */ + sizeof(asn_DEF_MinutesDuration_tags_1) + /sizeof(asn_DEF_MinutesDuration_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MinutesDuration_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MinutesDuration_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MinutesDuration_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityDynamicID.c b/src/tmx/Asn_J2735/src/r2020/MobilityDynamicID.c new file mode 100644 index 000000000..740cd9403 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityDynamicID.c @@ -0,0 +1,79 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityDynamicID.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +int +MobilityDynamicID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 8) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_MobilityDynamicID_constr_1 CC_NOTUSED = { + { 0, 0 }, + 8 /* (SIZE(8..8)) */}; +asn_per_constraints_t asn_PER_type_MobilityDynamicID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER character map necessary */ +}; +static const ber_tlv_tag_t asn_DEF_MobilityDynamicID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityDynamicID = { + "MobilityDynamicID", + "MobilityDynamicID", + &asn_OP_IA5String, + asn_DEF_MobilityDynamicID_tags_1, + sizeof(asn_DEF_MobilityDynamicID_tags_1) + /sizeof(asn_DEF_MobilityDynamicID_tags_1[0]), /* 1 */ + asn_DEF_MobilityDynamicID_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityDynamicID_tags_1) + /sizeof(asn_DEF_MobilityDynamicID_tags_1[0]), /* 1 */ + { &asn_OER_type_MobilityDynamicID_constr_1, &asn_PER_type_MobilityDynamicID_constr_1, MobilityDynamicID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityECEFCoordinate.c b/src/tmx/Asn_J2735/src/r2020/MobilityECEFCoordinate.c new file mode 100644 index 000000000..0ccbbe2e2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityECEFCoordinate.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityECEFCoordinate.h" + +int +MobilityECEFCoordinate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -638363700 && value <= 638363700)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_MobilityECEFCoordinate_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-638363700..638363700) */, + -1}; +asn_per_constraints_t asn_PER_type_MobilityECEFCoordinate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 31, -1, -638363700, 638363700 } /* (-638363700..638363700) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MobilityECEFCoordinate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityECEFCoordinate = { + "MobilityECEFCoordinate", + "MobilityECEFCoordinate", + &asn_OP_NativeInteger, + asn_DEF_MobilityECEFCoordinate_tags_1, + sizeof(asn_DEF_MobilityECEFCoordinate_tags_1) + /sizeof(asn_DEF_MobilityECEFCoordinate_tags_1[0]), /* 1 */ + asn_DEF_MobilityECEFCoordinate_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityECEFCoordinate_tags_1) + /sizeof(asn_DEF_MobilityECEFCoordinate_tags_1[0]), /* 1 */ + { &asn_OER_type_MobilityECEFCoordinate_constr_1, &asn_PER_type_MobilityECEFCoordinate_constr_1, MobilityECEFCoordinate_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityECEFOffset.c b/src/tmx/Asn_J2735/src/r2020/MobilityECEFOffset.c new file mode 100644 index 000000000..3f2f36cc0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityECEFOffset.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityECEFOffset.h" + +asn_TYPE_member_t asn_MBR_MobilityECEFOffset_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityECEFOffset, offsetX), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityECEFOffsetCoordinate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "offsetX" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityECEFOffset, offsetY), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityECEFOffsetCoordinate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "offsetY" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityECEFOffset, offsetZ), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityECEFOffsetCoordinate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "offsetZ" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityECEFOffset_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityECEFOffset_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* offsetX */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* offsetY */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* offsetZ */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityECEFOffset_specs_1 = { + sizeof(struct MobilityECEFOffset), + offsetof(struct MobilityECEFOffset, _asn_ctx), + asn_MAP_MobilityECEFOffset_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityECEFOffset = { + "MobilityECEFOffset", + "MobilityECEFOffset", + &asn_OP_SEQUENCE, + asn_DEF_MobilityECEFOffset_tags_1, + sizeof(asn_DEF_MobilityECEFOffset_tags_1) + /sizeof(asn_DEF_MobilityECEFOffset_tags_1[0]), /* 1 */ + asn_DEF_MobilityECEFOffset_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityECEFOffset_tags_1) + /sizeof(asn_DEF_MobilityECEFOffset_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityECEFOffset_1, + 3, /* Elements count */ + &asn_SPC_MobilityECEFOffset_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityECEFOffsetCoordinate.c b/src/tmx/Asn_J2735/src/r2020/MobilityECEFOffsetCoordinate.c new file mode 100644 index 000000000..0e2b37baf --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityECEFOffsetCoordinate.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityECEFOffsetCoordinate.h" + +int +MobilityECEFOffsetCoordinate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -500 && value <= 501)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_MobilityECEFOffsetCoordinate_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-500..501) */, + -1}; +asn_per_constraints_t asn_PER_type_MobilityECEFOffsetCoordinate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, -500, 501 } /* (-500..501) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MobilityECEFOffsetCoordinate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityECEFOffsetCoordinate = { + "MobilityECEFOffsetCoordinate", + "MobilityECEFOffsetCoordinate", + &asn_OP_NativeInteger, + asn_DEF_MobilityECEFOffsetCoordinate_tags_1, + sizeof(asn_DEF_MobilityECEFOffsetCoordinate_tags_1) + /sizeof(asn_DEF_MobilityECEFOffsetCoordinate_tags_1[0]), /* 1 */ + asn_DEF_MobilityECEFOffsetCoordinate_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityECEFOffsetCoordinate_tags_1) + /sizeof(asn_DEF_MobilityECEFOffsetCoordinate_tags_1[0]), /* 1 */ + { &asn_OER_type_MobilityECEFOffsetCoordinate_constr_1, &asn_PER_type_MobilityECEFOffsetCoordinate_constr_1, MobilityECEFOffsetCoordinate_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityGUID.c b/src/tmx/Asn_J2735/src/r2020/MobilityGUID.c new file mode 100644 index 000000000..8cac1275f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityGUID.c @@ -0,0 +1,79 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityGUID.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +int +MobilityGUID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 36) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_MobilityGUID_constr_1 CC_NOTUSED = { + { 0, 0 }, + 36 /* (SIZE(36..36)) */}; +asn_per_constraints_t asn_PER_type_MobilityGUID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 0, 0, 36, 36 } /* (SIZE(36..36)) */, + 0, 0 /* No PER character map necessary */ +}; +static const ber_tlv_tag_t asn_DEF_MobilityGUID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityGUID = { + "MobilityGUID", + "MobilityGUID", + &asn_OP_IA5String, + asn_DEF_MobilityGUID_tags_1, + sizeof(asn_DEF_MobilityGUID_tags_1) + /sizeof(asn_DEF_MobilityGUID_tags_1[0]), /* 1 */ + asn_DEF_MobilityGUID_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityGUID_tags_1) + /sizeof(asn_DEF_MobilityGUID_tags_1[0]), /* 1 */ + { &asn_OER_type_MobilityGUID_constr_1, &asn_PER_type_MobilityGUID_constr_1, MobilityGUID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityHeader.c b/src/tmx/Asn_J2735/src/r2020/MobilityHeader.c new file mode 100644 index 000000000..b7c8d550c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityHeader.c @@ -0,0 +1,90 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityHeader.h" + +asn_TYPE_member_t asn_MBR_MobilityHeader_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityHeader, hostStaticId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityStaticID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hostStaticId" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityHeader, targetStaticId), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityStaticID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "targetStaticId" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityHeader, hostBSMId), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityDynamicID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hostBSMId" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityHeader, planId), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityGUID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "planId" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityHeader, timestamp), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityTimestamp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "timestamp" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityHeader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hostStaticId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* targetStaticId */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* hostBSMId */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* planId */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* timestamp */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityHeader_specs_1 = { + sizeof(struct MobilityHeader), + offsetof(struct MobilityHeader, _asn_ctx), + asn_MAP_MobilityHeader_tag2el_1, + 5, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityHeader = { + "MobilityHeader", + "MobilityHeader", + &asn_OP_SEQUENCE, + asn_DEF_MobilityHeader_tags_1, + sizeof(asn_DEF_MobilityHeader_tags_1) + /sizeof(asn_DEF_MobilityHeader_tags_1[0]), /* 1 */ + asn_DEF_MobilityHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityHeader_tags_1) + /sizeof(asn_DEF_MobilityHeader_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityHeader_1, + 5, /* Elements count */ + &asn_SPC_MobilityHeader_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityLocation.c b/src/tmx/Asn_J2735/src/r2020/MobilityLocation.c new file mode 100644 index 000000000..e967c0d3a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityLocation.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityLocation.h" + +asn_TYPE_member_t asn_MBR_MobilityLocation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityLocation, ecefX), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityECEFCoordinate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ecefX" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityLocation, ecefY), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityECEFCoordinate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ecefY" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityLocation, ecefZ), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityECEFCoordinate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ecefZ" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityLocation, timestamp), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityTimestamp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "timestamp" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityLocation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityLocation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ecefX */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ecefY */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ecefZ */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* timestamp */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityLocation_specs_1 = { + sizeof(struct MobilityLocation), + offsetof(struct MobilityLocation, _asn_ctx), + asn_MAP_MobilityLocation_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityLocation = { + "MobilityLocation", + "MobilityLocation", + &asn_OP_SEQUENCE, + asn_DEF_MobilityLocation_tags_1, + sizeof(asn_DEF_MobilityLocation_tags_1) + /sizeof(asn_DEF_MobilityLocation_tags_1[0]), /* 1 */ + asn_DEF_MobilityLocation_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityLocation_tags_1) + /sizeof(asn_DEF_MobilityLocation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityLocation_1, + 4, /* Elements count */ + &asn_SPC_MobilityLocation_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityLocationOffsets.c b/src/tmx/Asn_J2735/src/r2020/MobilityLocationOffsets.c new file mode 100644 index 000000000..336af15ca --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityLocationOffsets.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityLocationOffsets.h" + +static asn_oer_constraints_t asn_OER_type_MobilityLocationOffsets_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..60)) */}; +asn_per_constraints_t asn_PER_type_MobilityLocationOffsets_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 60 } /* (SIZE(0..60)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MobilityLocationOffsets_1[] = { + { ATF_NOFLAGS, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MobilityECEFOffset, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityLocationOffsets_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MobilityLocationOffsets_specs_1 = { + sizeof(struct MobilityLocationOffsets), + offsetof(struct MobilityLocationOffsets, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityLocationOffsets = { + "MobilityLocationOffsets", + "MobilityLocationOffsets", + &asn_OP_SEQUENCE_OF, + asn_DEF_MobilityLocationOffsets_tags_1, + sizeof(asn_DEF_MobilityLocationOffsets_tags_1) + /sizeof(asn_DEF_MobilityLocationOffsets_tags_1[0]), /* 1 */ + asn_DEF_MobilityLocationOffsets_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityLocationOffsets_tags_1) + /sizeof(asn_DEF_MobilityLocationOffsets_tags_1[0]), /* 1 */ + { &asn_OER_type_MobilityLocationOffsets_constr_1, &asn_PER_type_MobilityLocationOffsets_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MobilityLocationOffsets_1, + 1, /* Single element */ + &asn_SPC_MobilityLocationOffsets_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityOperation.c b/src/tmx/Asn_J2735/src/r2020/MobilityOperation.c new file mode 100644 index 000000000..bccd960cd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityOperation.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityOperation.h" + +asn_TYPE_member_t asn_MBR_MobilityOperation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityOperation, strategy), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityStrategy, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "strategy" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityOperation, operationParams), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityParameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "operationParams" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityOperation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityOperation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* strategy */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* operationParams */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityOperation_specs_1 = { + sizeof(struct MobilityOperation), + offsetof(struct MobilityOperation, _asn_ctx), + asn_MAP_MobilityOperation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityOperation = { + "MobilityOperation", + "MobilityOperation", + &asn_OP_SEQUENCE, + asn_DEF_MobilityOperation_tags_1, + sizeof(asn_DEF_MobilityOperation_tags_1) + /sizeof(asn_DEF_MobilityOperation_tags_1[0]), /* 1 */ + asn_DEF_MobilityOperation_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityOperation_tags_1) + /sizeof(asn_DEF_MobilityOperation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityOperation_1, + 2, /* Elements count */ + &asn_SPC_MobilityOperation_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityParameters.c b/src/tmx/Asn_J2735/src/r2020/MobilityParameters.c new file mode 100644 index 000000000..ca4cd5d13 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityParameters.c @@ -0,0 +1,79 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityParameters.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +int +MobilityParameters_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 2 && size <= 1000) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_MobilityParameters_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(2..1000)) */}; +asn_per_constraints_t asn_PER_type_MobilityParameters_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 10, 10, 2, 1000 } /* (SIZE(2..1000)) */, + 0, 0 /* No PER character map necessary */ +}; +static const ber_tlv_tag_t asn_DEF_MobilityParameters_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityParameters = { + "MobilityParameters", + "MobilityParameters", + &asn_OP_IA5String, + asn_DEF_MobilityParameters_tags_1, + sizeof(asn_DEF_MobilityParameters_tags_1) + /sizeof(asn_DEF_MobilityParameters_tags_1[0]), /* 1 */ + asn_DEF_MobilityParameters_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityParameters_tags_1) + /sizeof(asn_DEF_MobilityParameters_tags_1[0]), /* 1 */ + { &asn_OER_type_MobilityParameters_constr_1, &asn_PER_type_MobilityParameters_constr_1, MobilityParameters_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityPath.c b/src/tmx/Asn_J2735/src/r2020/MobilityPath.c new file mode 100644 index 000000000..92134c978 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityPath.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityPath.h" + +asn_TYPE_member_t asn_MBR_MobilityPath_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityPath, location), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityLocation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "location" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityPath, trajectory), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityLocationOffsets, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "trajectory" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityPath_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityPath_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* location */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* trajectory */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityPath_specs_1 = { + sizeof(struct MobilityPath), + offsetof(struct MobilityPath, _asn_ctx), + asn_MAP_MobilityPath_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityPath = { + "MobilityPath", + "MobilityPath", + &asn_OP_SEQUENCE, + asn_DEF_MobilityPath_tags_1, + sizeof(asn_DEF_MobilityPath_tags_1) + /sizeof(asn_DEF_MobilityPath_tags_1[0]), /* 1 */ + asn_DEF_MobilityPath_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityPath_tags_1) + /sizeof(asn_DEF_MobilityPath_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityPath_1, + 2, /* Elements count */ + &asn_SPC_MobilityPath_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityPlanType.c b/src/tmx/Asn_J2735/src/r2020/MobilityPlanType.c new file mode 100644 index 000000000..f275b2807 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityPlanType.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityPlanType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_MobilityPlanType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_MobilityPlanType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_MobilityPlanType_value2enum_1[] = { + { 0, 7, "unknown" }, + { 1, 22, "changingLanesToTheLeft" }, + { 2, 23, "changingLanesToTheRight" }, + { 3, 17, "joinPlatoonAtRear" }, + { 4, 19, "platoonFollowerJoin" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_MobilityPlanType_enum2value_1[] = { + 1, /* changingLanesToTheLeft(1) */ + 2, /* changingLanesToTheRight(2) */ + 3, /* joinPlatoonAtRear(3) */ + 4, /* platoonFollowerJoin(4) */ + 0 /* unknown(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_MobilityPlanType_specs_1 = { + asn_MAP_MobilityPlanType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_MobilityPlanType_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_MobilityPlanType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityPlanType = { + "MobilityPlanType", + "MobilityPlanType", + &asn_OP_NativeEnumerated, + asn_DEF_MobilityPlanType_tags_1, + sizeof(asn_DEF_MobilityPlanType_tags_1) + /sizeof(asn_DEF_MobilityPlanType_tags_1[0]), /* 1 */ + asn_DEF_MobilityPlanType_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityPlanType_tags_1) + /sizeof(asn_DEF_MobilityPlanType_tags_1[0]), /* 1 */ + { &asn_OER_type_MobilityPlanType_constr_1, &asn_PER_type_MobilityPlanType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_MobilityPlanType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityRequest.c b/src/tmx/Asn_J2735/src/r2020/MobilityRequest.c new file mode 100644 index 000000000..987679861 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityRequest.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityRequest.h" + +asn_TYPE_member_t asn_MBR_MobilityRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityRequest, strategy), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityStrategy, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "strategy" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityRequest, planType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityPlanType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "planType" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityRequest, urgency), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityUrgency, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "urgency" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityRequest, location), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityLocation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "location" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityRequest, strategyParams), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityParameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "strategyParams" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityRequest, trajectoryStart), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityLocation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "trajectoryStart" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityRequest, trajectory), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityLocationOffsets, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "trajectory" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityRequest, expiration), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityTimestamp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expiration" + }, +}; +static const int asn_MAP_MobilityRequest_oms_1[] = { 5, 6, 7 }; +static const ber_tlv_tag_t asn_DEF_MobilityRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* strategy */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* planType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* urgency */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* location */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* strategyParams */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* trajectoryStart */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* trajectory */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* expiration */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityRequest_specs_1 = { + sizeof(struct MobilityRequest), + offsetof(struct MobilityRequest, _asn_ctx), + asn_MAP_MobilityRequest_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_MobilityRequest_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityRequest = { + "MobilityRequest", + "MobilityRequest", + &asn_OP_SEQUENCE, + asn_DEF_MobilityRequest_tags_1, + sizeof(asn_DEF_MobilityRequest_tags_1) + /sizeof(asn_DEF_MobilityRequest_tags_1[0]), /* 1 */ + asn_DEF_MobilityRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityRequest_tags_1) + /sizeof(asn_DEF_MobilityRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityRequest_1, + 8, /* Elements count */ + &asn_SPC_MobilityRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityResponse.c b/src/tmx/Asn_J2735/src/r2020/MobilityResponse.c new file mode 100644 index 000000000..d6335ccbc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityResponse.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityResponse.h" + +asn_TYPE_member_t asn_MBR_MobilityResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityResponse, urgency), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityUrgency, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "urgency" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityResponse, isAccepted), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityResponseFlag, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "isAccepted" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* urgency */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* isAccepted */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityResponse_specs_1 = { + sizeof(struct MobilityResponse), + offsetof(struct MobilityResponse, _asn_ctx), + asn_MAP_MobilityResponse_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityResponse = { + "MobilityResponse", + "MobilityResponse", + &asn_OP_SEQUENCE, + asn_DEF_MobilityResponse_tags_1, + sizeof(asn_DEF_MobilityResponse_tags_1) + /sizeof(asn_DEF_MobilityResponse_tags_1[0]), /* 1 */ + asn_DEF_MobilityResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityResponse_tags_1) + /sizeof(asn_DEF_MobilityResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityResponse_1, + 2, /* Elements count */ + &asn_SPC_MobilityResponse_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityResponseFlag.c b/src/tmx/Asn_J2735/src/r2020/MobilityResponseFlag.c new file mode 100644 index 000000000..b43d1876d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityResponseFlag.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityResponseFlag.h" + +/* + * This type is implemented using BOOLEAN, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_MobilityResponseFlag_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityResponseFlag = { + "MobilityResponseFlag", + "MobilityResponseFlag", + &asn_OP_BOOLEAN, + asn_DEF_MobilityResponseFlag_tags_1, + sizeof(asn_DEF_MobilityResponseFlag_tags_1) + /sizeof(asn_DEF_MobilityResponseFlag_tags_1[0]), /* 1 */ + asn_DEF_MobilityResponseFlag_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityResponseFlag_tags_1) + /sizeof(asn_DEF_MobilityResponseFlag_tags_1[0]), /* 1 */ + { 0, 0, BOOLEAN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityStaticID.c b/src/tmx/Asn_J2735/src/r2020/MobilityStaticID.c new file mode 100644 index 000000000..792fc2807 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityStaticID.c @@ -0,0 +1,79 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityStaticID.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +int +MobilityStaticID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 2 && size <= 16) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_MobilityStaticID_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(2..16)) */}; +asn_per_constraints_t asn_PER_type_MobilityStaticID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 4, 4, 2, 16 } /* (SIZE(2..16)) */, + 0, 0 /* No PER character map necessary */ +}; +static const ber_tlv_tag_t asn_DEF_MobilityStaticID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityStaticID = { + "MobilityStaticID", + "MobilityStaticID", + &asn_OP_IA5String, + asn_DEF_MobilityStaticID_tags_1, + sizeof(asn_DEF_MobilityStaticID_tags_1) + /sizeof(asn_DEF_MobilityStaticID_tags_1[0]), /* 1 */ + asn_DEF_MobilityStaticID_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityStaticID_tags_1) + /sizeof(asn_DEF_MobilityStaticID_tags_1[0]), /* 1 */ + { &asn_OER_type_MobilityStaticID_constr_1, &asn_PER_type_MobilityStaticID_constr_1, MobilityStaticID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityStrategy.c b/src/tmx/Asn_J2735/src/r2020/MobilityStrategy.c new file mode 100644 index 000000000..419539af0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityStrategy.c @@ -0,0 +1,79 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityStrategy.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +int +MobilityStrategy_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 2 && size <= 50) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_MobilityStrategy_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(2..50)) */}; +asn_per_constraints_t asn_PER_type_MobilityStrategy_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 6, 6, 2, 50 } /* (SIZE(2..50)) */, + 0, 0 /* No PER character map necessary */ +}; +static const ber_tlv_tag_t asn_DEF_MobilityStrategy_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityStrategy = { + "MobilityStrategy", + "MobilityStrategy", + &asn_OP_IA5String, + asn_DEF_MobilityStrategy_tags_1, + sizeof(asn_DEF_MobilityStrategy_tags_1) + /sizeof(asn_DEF_MobilityStrategy_tags_1[0]), /* 1 */ + asn_DEF_MobilityStrategy_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityStrategy_tags_1) + /sizeof(asn_DEF_MobilityStrategy_tags_1[0]), /* 1 */ + { &asn_OER_type_MobilityStrategy_constr_1, &asn_PER_type_MobilityStrategy_constr_1, MobilityStrategy_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityTimestamp.c b/src/tmx/Asn_J2735/src/r2020/MobilityTimestamp.c new file mode 100644 index 000000000..c95dd6d6b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityTimestamp.c @@ -0,0 +1,79 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityTimestamp.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +int +MobilityTimestamp_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 19) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_MobilityTimestamp_constr_1 CC_NOTUSED = { + { 0, 0 }, + 19 /* (SIZE(19..19)) */}; +asn_per_constraints_t asn_PER_type_MobilityTimestamp_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 0, 0, 19, 19 } /* (SIZE(19..19)) */, + 0, 0 /* No PER character map necessary */ +}; +static const ber_tlv_tag_t asn_DEF_MobilityTimestamp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityTimestamp = { + "MobilityTimestamp", + "MobilityTimestamp", + &asn_OP_IA5String, + asn_DEF_MobilityTimestamp_tags_1, + sizeof(asn_DEF_MobilityTimestamp_tags_1) + /sizeof(asn_DEF_MobilityTimestamp_tags_1[0]), /* 1 */ + asn_DEF_MobilityTimestamp_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityTimestamp_tags_1) + /sizeof(asn_DEF_MobilityTimestamp_tags_1[0]), /* 1 */ + { &asn_OER_type_MobilityTimestamp_constr_1, &asn_PER_type_MobilityTimestamp_constr_1, MobilityTimestamp_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MobilityUrgency.c b/src/tmx/Asn_J2735/src/r2020/MobilityUrgency.c new file mode 100644 index 000000000..a85d87e4a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MobilityUrgency.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "MobilityUrgency.h" + +int +MobilityUrgency_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1000)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_MobilityUrgency_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..1000) */, + -1}; +asn_per_constraints_t asn_PER_type_MobilityUrgency_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1000 } /* (0..1000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MobilityUrgency_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityUrgency = { + "MobilityUrgency", + "MobilityUrgency", + &asn_OP_NativeInteger, + asn_DEF_MobilityUrgency_tags_1, + sizeof(asn_DEF_MobilityUrgency_tags_1) + /sizeof(asn_DEF_MobilityUrgency_tags_1[0]), /* 1 */ + asn_DEF_MobilityUrgency_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityUrgency_tags_1) + /sizeof(asn_DEF_MobilityUrgency_tags_1[0]), /* 1 */ + { &asn_OER_type_MobilityUrgency_constr_1, &asn_PER_type_MobilityUrgency_constr_1, MobilityUrgency_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Month.c b/src/tmx/Asn_J2735/src/r2020/Month.c new file mode 100644 index 000000000..c50f7e067 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Month.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Month.h" + +int +Month_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Month_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Month_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (1..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Month_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Month = { + "Month", + "Month", + &asn_OP_NativeInteger, + asn_DEF_Month_tags_1, + sizeof(asn_DEF_Month_tags_1) + /sizeof(asn_DEF_Month_tags_1[0]), /* 1 */ + asn_DEF_Month_tags_1, /* Same as above */ + sizeof(asn_DEF_Month_tags_1) + /sizeof(asn_DEF_Month_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Month_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Month_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Month_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MotorizedPropelledType.c b/src/tmx/Asn_J2735/src/r2020/MotorizedPropelledType.c new file mode 100644 index 000000000..d0cba37a9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MotorizedPropelledType.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MotorizedPropelledType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MotorizedPropelledType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MotorizedPropelledType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_MotorizedPropelledType_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 10, "otherTypes" }, + { 2, 10, "wheelChair" }, + { 3, 7, "bicycle" }, + { 4, 7, "scooter" }, + { 5, 19, "selfBalancingDevice" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_MotorizedPropelledType_enum2value_1[] = { + 3, /* bicycle(3) */ + 1, /* otherTypes(1) */ + 4, /* scooter(4) */ + 5, /* selfBalancingDevice(5) */ + 0, /* unavailable(0) */ + 2 /* wheelChair(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_MotorizedPropelledType_specs_1 = { + asn_MAP_MotorizedPropelledType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_MotorizedPropelledType_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_MotorizedPropelledType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MotorizedPropelledType = { + "MotorizedPropelledType", + "MotorizedPropelledType", + &asn_OP_NativeEnumerated, + asn_DEF_MotorizedPropelledType_tags_1, + sizeof(asn_DEF_MotorizedPropelledType_tags_1) + /sizeof(asn_DEF_MotorizedPropelledType_tags_1[0]), /* 1 */ + asn_DEF_MotorizedPropelledType_tags_1, /* Same as above */ + sizeof(asn_DEF_MotorizedPropelledType_tags_1) + /sizeof(asn_DEF_MotorizedPropelledType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MotorizedPropelledType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MotorizedPropelledType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_MotorizedPropelledType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MovementEvent-addGrpB.c b/src/tmx/Asn_J2735/src/r2020/MovementEvent-addGrpB.c new file mode 100644 index 000000000..5d43f0eda --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MovementEvent-addGrpB.c @@ -0,0 +1,158 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MovementEvent-addGrpB.h" + +asn_TYPE_member_t asn_MBR_MovementEvent_addGrpB_1[] = { + { ATF_POINTER, 1, offsetof(struct MovementEvent_addGrpB, startTime), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeRemaining, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "startTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct MovementEvent_addGrpB, minEndTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinTimetoChange, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "minEndTime" + }, + { ATF_POINTER, 4, offsetof(struct MovementEvent_addGrpB, maxEndTime), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MaxTimetoChange, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "maxEndTime" + }, + { ATF_POINTER, 3, offsetof(struct MovementEvent_addGrpB, likelyTime), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeRemaining, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "likelyTime" + }, + { ATF_POINTER, 2, offsetof(struct MovementEvent_addGrpB, confidence), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeIntervalConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, + { ATF_POINTER, 1, offsetof(struct MovementEvent_addGrpB, nextTime), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeRemaining, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nextTime" + }, +}; +static const int asn_MAP_MovementEvent_addGrpB_oms_1[] = { 0, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_MovementEvent_addGrpB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MovementEvent_addGrpB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* startTime */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* minEndTime */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxEndTime */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* likelyTime */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* confidence */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* nextTime */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MovementEvent_addGrpB_specs_1 = { + sizeof(struct MovementEvent_addGrpB), + offsetof(struct MovementEvent_addGrpB, _asn_ctx), + asn_MAP_MovementEvent_addGrpB_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_MovementEvent_addGrpB_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MovementEvent_addGrpB = { + "MovementEvent-addGrpB", + "MovementEvent-addGrpB", + &asn_OP_SEQUENCE, + asn_DEF_MovementEvent_addGrpB_tags_1, + sizeof(asn_DEF_MovementEvent_addGrpB_tags_1) + /sizeof(asn_DEF_MovementEvent_addGrpB_tags_1[0]), /* 1 */ + asn_DEF_MovementEvent_addGrpB_tags_1, /* Same as above */ + sizeof(asn_DEF_MovementEvent_addGrpB_tags_1) + /sizeof(asn_DEF_MovementEvent_addGrpB_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MovementEvent_addGrpB_1, + 6, /* Elements count */ + &asn_SPC_MovementEvent_addGrpB_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MovementEvent.c b/src/tmx/Asn_J2735/src/r2020/MovementEvent.c new file mode 100644 index 000000000..e3a5073ff --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MovementEvent.c @@ -0,0 +1,225 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MovementEvent.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_MovementEvent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_5 = { + sizeof(struct MovementEvent__regional), + offsetof(struct MovementEvent__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_5 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_5, + sizeof(asn_DEF_regional_tags_5) + /sizeof(asn_DEF_regional_tags_5[0]) - 1, /* 1 */ + asn_DEF_regional_tags_5, /* Same as above */ + sizeof(asn_DEF_regional_tags_5) + /sizeof(asn_DEF_regional_tags_5[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_5, + 1, /* Single element */ + &asn_SPC_regional_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MovementEvent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MovementEvent, eventState), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MovementPhaseState, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eventState" + }, + { ATF_POINTER, 3, offsetof(struct MovementEvent, timing), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeChangeDetails, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timing" + }, + { ATF_POINTER, 2, offsetof(struct MovementEvent, speeds), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AdvisorySpeedList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speeds" + }, + { ATF_POINTER, 1, offsetof(struct MovementEvent, regional), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_regional_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_MovementEvent_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_MovementEvent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MovementEvent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventState */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timing */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* speeds */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MovementEvent_specs_1 = { + sizeof(struct MovementEvent), + offsetof(struct MovementEvent, _asn_ctx), + asn_MAP_MovementEvent_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_MovementEvent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MovementEvent = { + "MovementEvent", + "MovementEvent", + &asn_OP_SEQUENCE, + asn_DEF_MovementEvent_tags_1, + sizeof(asn_DEF_MovementEvent_tags_1) + /sizeof(asn_DEF_MovementEvent_tags_1[0]), /* 1 */ + asn_DEF_MovementEvent_tags_1, /* Same as above */ + sizeof(asn_DEF_MovementEvent_tags_1) + /sizeof(asn_DEF_MovementEvent_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MovementEvent_1, + 4, /* Elements count */ + &asn_SPC_MovementEvent_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MovementEventList.c b/src/tmx/Asn_J2735/src/r2020/MovementEventList.c new file mode 100644 index 000000000..c4a5b8b22 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MovementEventList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MovementEventList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MovementEventList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MovementEventList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MovementEventList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MovementEvent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MovementEventList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MovementEventList_specs_1 = { + sizeof(struct MovementEventList), + offsetof(struct MovementEventList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MovementEventList = { + "MovementEventList", + "MovementEventList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MovementEventList_tags_1, + sizeof(asn_DEF_MovementEventList_tags_1) + /sizeof(asn_DEF_MovementEventList_tags_1[0]), /* 1 */ + asn_DEF_MovementEventList_tags_1, /* Same as above */ + sizeof(asn_DEF_MovementEventList_tags_1) + /sizeof(asn_DEF_MovementEventList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MovementEventList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MovementEventList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MovementEventList_1, + 1, /* Single element */ + &asn_SPC_MovementEventList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MovementList.c b/src/tmx/Asn_J2735/src/r2020/MovementList.c new file mode 100644 index 000000000..6de361245 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MovementList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MovementList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MovementList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MovementList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MovementList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MovementState, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MovementList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MovementList_specs_1 = { + sizeof(struct MovementList), + offsetof(struct MovementList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MovementList = { + "MovementList", + "MovementList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MovementList_tags_1, + sizeof(asn_DEF_MovementList_tags_1) + /sizeof(asn_DEF_MovementList_tags_1[0]), /* 1 */ + asn_DEF_MovementList_tags_1, /* Same as above */ + sizeof(asn_DEF_MovementList_tags_1) + /sizeof(asn_DEF_MovementList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MovementList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MovementList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MovementList_1, + 1, /* Single element */ + &asn_SPC_MovementList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MovementPhaseState.c b/src/tmx/Asn_J2735/src/r2020/MovementPhaseState.c new file mode 100644 index 000000000..ba61a5f3f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MovementPhaseState.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MovementPhaseState.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MovementPhaseState_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MovementPhaseState_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 9 } /* (0..9) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_MovementPhaseState_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 4, "dark" }, + { 2, 17, "stop-Then-Proceed" }, + { 3, 15, "stop-And-Remain" }, + { 4, 12, "pre-Movement" }, + { 5, 27, "permissive-Movement-Allowed" }, + { 6, 26, "protected-Movement-Allowed" }, + { 7, 20, "permissive-clearance" }, + { 8, 19, "protected-clearance" }, + { 9, 27, "caution-Conflicting-Traffic" } +}; +static const unsigned int asn_MAP_MovementPhaseState_enum2value_1[] = { + 9, /* caution-Conflicting-Traffic(9) */ + 1, /* dark(1) */ + 5, /* permissive-Movement-Allowed(5) */ + 7, /* permissive-clearance(7) */ + 4, /* pre-Movement(4) */ + 6, /* protected-Movement-Allowed(6) */ + 8, /* protected-clearance(8) */ + 3, /* stop-And-Remain(3) */ + 2, /* stop-Then-Proceed(2) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_MovementPhaseState_specs_1 = { + asn_MAP_MovementPhaseState_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_MovementPhaseState_enum2value_1, /* N => "tag"; sorted by N */ + 10, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_MovementPhaseState_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MovementPhaseState = { + "MovementPhaseState", + "MovementPhaseState", + &asn_OP_NativeEnumerated, + asn_DEF_MovementPhaseState_tags_1, + sizeof(asn_DEF_MovementPhaseState_tags_1) + /sizeof(asn_DEF_MovementPhaseState_tags_1[0]), /* 1 */ + asn_DEF_MovementPhaseState_tags_1, /* Same as above */ + sizeof(asn_DEF_MovementPhaseState_tags_1) + /sizeof(asn_DEF_MovementPhaseState_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MovementPhaseState_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MovementPhaseState_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_MovementPhaseState_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MovementState.c b/src/tmx/Asn_J2735/src/r2020/MovementState.c new file mode 100644 index 000000000..3137817a8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MovementState.c @@ -0,0 +1,243 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MovementState.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_6[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_MovementState, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_6[] = { + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_6 = { + sizeof(struct MovementState__regional), + offsetof(struct MovementState__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_6 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_6, + sizeof(asn_DEF_regional_tags_6) + /sizeof(asn_DEF_regional_tags_6[0]) - 1, /* 1 */ + asn_DEF_regional_tags_6, /* Same as above */ + sizeof(asn_DEF_regional_tags_6) + /sizeof(asn_DEF_regional_tags_6[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_6, + 1, /* Single element */ + &asn_SPC_regional_specs_6 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MovementState_1[] = { + { ATF_POINTER, 1, offsetof(struct MovementState, movementName), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DescriptiveName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "movementName" + }, + { ATF_NOFLAGS, 0, offsetof(struct MovementState, signalGroup), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignalGroupID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "signalGroup" + }, + { ATF_NOFLAGS, 0, offsetof(struct MovementState, state_time_speed), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MovementEventList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "state-time-speed" + }, + { ATF_POINTER, 2, offsetof(struct MovementState, maneuverAssistList), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ManeuverAssistList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "maneuverAssistList" + }, + { ATF_POINTER, 1, offsetof(struct MovementState, regional), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + 0, + &asn_DEF_regional_6, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_MovementState_oms_1[] = { 0, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_MovementState_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MovementState_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* movementName */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* signalGroup */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* state-time-speed */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* maneuverAssistList */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MovementState_specs_1 = { + sizeof(struct MovementState), + offsetof(struct MovementState, _asn_ctx), + asn_MAP_MovementState_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_MovementState_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MovementState = { + "MovementState", + "MovementState", + &asn_OP_SEQUENCE, + asn_DEF_MovementState_tags_1, + sizeof(asn_DEF_MovementState_tags_1) + /sizeof(asn_DEF_MovementState_tags_1[0]), /* 1 */ + asn_DEF_MovementState_tags_1, /* Same as above */ + sizeof(asn_DEF_MovementState_tags_1) + /sizeof(asn_DEF_MovementState_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MovementState_1, + 5, /* Elements count */ + &asn_SPC_MovementState_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MsgCRC.c b/src/tmx/Asn_J2735/src/r2020/MsgCRC.c new file mode 100644 index 000000000..946e4d76e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MsgCRC.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MsgCRC.h" + +int +MsgCRC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MsgCRC_constr_1 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MsgCRC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MsgCRC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MsgCRC = { + "MsgCRC", + "MsgCRC", + &asn_OP_OCTET_STRING, + asn_DEF_MsgCRC_tags_1, + sizeof(asn_DEF_MsgCRC_tags_1) + /sizeof(asn_DEF_MsgCRC_tags_1[0]), /* 1 */ + asn_DEF_MsgCRC_tags_1, /* Same as above */ + sizeof(asn_DEF_MsgCRC_tags_1) + /sizeof(asn_DEF_MsgCRC_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MsgCRC_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MsgCRC_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MsgCRC_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/MultiVehicleResponse.c b/src/tmx/Asn_J2735/src/r2020/MultiVehicleResponse.c new file mode 100644 index 000000000..03ecee44d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/MultiVehicleResponse.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "MultiVehicleResponse.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MultiVehicleResponse_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MultiVehicleResponse_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_MultiVehicleResponse_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 13, "singleVehicle" }, + { 2, 12, "multiVehicle" }, + { 3, 8, "reserved" } +}; +static const unsigned int asn_MAP_MultiVehicleResponse_enum2value_1[] = { + 2, /* multiVehicle(2) */ + 3, /* reserved(3) */ + 1, /* singleVehicle(1) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_MultiVehicleResponse_specs_1 = { + asn_MAP_MultiVehicleResponse_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_MultiVehicleResponse_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_MultiVehicleResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MultiVehicleResponse = { + "MultiVehicleResponse", + "MultiVehicleResponse", + &asn_OP_NativeEnumerated, + asn_DEF_MultiVehicleResponse_tags_1, + sizeof(asn_DEF_MultiVehicleResponse_tags_1) + /sizeof(asn_DEF_MultiVehicleResponse_tags_1[0]), /* 1 */ + asn_DEF_MultiVehicleResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_MultiVehicleResponse_tags_1) + /sizeof(asn_DEF_MultiVehicleResponse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MultiVehicleResponse_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MultiVehicleResponse_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_MultiVehicleResponse_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NMEA-MsgType.c b/src/tmx/Asn_J2735/src/r2020/NMEA-MsgType.c new file mode 100644 index 000000000..d80c2273d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NMEA-MsgType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NMEAcorrections" + * found in "J2735-NMEAcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NMEA-MsgType.h" + +int +NMEA_MsgType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NMEA_MsgType_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NMEA_MsgType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32767 } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_NMEA_MsgType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NMEA_MsgType = { + "NMEA-MsgType", + "NMEA-MsgType", + &asn_OP_NativeInteger, + asn_DEF_NMEA_MsgType_tags_1, + sizeof(asn_DEF_NMEA_MsgType_tags_1) + /sizeof(asn_DEF_NMEA_MsgType_tags_1[0]), /* 1 */ + asn_DEF_NMEA_MsgType_tags_1, /* Same as above */ + sizeof(asn_DEF_NMEA_MsgType_tags_1) + /sizeof(asn_DEF_NMEA_MsgType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NMEA_MsgType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NMEA_MsgType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NMEA_MsgType_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NMEA-Payload.c b/src/tmx/Asn_J2735/src/r2020/NMEA-Payload.c new file mode 100644 index 000000000..dae174401 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NMEA-Payload.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NMEAcorrections" + * found in "J2735-NMEAcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NMEA-Payload.h" + +int +NMEA_Payload_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 1023UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NMEA_Payload_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..1023)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NMEA_Payload_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1023 } /* (SIZE(1..1023)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_NMEA_Payload_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NMEA_Payload = { + "NMEA-Payload", + "NMEA-Payload", + &asn_OP_OCTET_STRING, + asn_DEF_NMEA_Payload_tags_1, + sizeof(asn_DEF_NMEA_Payload_tags_1) + /sizeof(asn_DEF_NMEA_Payload_tags_1[0]), /* 1 */ + asn_DEF_NMEA_Payload_tags_1, /* Same as above */ + sizeof(asn_DEF_NMEA_Payload_tags_1) + /sizeof(asn_DEF_NMEA_Payload_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NMEA_Payload_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NMEA_Payload_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NMEA_Payload_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NMEA-Revision.c b/src/tmx/Asn_J2735/src/r2020/NMEA-Revision.c new file mode 100644 index 000000000..6745fde03 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NMEA-Revision.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NMEAcorrections" + * found in "J2735-NMEAcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NMEA-Revision.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NMEA_Revision_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NMEA_Revision_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_NMEA_Revision_value2enum_1[] = { + { 0, 7, "unknown" }, + { 1, 8, "reserved" }, + { 2, 4, "rev1" }, + { 3, 4, "rev2" }, + { 4, 4, "rev3" }, + { 5, 4, "rev4" }, + { 6, 4, "rev5" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NMEA_Revision_enum2value_1[] = { + 1, /* reserved(1) */ + 2, /* rev1(2) */ + 3, /* rev2(3) */ + 4, /* rev3(4) */ + 5, /* rev4(5) */ + 6, /* rev5(6) */ + 0 /* unknown(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NMEA_Revision_specs_1 = { + asn_MAP_NMEA_Revision_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NMEA_Revision_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NMEA_Revision_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NMEA_Revision = { + "NMEA-Revision", + "NMEA-Revision", + &asn_OP_NativeEnumerated, + asn_DEF_NMEA_Revision_tags_1, + sizeof(asn_DEF_NMEA_Revision_tags_1) + /sizeof(asn_DEF_NMEA_Revision_tags_1[0]), /* 1 */ + asn_DEF_NMEA_Revision_tags_1, /* Same as above */ + sizeof(asn_DEF_NMEA_Revision_tags_1) + /sizeof(asn_DEF_NMEA_Revision_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NMEA_Revision_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NMEA_Revision_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NMEA_Revision_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NMEAcorrections.c b/src/tmx/Asn_J2735/src/r2020/NMEAcorrections.c new file mode 100644 index 000000000..4f892c039 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NMEAcorrections.c @@ -0,0 +1,261 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NMEAcorrections" + * found in "J2735-NMEAcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NMEAcorrections.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_NMEAcorrections, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_7 = { + sizeof(struct NMEAcorrections__regional), + offsetof(struct NMEAcorrections__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_7 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_7, + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]) - 1, /* 1 */ + asn_DEF_regional_tags_7, /* Same as above */ + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_7, + 1, /* Single element */ + &asn_SPC_regional_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NMEAcorrections_1[] = { + { ATF_POINTER, 4, offsetof(struct NMEAcorrections, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_POINTER, 3, offsetof(struct NMEAcorrections, rev), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NMEA_Revision, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rev" + }, + { ATF_POINTER, 2, offsetof(struct NMEAcorrections, msg), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NMEA_MsgType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msg" + }, + { ATF_POINTER, 1, offsetof(struct NMEAcorrections, wdCount), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "wdCount" + }, + { ATF_NOFLAGS, 0, offsetof(struct NMEAcorrections, payload), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NMEA_Payload, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "payload" + }, + { ATF_POINTER, 1, offsetof(struct NMEAcorrections, regional), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + 0, + &asn_DEF_regional_7, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_NMEAcorrections_oms_1[] = { 0, 1, 2, 3, 5 }; +static const ber_tlv_tag_t asn_DEF_NMEAcorrections_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NMEAcorrections_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rev */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* msg */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* wdCount */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* payload */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NMEAcorrections_specs_1 = { + sizeof(struct NMEAcorrections), + offsetof(struct NMEAcorrections, _asn_ctx), + asn_MAP_NMEAcorrections_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_NMEAcorrections_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NMEAcorrections = { + "NMEAcorrections", + "NMEAcorrections", + &asn_OP_SEQUENCE, + asn_DEF_NMEAcorrections_tags_1, + sizeof(asn_DEF_NMEAcorrections_tags_1) + /sizeof(asn_DEF_NMEAcorrections_tags_1[0]), /* 1 */ + asn_DEF_NMEAcorrections_tags_1, /* Same as above */ + sizeof(asn_DEF_NMEAcorrections_tags_1) + /sizeof(asn_DEF_NMEAcorrections_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_NMEAcorrections_1, + 6, /* Elements count */ + &asn_SPC_NMEAcorrections_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NULL.c b/src/tmx/Asn_J2735/src/r2020/NULL.c new file mode 100644 index 000000000..4a2914f4b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NULL.c @@ -0,0 +1,299 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include /* Implemented in terms of BOOLEAN type */ + +/* + * NULL basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NULL_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (5 << 2)) +}; +asn_TYPE_operation_t asn_OP_NULL = { + BOOLEAN_free, + NULL_print, + NULL_compare, + BOOLEAN_decode_ber, /* Implemented in terms of BOOLEAN */ + NULL_encode_der, /* Special handling of DER encoding */ + NULL_decode_xer, + NULL_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NULL_decode_oer, + NULL_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NULL_decode_uper, /* Unaligned PER decoder */ + NULL_encode_uper, /* Unaligned PER encoder */ + NULL_decode_aper, /* Aligned PER decoder */ + NULL_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + NULL_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NULL = { + "NULL", + "NULL", + &asn_OP_NULL, + asn_DEF_NULL_tags, + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + asn_DEF_NULL_tags, /* Same as above */ + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NULL_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, + ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + + erval.encoded = der_write_tags(td, 0, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = ptr; + } + + ASN__ENCODED_OK(erval); +} + +asn_enc_rval_t +NULL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)ilevel; + (void)flags; + (void)cb; + (void)app_key; + + /* XMLNullValue is empty */ + er.encoded = 0; + ASN__ENCODED_OK(er); +} + + +static enum xer_pbd_rval +NULL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + (void)td; + (void)sptr; + (void)chunk_buf; /* Going to be empty according to the rules below. */ + + /* + * There must be no content in self-terminating tag. + */ + if(chunk_size) + return XPBD_BROKEN_ENCODING; + else + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +NULL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(NULL_t), opt_mname, buf_ptr, size, + NULL__xer_body_decode); +} + +int +NULL_compare(const asn_TYPE_descriptor_t *td, const void *a, const void *b) { + (void)td; + (void)a; + (void)b; + return 0; +} + +int +NULL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(sptr) { + return (cb("", 9, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +#ifndef ASN_DISABLE_OER_SUPPORT + +asn_dec_rval_t +NULL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t rv = {RC_OK, 0}; + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)ptr; + (void)size; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + return rv; +} + +asn_enc_rval_t +NULL_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)constraints; + (void)cb; + (void)app_key; + + er.encoded = 0; /* Encoding in 0 bytes. */ + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +NULL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +NULL_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +NULL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + + +asn_enc_rval_t +NULL_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +asn_random_fill_result_t +NULL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + NULL_t *st = *sptr; + + (void)td; + (void)constr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (NULL_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + + return result_ok; +} + diff --git a/src/tmx/Asn_J2735/src/r2020/NativeEnumerated.c b/src/tmx/Asn_J2735/src/r2020/NativeEnumerated.c new file mode 100644 index 000000000..aee450c17 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeEnumerated.c @@ -0,0 +1,108 @@ +/*- + * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeEnumerated basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeEnumerated = { + NativeInteger_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + NativeInteger_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + NativeInteger_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + NativeInteger_decode_ber, + NativeInteger_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + NativeInteger_decode_xer, + NativeEnumerated_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + NativeEnumerated_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + NativeEnumerated_decode_oer, + NativeEnumerated_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + NativeEnumerated_decode_uper, + NativeEnumerated_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + NativeEnumerated_decode_aper, + NativeEnumerated_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + NativeEnumerated_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { + "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ + "ENUMERATED", + &asn_OP_NativeEnumerated, + asn_DEF_NativeEnumerated_tags, + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + asn_DEF_NativeEnumerated_tags, /* Same as above */ + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +int +NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { + const asn_INTEGER_enum_map_t *a = ap; + const asn_INTEGER_enum_map_t *b = bp; + if(a->nat_value == b->nat_value) + return 0; + if(a->nat_value < b->nat_value) + return -1; + return 1; +} +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ diff --git a/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_aper.c b/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_aper.c new file mode 100644 index 000000000..c088cbbed --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_aper.c @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeEnumerated_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + /* Deal with APER padding */ + if(ct && ct->upper_bound >= 255) { + int padding = 0; + padding = (8 - (pd->moved % 8)) % 8; + ASN_DEBUG("For NativeEnumerated %s,offset = %zu Padding bits = %d", + td->name, pd->moved, padding); + ASN_DEBUG("For NativeEnumerated %s, upper bound = %llu", + td->name, (unsigned long long)ct->upper_bound); + if(padding > 0) + per_get_few_bits(pd, padding); + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + + /* XXX handle indefinite index length > 64k */ + value = aper_get_nsnnwn(pd, 65537); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + //if(value >= specs->map_count) + // ASN__DECODE_FAILED; + if(value >= specs->map_count) { + ASN_DEBUG("Decoded unknown index value %s = %ld", td->name, value); + /* unknown index. Workaround => set the first enumeration value */ + *native = specs->value2enum[0].nat_value; + return rval; + } + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +asn_enc_rval_t +NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0, range_bits = 1; + asn_INTEGER_enum_map_t key; + asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + if(native < 0) ASN__ENCODE_FAILED; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) range_bits = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(range_bits && ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(aper_put_nsnnwn(po, + ct->upper_bound - ct->lower_bound + 1, + value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_oer.c b/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_oer.c new file mode 100644 index 000000000..640934b9b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_oer.c @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static long +asn__nativeenumerated_convert(const uint8_t *b, const uint8_t *end) { + unsigned long value; + + /* Perform the sign initialization */ + /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) { + value = (unsigned long)(-1); + } else { + value = 0; + } + + /* Conversion engine */ + for(; b < end; b++) { + value = (value << 8) | *b; + } + + return value; +} + +asn_dec_rval_t +NativeEnumerated_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + void **nint_ptr, const void *ptr, size_t size) { + asn_dec_rval_t rval = {RC_OK, 0}; + long *native = (long *)*nint_ptr; + const uint8_t *b = ptr; + + (void)opt_codec_ctx; + (void)constraints; + + if(size < 1) { + ASN__DECODE_STARVED; + } + + if((*b & 0x80) == 0) { + /* + * X.696 (08/2015) #11.2 Short form for Enumerated. + */ + if(!native) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + *native = *b; + rval.consumed = 1; + } else { + /* + * X.696 (08/2015) #11.4 Long form for Enumerated. + */ + size_t length = *b & 0x7f; + const uint8_t *bend; + long value; + + if(length < 1 || length > sizeof(*native)) { + ASN__DECODE_FAILED; + } + if((1 + length) > size) { + ASN__DECODE_STARVED; + } + b++; + bend = b + length; + + value = asn__nativeenumerated_convert(b, bend); + if(value < 0) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + if(specs && specs->field_unsigned) { + ASN__DECODE_FAILED; + } + } + + if(!native) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + *native = value; + + rval.consumed = (1 + length); + } + + return rval; +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +NativeEnumerated_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + long native; + + (void)constraints; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + if(native >= 0 && native <= 127) { + /* #11.2 Short form */ + uint8_t b = native; + er.encoded = 1; + if(cb(&b, er.encoded, app_key) < 0) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } else { + /* #11.2 Long form */ + uint8_t buf[1 + sizeof(native)]; + uint8_t *b = &buf[sizeof(native)]; /* Last addressable */ + long final_pattern = -1 * (native < 0); + + for(;;) { + *b-- = native; + native >>= 8; + if(native == final_pattern) { + if(final_pattern) { + if((b[1] & 0x80)) break; + } else { + if(!(b[1] & 0x80)) break; + } + } + } + *b = 0x80 | (&buf[sizeof(native)] - b); + er.encoded = 1 + (&buf[sizeof(native)] - b); + if(cb(b, er.encoded, app_key) < 0) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_uper.c b/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_uper.c new file mode 100644 index 000000000..bdfbf227d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_uper.c @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +asn_enc_rval_t +NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0; + asn_INTEGER_enum_map_t key; + const asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_xer.c b/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_xer.c new file mode 100644 index 000000000..439677859 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeEnumerated_xer.c @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + const asn_INTEGER_enum_map_t *el; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + el = INTEGER_map_value2enum(specs, *native); + if(el) { + er.encoded = + asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); + if(er.encoded < 0) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } else { + ASN_DEBUG( + "ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + ASN__ENCODE_FAILED; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/NativeInteger.c b/src/tmx/Asn_J2735/src/r2020/NativeInteger.c new file mode 100644 index 000000000..f0309b0d2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeInteger.c @@ -0,0 +1,152 @@ +/*- + * Copyright (c) 2004, 2005, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeInteger basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeInteger = { + NativeInteger_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + NativeInteger_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + NativeInteger_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + NativeInteger_decode_ber, + NativeInteger_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + NativeInteger_decode_xer, + NativeInteger_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + NativeInteger_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + NativeInteger_decode_oer, /* OER decoder */ + NativeInteger_encode_oer, /* Canonical OER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + NativeInteger_decode_uper, /* Unaligned PER decoder */ + NativeInteger_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + NativeInteger_decode_aper, /* Aligned PER decoder */ + NativeInteger_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + NativeInteger_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeInteger = { + "INTEGER", /* The ASN.1 type is still INTEGER */ + "INTEGER", + &asn_OP_NativeInteger, + asn_DEF_NativeInteger_tags, + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + asn_DEF_NativeInteger_tags, /* Same as above */ + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +void +NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", + td->name, method, ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(long)); + break; + } +} + +int +NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + (void)td; + + if(aptr && bptr) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + if(specs && specs->field_unsigned) { + const unsigned long *a = aptr; + const unsigned long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } else { + const long *a = aptr; + const long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } + } else if(!aptr) { + return -1; + } else { + return 1; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/NativeInteger_aper.c b/src/tmx/Asn_J2735/src/r2020/NativeInteger_aper.c new file mode 100644 index 000000000..c5db9d92c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeInteger_aper.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_aper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} diff --git a/src/tmx/Asn_J2735/src/r2020/NativeInteger_ber.c b/src/tmx/Asn_J2735/src/r2020/NativeInteger_ber.c new file mode 100644 index 000000000..f1d344426 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeInteger_ber.c @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Decode INTEGER type. + */ +asn_dec_rval_t +NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **nint_ptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + long *native = (long *)*nint_ptr; + asn_dec_rval_t rval; + ber_tlv_len_t length; + + /* + * If the structure is not there, allocate it. + */ + if(native == NULL) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(native == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * ASN.1 encoded INTEGER: buf_ptr, length + * Fill the native, at the same time checking for overflow. + * If overflow occurred, return with RC_FAIL. + */ + { + INTEGER_t tmp; + union { + const void *constbuf; + void *nonconstbuf; + } unconst_buf; + long l; + + unconst_buf.constbuf = buf_ptr; + tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; + tmp.size = length; + + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&tmp, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + *native = l; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", + (long)rval.consumed, (long)length, td->name, (long)*native); + + return rval; +} + +/* + * Encode the NativeInteger using the standard INTEGER type DER encoder. + */ +asn_enc_rval_t +NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ + asn_enc_rval_t erval = {0,0,0}; + INTEGER_t tmp; + +#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ + + tmp.buf = (uint8_t *)&native; + tmp.size = sizeof(native); + +#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ + uint8_t buf[sizeof(native)]; + uint8_t *p; + + /* Prepare a fake INTEGER */ + for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) + *p = (uint8_t)native; + + tmp.buf = buf; + tmp.size = sizeof(buf); +#endif /* WORDS_BIGENDIAN */ + + /* Encode fake INTEGER */ + erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); + if(erval.structure_ptr == &tmp) { + erval.structure_ptr = ptr; + } + return erval; +} diff --git a/src/tmx/Asn_J2735/src/r2020/NativeInteger_oer.c b/src/tmx/Asn_J2735/src/r2020/NativeInteger_oer.c new file mode 100644 index 000000000..21cf537a3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeInteger_oer.c @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeInteger_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + void **nint_ptr, const void *ptr, size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + long *native = (long *)*nint_ptr; + INTEGER_t tmpint; + INTEGER_t *tmpintptr = &tmpint; + + memset(&tmpint, 0, sizeof(tmpint)); + + if(!native) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + /* + * OPTIMIZATION: Encode directly rather than passing through INTEGER. + * Saves a memory allocation. + */ + rval = INTEGER_decode_oer(opt_codec_ctx, td, constraints, + (void **)&tmpintptr, ptr, size); + if(rval.code != RC_OK) { + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return rval; + } + + if(specs && specs->field_unsigned) { + unsigned long ul; + int ok = asn_INTEGER2ulong(&tmpint, &ul) == 0; + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + if(ok) { + *native = ul; + } else { + rval.code = RC_FAIL; + return rval; + } + } else { + long l; + int ok = asn_INTEGER2long(&tmpint, &l) == 0; + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + if(ok) { + *native = l; + } else { + rval.code = RC_FAIL; + return rval; + } + } + + return rval; +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +NativeInteger_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + INTEGER_t tmpint; + long native; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + memset(&tmpint, 0, sizeof(tmpint)); + + ASN_DEBUG("Encoding %s %ld as NativeInteger", td ? td->name : "", native); + + if((specs && specs->field_unsigned) ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) { + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t er = + INTEGER_encode_oer(td, constraints, &tmpint, cb, app_key); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/NativeInteger_print.c b/src/tmx/Asn_J2735/src/r2020/NativeInteger_print.c new file mode 100644 index 000000000..f2c3b1e1b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeInteger_print.c @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * INTEGER specific human-readable output. + */ +int +NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + const long *native = (const long *)sptr; + char scratch[32]; /* Enough for 64-bit int */ + int ret; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(native) { + long value = *native; + ret = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) ? "%lu" : "%ld", value); + assert(ret > 0 && (size_t)ret < sizeof(scratch)); + if(cb(scratch, ret, app_key) < 0) return -1; + if(specs && (value >= 0 || !specs->field_unsigned)) { + const asn_INTEGER_enum_map_t *el = + INTEGER_map_value2enum(specs, value); + if(el) { + if(cb(" (", 2, app_key) < 0) return -1; + if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; + if(cb(")", 1, app_key) < 0) return -1; + } + } + return 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/NativeInteger_rfill.c b/src/tmx/Asn_J2735/src/r2020/NativeInteger_rfill.c new file mode 100644 index 000000000..a37a50431 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeInteger_rfill.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + long *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (long *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + const asn_per_constraints_t *ct; + + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + } + + *sptr = st; + *st = value; + return result_ok; +} diff --git a/src/tmx/Asn_J2735/src/r2020/NativeInteger_uper.c b/src/tmx/Asn_J2735/src/r2020/NativeInteger_uper.c new file mode 100644 index 000000000..f8674f68f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeInteger_uper.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_uper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} diff --git a/src/tmx/Asn_J2735/src/r2020/NativeInteger_xer.c b/src/tmx/Asn_J2735/src/r2020/NativeInteger_xer.c new file mode 100644 index 000000000..dedb8b0be --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NativeInteger_xer.c @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +asn_dec_rval_t +NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + INTEGER_t st; + void *st_ptr = (void *)&st; + long *native = (long *)*sptr; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&st, 0, sizeof(st)); + rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, + opt_mname, buf_ptr, size); + if(rval.code == RC_OK) { + long l; + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&st, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + } else { + *native = l; + } + } else { + /* + * Cannot restart from the middle; + * there is no place to save state in the native type. + * Request a continuation from the very beginning. + */ + rval.consumed = 0; + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); + return rval; +} + + +asn_enc_rval_t +NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit int */ + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + er.encoded = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) + || cb(scratch, er.encoded, app_key) < 0) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/Node-LL-24B.c b/src/tmx/Asn_J2735/src/r2020/Node-LL-24B.c new file mode 100644 index 000000000..834f102e2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-LL-24B.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-LL-24B.h" + +asn_TYPE_member_t asn_MBR_Node_LL_24B_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_24B, lon), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lon" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_24B, lat), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_LL_24B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_LL_24B_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lon */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lat */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_LL_24B_specs_1 = { + sizeof(struct Node_LL_24B), + offsetof(struct Node_LL_24B, _asn_ctx), + asn_MAP_Node_LL_24B_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_LL_24B = { + "Node-LL-24B", + "Node-LL-24B", + &asn_OP_SEQUENCE, + asn_DEF_Node_LL_24B_tags_1, + sizeof(asn_DEF_Node_LL_24B_tags_1) + /sizeof(asn_DEF_Node_LL_24B_tags_1[0]), /* 1 */ + asn_DEF_Node_LL_24B_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_LL_24B_tags_1) + /sizeof(asn_DEF_Node_LL_24B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_LL_24B_1, + 2, /* Elements count */ + &asn_SPC_Node_LL_24B_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-LL-28B.c b/src/tmx/Asn_J2735/src/r2020/Node-LL-28B.c new file mode 100644 index 000000000..44de22756 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-LL-28B.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-LL-28B.h" + +asn_TYPE_member_t asn_MBR_Node_LL_28B_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_28B, lon), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B14, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lon" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_28B, lat), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B14, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_LL_28B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_LL_28B_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lon */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lat */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_LL_28B_specs_1 = { + sizeof(struct Node_LL_28B), + offsetof(struct Node_LL_28B, _asn_ctx), + asn_MAP_Node_LL_28B_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_LL_28B = { + "Node-LL-28B", + "Node-LL-28B", + &asn_OP_SEQUENCE, + asn_DEF_Node_LL_28B_tags_1, + sizeof(asn_DEF_Node_LL_28B_tags_1) + /sizeof(asn_DEF_Node_LL_28B_tags_1[0]), /* 1 */ + asn_DEF_Node_LL_28B_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_LL_28B_tags_1) + /sizeof(asn_DEF_Node_LL_28B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_LL_28B_1, + 2, /* Elements count */ + &asn_SPC_Node_LL_28B_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-LL-32B.c b/src/tmx/Asn_J2735/src/r2020/Node-LL-32B.c new file mode 100644 index 000000000..e2fe75038 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-LL-32B.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-LL-32B.h" + +asn_TYPE_member_t asn_MBR_Node_LL_32B_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_32B, lon), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B16, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lon" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_32B, lat), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B16, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_LL_32B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_LL_32B_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lon */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lat */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_LL_32B_specs_1 = { + sizeof(struct Node_LL_32B), + offsetof(struct Node_LL_32B, _asn_ctx), + asn_MAP_Node_LL_32B_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_LL_32B = { + "Node-LL-32B", + "Node-LL-32B", + &asn_OP_SEQUENCE, + asn_DEF_Node_LL_32B_tags_1, + sizeof(asn_DEF_Node_LL_32B_tags_1) + /sizeof(asn_DEF_Node_LL_32B_tags_1[0]), /* 1 */ + asn_DEF_Node_LL_32B_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_LL_32B_tags_1) + /sizeof(asn_DEF_Node_LL_32B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_LL_32B_1, + 2, /* Elements count */ + &asn_SPC_Node_LL_32B_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-LL-36B.c b/src/tmx/Asn_J2735/src/r2020/Node-LL-36B.c new file mode 100644 index 000000000..f49417090 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-LL-36B.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-LL-36B.h" + +asn_TYPE_member_t asn_MBR_Node_LL_36B_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_36B, lon), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B18, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lon" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_36B, lat), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B18, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_LL_36B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_LL_36B_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lon */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lat */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_LL_36B_specs_1 = { + sizeof(struct Node_LL_36B), + offsetof(struct Node_LL_36B, _asn_ctx), + asn_MAP_Node_LL_36B_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_LL_36B = { + "Node-LL-36B", + "Node-LL-36B", + &asn_OP_SEQUENCE, + asn_DEF_Node_LL_36B_tags_1, + sizeof(asn_DEF_Node_LL_36B_tags_1) + /sizeof(asn_DEF_Node_LL_36B_tags_1[0]), /* 1 */ + asn_DEF_Node_LL_36B_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_LL_36B_tags_1) + /sizeof(asn_DEF_Node_LL_36B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_LL_36B_1, + 2, /* Elements count */ + &asn_SPC_Node_LL_36B_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-LL-44B.c b/src/tmx/Asn_J2735/src/r2020/Node-LL-44B.c new file mode 100644 index 000000000..adec8b4b1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-LL-44B.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-LL-44B.h" + +asn_TYPE_member_t asn_MBR_Node_LL_44B_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_44B, lon), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B22, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lon" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_44B, lat), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B22, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_LL_44B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_LL_44B_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lon */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lat */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_LL_44B_specs_1 = { + sizeof(struct Node_LL_44B), + offsetof(struct Node_LL_44B, _asn_ctx), + asn_MAP_Node_LL_44B_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_LL_44B = { + "Node-LL-44B", + "Node-LL-44B", + &asn_OP_SEQUENCE, + asn_DEF_Node_LL_44B_tags_1, + sizeof(asn_DEF_Node_LL_44B_tags_1) + /sizeof(asn_DEF_Node_LL_44B_tags_1[0]), /* 1 */ + asn_DEF_Node_LL_44B_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_LL_44B_tags_1) + /sizeof(asn_DEF_Node_LL_44B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_LL_44B_1, + 2, /* Elements count */ + &asn_SPC_Node_LL_44B_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-LL-48B.c b/src/tmx/Asn_J2735/src/r2020/Node-LL-48B.c new file mode 100644 index 000000000..79086c53f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-LL-48B.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-LL-48B.h" + +asn_TYPE_member_t asn_MBR_Node_LL_48B_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_48B, lon), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B24, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lon" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_LL_48B, lat), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B24, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_LL_48B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_LL_48B_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lon */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lat */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_LL_48B_specs_1 = { + sizeof(struct Node_LL_48B), + offsetof(struct Node_LL_48B, _asn_ctx), + asn_MAP_Node_LL_48B_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_LL_48B = { + "Node-LL-48B", + "Node-LL-48B", + &asn_OP_SEQUENCE, + asn_DEF_Node_LL_48B_tags_1, + sizeof(asn_DEF_Node_LL_48B_tags_1) + /sizeof(asn_DEF_Node_LL_48B_tags_1[0]), /* 1 */ + asn_DEF_Node_LL_48B_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_LL_48B_tags_1) + /sizeof(asn_DEF_Node_LL_48B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_LL_48B_1, + 2, /* Elements count */ + &asn_SPC_Node_LL_48B_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-LLdms-48b.c b/src/tmx/Asn_J2735/src/r2020/Node-LLdms-48b.c new file mode 100644 index 000000000..e17fa8f6d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-LLdms-48b.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-LLdms-48b.h" + +asn_TYPE_member_t asn_MBR_Node_LLdms_48b_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_LLdms_48b, lon), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LongitudeDMS, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lon" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_LLdms_48b, lat), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LatitudeDMS, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_LLdms_48b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_LLdms_48b_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lon */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lat */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_LLdms_48b_specs_1 = { + sizeof(struct Node_LLdms_48b), + offsetof(struct Node_LLdms_48b, _asn_ctx), + asn_MAP_Node_LLdms_48b_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_LLdms_48b = { + "Node-LLdms-48b", + "Node-LLdms-48b", + &asn_OP_SEQUENCE, + asn_DEF_Node_LLdms_48b_tags_1, + sizeof(asn_DEF_Node_LLdms_48b_tags_1) + /sizeof(asn_DEF_Node_LLdms_48b_tags_1[0]), /* 1 */ + asn_DEF_Node_LLdms_48b_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_LLdms_48b_tags_1) + /sizeof(asn_DEF_Node_LLdms_48b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_LLdms_48b_1, + 2, /* Elements count */ + &asn_SPC_Node_LLdms_48b_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-LLdms-80b.c b/src/tmx/Asn_J2735/src/r2020/Node-LLdms-80b.c new file mode 100644 index 000000000..cffedb137 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-LLdms-80b.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-LLdms-80b.h" + +asn_TYPE_member_t asn_MBR_Node_LLdms_80b_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_LLdms_80b, lon), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LongitudeDMS2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lon" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_LLdms_80b, lat), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LatitudeDMS2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_LLdms_80b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_LLdms_80b_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lon */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lat */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_LLdms_80b_specs_1 = { + sizeof(struct Node_LLdms_80b), + offsetof(struct Node_LLdms_80b, _asn_ctx), + asn_MAP_Node_LLdms_80b_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_LLdms_80b = { + "Node-LLdms-80b", + "Node-LLdms-80b", + &asn_OP_SEQUENCE, + asn_DEF_Node_LLdms_80b_tags_1, + sizeof(asn_DEF_Node_LLdms_80b_tags_1) + /sizeof(asn_DEF_Node_LLdms_80b_tags_1[0]), /* 1 */ + asn_DEF_Node_LLdms_80b_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_LLdms_80b_tags_1) + /sizeof(asn_DEF_Node_LLdms_80b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_LLdms_80b_1, + 2, /* Elements count */ + &asn_SPC_Node_LLdms_80b_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-LLmD-64b.c b/src/tmx/Asn_J2735/src/r2020/Node-LLmD-64b.c new file mode 100644 index 000000000..d54fe90aa --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-LLmD-64b.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-LLmD-64b.h" + +asn_TYPE_member_t asn_MBR_Node_LLmD_64b_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_LLmD_64b, lon), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lon" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_LLmD_64b, lat), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_LLmD_64b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_LLmD_64b_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lon */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lat */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_LLmD_64b_specs_1 = { + sizeof(struct Node_LLmD_64b), + offsetof(struct Node_LLmD_64b, _asn_ctx), + asn_MAP_Node_LLmD_64b_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_LLmD_64b = { + "Node-LLmD-64b", + "Node-LLmD-64b", + &asn_OP_SEQUENCE, + asn_DEF_Node_LLmD_64b_tags_1, + sizeof(asn_DEF_Node_LLmD_64b_tags_1) + /sizeof(asn_DEF_Node_LLmD_64b_tags_1[0]), /* 1 */ + asn_DEF_Node_LLmD_64b_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_LLmD_64b_tags_1) + /sizeof(asn_DEF_Node_LLmD_64b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_LLmD_64b_1, + 2, /* Elements count */ + &asn_SPC_Node_LLmD_64b_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-XY-20b.c b/src/tmx/Asn_J2735/src/r2020/Node-XY-20b.c new file mode 100644 index 000000000..10707ec98 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-XY-20b.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-XY-20b.h" + +asn_TYPE_member_t asn_MBR_Node_XY_20b_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_20b, x), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "x" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_20b, y), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "y" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_XY_20b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_XY_20b_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* x */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* y */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_XY_20b_specs_1 = { + sizeof(struct Node_XY_20b), + offsetof(struct Node_XY_20b, _asn_ctx), + asn_MAP_Node_XY_20b_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_XY_20b = { + "Node-XY-20b", + "Node-XY-20b", + &asn_OP_SEQUENCE, + asn_DEF_Node_XY_20b_tags_1, + sizeof(asn_DEF_Node_XY_20b_tags_1) + /sizeof(asn_DEF_Node_XY_20b_tags_1[0]), /* 1 */ + asn_DEF_Node_XY_20b_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_XY_20b_tags_1) + /sizeof(asn_DEF_Node_XY_20b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_XY_20b_1, + 2, /* Elements count */ + &asn_SPC_Node_XY_20b_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-XY-22b.c b/src/tmx/Asn_J2735/src/r2020/Node-XY-22b.c new file mode 100644 index 000000000..3aa579af3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-XY-22b.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-XY-22b.h" + +asn_TYPE_member_t asn_MBR_Node_XY_22b_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_22b, x), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "x" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_22b, y), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "y" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_XY_22b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_XY_22b_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* x */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* y */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_XY_22b_specs_1 = { + sizeof(struct Node_XY_22b), + offsetof(struct Node_XY_22b, _asn_ctx), + asn_MAP_Node_XY_22b_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_XY_22b = { + "Node-XY-22b", + "Node-XY-22b", + &asn_OP_SEQUENCE, + asn_DEF_Node_XY_22b_tags_1, + sizeof(asn_DEF_Node_XY_22b_tags_1) + /sizeof(asn_DEF_Node_XY_22b_tags_1[0]), /* 1 */ + asn_DEF_Node_XY_22b_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_XY_22b_tags_1) + /sizeof(asn_DEF_Node_XY_22b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_XY_22b_1, + 2, /* Elements count */ + &asn_SPC_Node_XY_22b_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-XY-24b.c b/src/tmx/Asn_J2735/src/r2020/Node-XY-24b.c new file mode 100644 index 000000000..f59ae7891 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-XY-24b.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-XY-24b.h" + +asn_TYPE_member_t asn_MBR_Node_XY_24b_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_24b, x), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "x" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_24b, y), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "y" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_XY_24b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_XY_24b_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* x */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* y */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_XY_24b_specs_1 = { + sizeof(struct Node_XY_24b), + offsetof(struct Node_XY_24b, _asn_ctx), + asn_MAP_Node_XY_24b_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_XY_24b = { + "Node-XY-24b", + "Node-XY-24b", + &asn_OP_SEQUENCE, + asn_DEF_Node_XY_24b_tags_1, + sizeof(asn_DEF_Node_XY_24b_tags_1) + /sizeof(asn_DEF_Node_XY_24b_tags_1[0]), /* 1 */ + asn_DEF_Node_XY_24b_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_XY_24b_tags_1) + /sizeof(asn_DEF_Node_XY_24b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_XY_24b_1, + 2, /* Elements count */ + &asn_SPC_Node_XY_24b_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-XY-26b.c b/src/tmx/Asn_J2735/src/r2020/Node-XY-26b.c new file mode 100644 index 000000000..04668a9c8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-XY-26b.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-XY-26b.h" + +asn_TYPE_member_t asn_MBR_Node_XY_26b_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_26b, x), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B13, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "x" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_26b, y), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B13, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "y" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_XY_26b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_XY_26b_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* x */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* y */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_XY_26b_specs_1 = { + sizeof(struct Node_XY_26b), + offsetof(struct Node_XY_26b, _asn_ctx), + asn_MAP_Node_XY_26b_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_XY_26b = { + "Node-XY-26b", + "Node-XY-26b", + &asn_OP_SEQUENCE, + asn_DEF_Node_XY_26b_tags_1, + sizeof(asn_DEF_Node_XY_26b_tags_1) + /sizeof(asn_DEF_Node_XY_26b_tags_1[0]), /* 1 */ + asn_DEF_Node_XY_26b_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_XY_26b_tags_1) + /sizeof(asn_DEF_Node_XY_26b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_XY_26b_1, + 2, /* Elements count */ + &asn_SPC_Node_XY_26b_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-XY-28b.c b/src/tmx/Asn_J2735/src/r2020/Node-XY-28b.c new file mode 100644 index 000000000..9b8574ad0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-XY-28b.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-XY-28b.h" + +asn_TYPE_member_t asn_MBR_Node_XY_28b_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_28b, x), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B14, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "x" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_28b, y), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B14, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "y" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_XY_28b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_XY_28b_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* x */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* y */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_XY_28b_specs_1 = { + sizeof(struct Node_XY_28b), + offsetof(struct Node_XY_28b, _asn_ctx), + asn_MAP_Node_XY_28b_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_XY_28b = { + "Node-XY-28b", + "Node-XY-28b", + &asn_OP_SEQUENCE, + asn_DEF_Node_XY_28b_tags_1, + sizeof(asn_DEF_Node_XY_28b_tags_1) + /sizeof(asn_DEF_Node_XY_28b_tags_1[0]), /* 1 */ + asn_DEF_Node_XY_28b_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_XY_28b_tags_1) + /sizeof(asn_DEF_Node_XY_28b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_XY_28b_1, + 2, /* Elements count */ + &asn_SPC_Node_XY_28b_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Node-XY-32b.c b/src/tmx/Asn_J2735/src/r2020/Node-XY-32b.c new file mode 100644 index 000000000..f5036581a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Node-XY-32b.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Node-XY-32b.h" + +asn_TYPE_member_t asn_MBR_Node_XY_32b_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_32b, x), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B16, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "x" + }, + { ATF_NOFLAGS, 0, offsetof(struct Node_XY_32b, y), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B16, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "y" + }, +}; +static const ber_tlv_tag_t asn_DEF_Node_XY_32b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Node_XY_32b_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* x */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* y */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Node_XY_32b_specs_1 = { + sizeof(struct Node_XY_32b), + offsetof(struct Node_XY_32b, _asn_ctx), + asn_MAP_Node_XY_32b_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Node_XY_32b = { + "Node-XY-32b", + "Node-XY-32b", + &asn_OP_SEQUENCE, + asn_DEF_Node_XY_32b_tags_1, + sizeof(asn_DEF_Node_XY_32b_tags_1) + /sizeof(asn_DEF_Node_XY_32b_tags_1[0]), /* 1 */ + asn_DEF_Node_XY_32b_tags_1, /* Same as above */ + sizeof(asn_DEF_Node_XY_32b_tags_1) + /sizeof(asn_DEF_Node_XY_32b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Node_XY_32b_1, + 2, /* Elements count */ + &asn_SPC_Node_XY_32b_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeAttributeLL.c b/src/tmx/Asn_J2735/src/r2020/NodeAttributeLL.c new file mode 100644 index 000000000..3db1773d5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeAttributeLL.c @@ -0,0 +1,90 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeAttributeLL.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NodeAttributeLL_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NodeAttributeLL_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 11 } /* (0..11,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_NodeAttributeLL_value2enum_1[] = { + { 0, 8, "reserved" }, + { 1, 8, "stopLine" }, + { 2, 16, "roundedCapStyleA" }, + { 3, 16, "roundedCapStyleB" }, + { 4, 10, "mergePoint" }, + { 5, 12, "divergePoint" }, + { 6, 18, "downstreamStopLine" }, + { 7, 19, "downstreamStartNode" }, + { 8, 15, "closedToTraffic" }, + { 9, 10, "safeIsland" }, + { 10, 20, "curbPresentAtStepOff" }, + { 11, 14, "hydrantPresent" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NodeAttributeLL_enum2value_1[] = { + 8, /* closedToTraffic(8) */ + 10, /* curbPresentAtStepOff(10) */ + 5, /* divergePoint(5) */ + 7, /* downstreamStartNode(7) */ + 6, /* downstreamStopLine(6) */ + 11, /* hydrantPresent(11) */ + 4, /* mergePoint(4) */ + 0, /* reserved(0) */ + 2, /* roundedCapStyleA(2) */ + 3, /* roundedCapStyleB(3) */ + 9, /* safeIsland(9) */ + 1 /* stopLine(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NodeAttributeLL_specs_1 = { + asn_MAP_NodeAttributeLL_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NodeAttributeLL_enum2value_1, /* N => "tag"; sorted by N */ + 12, /* Number of elements in the maps */ + 13, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NodeAttributeLL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NodeAttributeLL = { + "NodeAttributeLL", + "NodeAttributeLL", + &asn_OP_NativeEnumerated, + asn_DEF_NodeAttributeLL_tags_1, + sizeof(asn_DEF_NodeAttributeLL_tags_1) + /sizeof(asn_DEF_NodeAttributeLL_tags_1[0]), /* 1 */ + asn_DEF_NodeAttributeLL_tags_1, /* Same as above */ + sizeof(asn_DEF_NodeAttributeLL_tags_1) + /sizeof(asn_DEF_NodeAttributeLL_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NodeAttributeLL_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NodeAttributeLL_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NodeAttributeLL_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeAttributeLLList.c b/src/tmx/Asn_J2735/src/r2020/NodeAttributeLLList.c new file mode 100644 index 000000000..3cbe967aa --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeAttributeLLList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeAttributeLLList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NodeAttributeLLList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NodeAttributeLLList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NodeAttributeLLList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NodeAttributeLL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_NodeAttributeLLList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_NodeAttributeLLList_specs_1 = { + sizeof(struct NodeAttributeLLList), + offsetof(struct NodeAttributeLLList, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeAttributeLLList = { + "NodeAttributeLLList", + "NodeAttributeLLList", + &asn_OP_SEQUENCE_OF, + asn_DEF_NodeAttributeLLList_tags_1, + sizeof(asn_DEF_NodeAttributeLLList_tags_1) + /sizeof(asn_DEF_NodeAttributeLLList_tags_1[0]), /* 1 */ + asn_DEF_NodeAttributeLLList_tags_1, /* Same as above */ + sizeof(asn_DEF_NodeAttributeLLList_tags_1) + /sizeof(asn_DEF_NodeAttributeLLList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NodeAttributeLLList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NodeAttributeLLList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_NodeAttributeLLList_1, + 1, /* Single element */ + &asn_SPC_NodeAttributeLLList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeAttributeSetLL.c b/src/tmx/Asn_J2735/src/r2020/NodeAttributeSetLL.c new file mode 100644 index 000000000..7f4aeb2d1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeAttributeSetLL.c @@ -0,0 +1,279 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeAttributeSetLL.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_8[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_NodeAttributeSetLL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_8[] = { + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_8 = { + sizeof(struct NodeAttributeSetLL__regional), + offsetof(struct NodeAttributeSetLL__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_8 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_8, + sizeof(asn_DEF_regional_tags_8) + /sizeof(asn_DEF_regional_tags_8[0]) - 1, /* 1 */ + asn_DEF_regional_tags_8, /* Same as above */ + sizeof(asn_DEF_regional_tags_8) + /sizeof(asn_DEF_regional_tags_8[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_8, + 1, /* Single element */ + &asn_SPC_regional_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NodeAttributeSetLL_1[] = { + { ATF_POINTER, 7, offsetof(struct NodeAttributeSetLL, localNode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NodeAttributeLLList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "localNode" + }, + { ATF_POINTER, 6, offsetof(struct NodeAttributeSetLL, disabled), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SegmentAttributeLLList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "disabled" + }, + { ATF_POINTER, 5, offsetof(struct NodeAttributeSetLL, enabled), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SegmentAttributeLLList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "enabled" + }, + { ATF_POINTER, 4, offsetof(struct NodeAttributeSetLL, data), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneDataAttributeList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "data" + }, + { ATF_POINTER, 3, offsetof(struct NodeAttributeSetLL, dWidth), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dWidth" + }, + { ATF_POINTER, 2, offsetof(struct NodeAttributeSetLL, dElevation), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dElevation" + }, + { ATF_POINTER, 1, offsetof(struct NodeAttributeSetLL, regional), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + 0, + &asn_DEF_regional_8, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_NodeAttributeSetLL_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_NodeAttributeSetLL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NodeAttributeSetLL_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* localNode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* disabled */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* enabled */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* data */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dWidth */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* dElevation */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NodeAttributeSetLL_specs_1 = { + sizeof(struct NodeAttributeSetLL), + offsetof(struct NodeAttributeSetLL, _asn_ctx), + asn_MAP_NodeAttributeSetLL_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_NodeAttributeSetLL_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeAttributeSetLL = { + "NodeAttributeSetLL", + "NodeAttributeSetLL", + &asn_OP_SEQUENCE, + asn_DEF_NodeAttributeSetLL_tags_1, + sizeof(asn_DEF_NodeAttributeSetLL_tags_1) + /sizeof(asn_DEF_NodeAttributeSetLL_tags_1[0]), /* 1 */ + asn_DEF_NodeAttributeSetLL_tags_1, /* Same as above */ + sizeof(asn_DEF_NodeAttributeSetLL_tags_1) + /sizeof(asn_DEF_NodeAttributeSetLL_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_NodeAttributeSetLL_1, + 7, /* Elements count */ + &asn_SPC_NodeAttributeSetLL_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeAttributeSetXY.c b/src/tmx/Asn_J2735/src/r2020/NodeAttributeSetXY.c new file mode 100644 index 000000000..ea7d05e70 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeAttributeSetXY.c @@ -0,0 +1,279 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeAttributeSetXY.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_8[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_NodeAttributeSetXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_8[] = { + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_8 = { + sizeof(struct NodeAttributeSetXY__regional), + offsetof(struct NodeAttributeSetXY__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_8 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_8, + sizeof(asn_DEF_regional_tags_8) + /sizeof(asn_DEF_regional_tags_8[0]) - 1, /* 1 */ + asn_DEF_regional_tags_8, /* Same as above */ + sizeof(asn_DEF_regional_tags_8) + /sizeof(asn_DEF_regional_tags_8[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_8, + 1, /* Single element */ + &asn_SPC_regional_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NodeAttributeSetXY_1[] = { + { ATF_POINTER, 7, offsetof(struct NodeAttributeSetXY, localNode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NodeAttributeXYList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "localNode" + }, + { ATF_POINTER, 6, offsetof(struct NodeAttributeSetXY, disabled), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SegmentAttributeXYList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "disabled" + }, + { ATF_POINTER, 5, offsetof(struct NodeAttributeSetXY, enabled), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SegmentAttributeXYList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "enabled" + }, + { ATF_POINTER, 4, offsetof(struct NodeAttributeSetXY, data), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneDataAttributeList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "data" + }, + { ATF_POINTER, 3, offsetof(struct NodeAttributeSetXY, dWidth), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dWidth" + }, + { ATF_POINTER, 2, offsetof(struct NodeAttributeSetXY, dElevation), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dElevation" + }, + { ATF_POINTER, 1, offsetof(struct NodeAttributeSetXY, regional), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + 0, + &asn_DEF_regional_8, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_NodeAttributeSetXY_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_NodeAttributeSetXY_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NodeAttributeSetXY_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* localNode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* disabled */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* enabled */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* data */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dWidth */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* dElevation */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NodeAttributeSetXY_specs_1 = { + sizeof(struct NodeAttributeSetXY), + offsetof(struct NodeAttributeSetXY, _asn_ctx), + asn_MAP_NodeAttributeSetXY_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_NodeAttributeSetXY_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeAttributeSetXY = { + "NodeAttributeSetXY", + "NodeAttributeSetXY", + &asn_OP_SEQUENCE, + asn_DEF_NodeAttributeSetXY_tags_1, + sizeof(asn_DEF_NodeAttributeSetXY_tags_1) + /sizeof(asn_DEF_NodeAttributeSetXY_tags_1[0]), /* 1 */ + asn_DEF_NodeAttributeSetXY_tags_1, /* Same as above */ + sizeof(asn_DEF_NodeAttributeSetXY_tags_1) + /sizeof(asn_DEF_NodeAttributeSetXY_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_NodeAttributeSetXY_1, + 7, /* Elements count */ + &asn_SPC_NodeAttributeSetXY_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeAttributeXY.c b/src/tmx/Asn_J2735/src/r2020/NodeAttributeXY.c new file mode 100644 index 000000000..965ac3646 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeAttributeXY.c @@ -0,0 +1,90 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeAttributeXY.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NodeAttributeXY_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NodeAttributeXY_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 11 } /* (0..11,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_NodeAttributeXY_value2enum_1[] = { + { 0, 8, "reserved" }, + { 1, 8, "stopLine" }, + { 2, 16, "roundedCapStyleA" }, + { 3, 16, "roundedCapStyleB" }, + { 4, 10, "mergePoint" }, + { 5, 12, "divergePoint" }, + { 6, 18, "downstreamStopLine" }, + { 7, 19, "downstreamStartNode" }, + { 8, 15, "closedToTraffic" }, + { 9, 10, "safeIsland" }, + { 10, 20, "curbPresentAtStepOff" }, + { 11, 14, "hydrantPresent" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NodeAttributeXY_enum2value_1[] = { + 8, /* closedToTraffic(8) */ + 10, /* curbPresentAtStepOff(10) */ + 5, /* divergePoint(5) */ + 7, /* downstreamStartNode(7) */ + 6, /* downstreamStopLine(6) */ + 11, /* hydrantPresent(11) */ + 4, /* mergePoint(4) */ + 0, /* reserved(0) */ + 2, /* roundedCapStyleA(2) */ + 3, /* roundedCapStyleB(3) */ + 9, /* safeIsland(9) */ + 1 /* stopLine(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NodeAttributeXY_specs_1 = { + asn_MAP_NodeAttributeXY_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NodeAttributeXY_enum2value_1, /* N => "tag"; sorted by N */ + 12, /* Number of elements in the maps */ + 13, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NodeAttributeXY_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NodeAttributeXY = { + "NodeAttributeXY", + "NodeAttributeXY", + &asn_OP_NativeEnumerated, + asn_DEF_NodeAttributeXY_tags_1, + sizeof(asn_DEF_NodeAttributeXY_tags_1) + /sizeof(asn_DEF_NodeAttributeXY_tags_1[0]), /* 1 */ + asn_DEF_NodeAttributeXY_tags_1, /* Same as above */ + sizeof(asn_DEF_NodeAttributeXY_tags_1) + /sizeof(asn_DEF_NodeAttributeXY_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NodeAttributeXY_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NodeAttributeXY_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NodeAttributeXY_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeAttributeXYList.c b/src/tmx/Asn_J2735/src/r2020/NodeAttributeXYList.c new file mode 100644 index 000000000..6647e3913 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeAttributeXYList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeAttributeXYList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NodeAttributeXYList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NodeAttributeXYList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NodeAttributeXYList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NodeAttributeXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_NodeAttributeXYList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_NodeAttributeXYList_specs_1 = { + sizeof(struct NodeAttributeXYList), + offsetof(struct NodeAttributeXYList, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeAttributeXYList = { + "NodeAttributeXYList", + "NodeAttributeXYList", + &asn_OP_SEQUENCE_OF, + asn_DEF_NodeAttributeXYList_tags_1, + sizeof(asn_DEF_NodeAttributeXYList_tags_1) + /sizeof(asn_DEF_NodeAttributeXYList_tags_1[0]), /* 1 */ + asn_DEF_NodeAttributeXYList_tags_1, /* Same as above */ + sizeof(asn_DEF_NodeAttributeXYList_tags_1) + /sizeof(asn_DEF_NodeAttributeXYList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NodeAttributeXYList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NodeAttributeXYList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_NodeAttributeXYList_1, + 1, /* Single element */ + &asn_SPC_NodeAttributeXYList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeLL.c b/src/tmx/Asn_J2735/src/r2020/NodeLL.c new file mode 100644 index 000000000..49113bf99 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeLL.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeLL.h" + +asn_TYPE_member_t asn_MBR_NodeLL_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NodeLL, delta), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NodeOffsetPointLL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "delta" + }, + { ATF_POINTER, 1, offsetof(struct NodeLL, attributes), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NodeAttributeSetLL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "attributes" + }, +}; +static const int asn_MAP_NodeLL_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_NodeLL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NodeLL_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* delta */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* attributes */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NodeLL_specs_1 = { + sizeof(struct NodeLL), + offsetof(struct NodeLL, _asn_ctx), + asn_MAP_NodeLL_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_NodeLL_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeLL = { + "NodeLL", + "NodeLL", + &asn_OP_SEQUENCE, + asn_DEF_NodeLL_tags_1, + sizeof(asn_DEF_NodeLL_tags_1) + /sizeof(asn_DEF_NodeLL_tags_1[0]), /* 1 */ + asn_DEF_NodeLL_tags_1, /* Same as above */ + sizeof(asn_DEF_NodeLL_tags_1) + /sizeof(asn_DEF_NodeLL_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_NodeLL_1, + 2, /* Elements count */ + &asn_SPC_NodeLL_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeListLL.c b/src/tmx/Asn_J2735/src/r2020/NodeListLL.c new file mode 100644 index 000000000..44cf287aa --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeListLL.c @@ -0,0 +1,75 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeListLL.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NodeListLL_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NodeListLL_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NodeListLL_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NodeListLL, choice.nodes), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NodeSetLL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nodes" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_NodeListLL_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* nodes */ +}; +asn_CHOICE_specifics_t asn_SPC_NodeListLL_specs_1 = { + sizeof(struct NodeListLL), + offsetof(struct NodeListLL, _asn_ctx), + offsetof(struct NodeListLL, present), + sizeof(((struct NodeListLL *)0)->present), + asn_MAP_NodeListLL_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeListLL = { + "NodeListLL", + "NodeListLL", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NodeListLL_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NodeListLL_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_NodeListLL_1, + 1, /* Elements count */ + &asn_SPC_NodeListLL_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeListXY.c b/src/tmx/Asn_J2735/src/r2020/NodeListXY.c new file mode 100644 index 000000000..9ff37f63f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeListXY.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeListXY.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NodeListXY_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NodeListXY_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NodeListXY_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NodeListXY, choice.nodes), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NodeSetXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nodes" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeListXY, choice.computed), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ComputedLane, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "computed" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_NodeListXY_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nodes */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* computed */ +}; +asn_CHOICE_specifics_t asn_SPC_NodeListXY_specs_1 = { + sizeof(struct NodeListXY), + offsetof(struct NodeListXY, _asn_ctx), + offsetof(struct NodeListXY, present), + sizeof(((struct NodeListXY *)0)->present), + asn_MAP_NodeListXY_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeListXY = { + "NodeListXY", + "NodeListXY", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NodeListXY_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NodeListXY_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_NodeListXY_1, + 2, /* Elements count */ + &asn_SPC_NodeListXY_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeOffsetPointLL.c b/src/tmx/Asn_J2735/src/r2020/NodeOffsetPointLL.c new file mode 100644 index 000000000..c901bc5af --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeOffsetPointLL.c @@ -0,0 +1,201 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeOffsetPointLL.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NodeOffsetPointLL_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NodeOffsetPointLL_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NodeOffsetPointLL_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointLL, choice.node_LL1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_LL_24B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-LL1" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointLL, choice.node_LL2), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_LL_28B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-LL2" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointLL, choice.node_LL3), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_LL_32B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-LL3" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointLL, choice.node_LL4), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_LL_36B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-LL4" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointLL, choice.node_LL5), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_LL_44B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-LL5" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointLL, choice.node_LL6), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_LL_48B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-LL6" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointLL, choice.node_LatLon), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_LLmD_64b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-LatLon" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointLL, choice.regional), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_NodeOffsetPointLL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_NodeOffsetPointLL_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* node-LL1 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* node-LL2 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* node-LL3 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* node-LL4 */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* node-LL5 */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* node-LL6 */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* node-LatLon */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* regional */ +}; +asn_CHOICE_specifics_t asn_SPC_NodeOffsetPointLL_specs_1 = { + sizeof(struct NodeOffsetPointLL), + offsetof(struct NodeOffsetPointLL, _asn_ctx), + offsetof(struct NodeOffsetPointLL, present), + sizeof(((struct NodeOffsetPointLL *)0)->present), + asn_MAP_NodeOffsetPointLL_tag2el_1, + 8, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeOffsetPointLL = { + "NodeOffsetPointLL", + "NodeOffsetPointLL", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NodeOffsetPointLL_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NodeOffsetPointLL_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_NodeOffsetPointLL_1, + 8, /* Elements count */ + &asn_SPC_NodeOffsetPointLL_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeOffsetPointXY-addGrpB.c b/src/tmx/Asn_J2735/src/r2020/NodeOffsetPointXY-addGrpB.c new file mode 100644 index 000000000..27e0d473f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeOffsetPointXY-addGrpB.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeOffsetPointXY-addGrpB.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NodeOffsetPointXY_addGrpB_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NodeOffsetPointXY_addGrpB_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NodeOffsetPointXY_addGrpB_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointXY_addGrpB, choice.posA), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_LLdms_48b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "posA" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointXY_addGrpB, choice.posB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_LLdms_80b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "posB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_NodeOffsetPointXY_addGrpB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* posA */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* posB */ +}; +asn_CHOICE_specifics_t asn_SPC_NodeOffsetPointXY_addGrpB_specs_1 = { + sizeof(struct NodeOffsetPointXY_addGrpB), + offsetof(struct NodeOffsetPointXY_addGrpB, _asn_ctx), + offsetof(struct NodeOffsetPointXY_addGrpB, present), + sizeof(((struct NodeOffsetPointXY_addGrpB *)0)->present), + asn_MAP_NodeOffsetPointXY_addGrpB_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeOffsetPointXY_addGrpB = { + "NodeOffsetPointXY-addGrpB", + "NodeOffsetPointXY-addGrpB", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NodeOffsetPointXY_addGrpB_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NodeOffsetPointXY_addGrpB_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_NodeOffsetPointXY_addGrpB_1, + 2, /* Elements count */ + &asn_SPC_NodeOffsetPointXY_addGrpB_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeOffsetPointXY.c b/src/tmx/Asn_J2735/src/r2020/NodeOffsetPointXY.c new file mode 100644 index 000000000..cbab3615a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeOffsetPointXY.c @@ -0,0 +1,201 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeOffsetPointXY.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NodeOffsetPointXY_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NodeOffsetPointXY_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NodeOffsetPointXY_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointXY, choice.node_XY1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_XY_20b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-XY1" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointXY, choice.node_XY2), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_XY_22b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-XY2" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointXY, choice.node_XY3), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_XY_24b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-XY3" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointXY, choice.node_XY4), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_XY_26b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-XY4" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointXY, choice.node_XY5), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_XY_28b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-XY5" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointXY, choice.node_XY6), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_XY_32b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-XY6" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointXY, choice.node_LatLon), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_LLmD_64b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node-LatLon" + }, + { ATF_NOFLAGS, 0, offsetof(struct NodeOffsetPointXY, choice.regional), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_NodeOffsetPointXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_NodeOffsetPointXY_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* node-XY1 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* node-XY2 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* node-XY3 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* node-XY4 */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* node-XY5 */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* node-XY6 */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* node-LatLon */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* regional */ +}; +asn_CHOICE_specifics_t asn_SPC_NodeOffsetPointXY_specs_1 = { + sizeof(struct NodeOffsetPointXY), + offsetof(struct NodeOffsetPointXY, _asn_ctx), + offsetof(struct NodeOffsetPointXY, present), + sizeof(((struct NodeOffsetPointXY *)0)->present), + asn_MAP_NodeOffsetPointXY_tag2el_1, + 8, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeOffsetPointXY = { + "NodeOffsetPointXY", + "NodeOffsetPointXY", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NodeOffsetPointXY_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NodeOffsetPointXY_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_NodeOffsetPointXY_1, + 8, /* Elements count */ + &asn_SPC_NodeOffsetPointXY_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeSetLL.c b/src/tmx/Asn_J2735/src/r2020/NodeSetLL.c new file mode 100644 index 000000000..91c2d2b58 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeSetLL.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeSetLL.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NodeSetLL_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(2..63)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NodeSetLL_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 2, 63 } /* (SIZE(2..63)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NodeSetLL_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NodeLL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_NodeSetLL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_NodeSetLL_specs_1 = { + sizeof(struct NodeSetLL), + offsetof(struct NodeSetLL, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeSetLL = { + "NodeSetLL", + "NodeSetLL", + &asn_OP_SEQUENCE_OF, + asn_DEF_NodeSetLL_tags_1, + sizeof(asn_DEF_NodeSetLL_tags_1) + /sizeof(asn_DEF_NodeSetLL_tags_1[0]), /* 1 */ + asn_DEF_NodeSetLL_tags_1, /* Same as above */ + sizeof(asn_DEF_NodeSetLL_tags_1) + /sizeof(asn_DEF_NodeSetLL_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NodeSetLL_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NodeSetLL_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_NodeSetLL_1, + 1, /* Single element */ + &asn_SPC_NodeSetLL_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeSetXY.c b/src/tmx/Asn_J2735/src/r2020/NodeSetXY.c new file mode 100644 index 000000000..38555962c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeSetXY.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeSetXY.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NodeSetXY_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(2..63)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NodeSetXY_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 2, 63 } /* (SIZE(2..63)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NodeSetXY_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NodeXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_NodeSetXY_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_NodeSetXY_specs_1 = { + sizeof(struct NodeSetXY), + offsetof(struct NodeSetXY, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeSetXY = { + "NodeSetXY", + "NodeSetXY", + &asn_OP_SEQUENCE_OF, + asn_DEF_NodeSetXY_tags_1, + sizeof(asn_DEF_NodeSetXY_tags_1) + /sizeof(asn_DEF_NodeSetXY_tags_1[0]), /* 1 */ + asn_DEF_NodeSetXY_tags_1, /* Same as above */ + sizeof(asn_DEF_NodeSetXY_tags_1) + /sizeof(asn_DEF_NodeSetXY_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NodeSetXY_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NodeSetXY_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_NodeSetXY_1, + 1, /* Single element */ + &asn_SPC_NodeSetXY_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NodeXY.c b/src/tmx/Asn_J2735/src/r2020/NodeXY.c new file mode 100644 index 000000000..b7a73b002 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NodeXY.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NodeXY.h" + +asn_TYPE_member_t asn_MBR_NodeXY_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NodeXY, delta), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NodeOffsetPointXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "delta" + }, + { ATF_POINTER, 1, offsetof(struct NodeXY, attributes), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NodeAttributeSetXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "attributes" + }, +}; +static const int asn_MAP_NodeXY_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_NodeXY_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NodeXY_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* delta */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* attributes */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NodeXY_specs_1 = { + sizeof(struct NodeXY), + offsetof(struct NodeXY, _asn_ctx), + asn_MAP_NodeXY_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_NodeXY_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NodeXY = { + "NodeXY", + "NodeXY", + &asn_OP_SEQUENCE, + asn_DEF_NodeXY_tags_1, + sizeof(asn_DEF_NodeXY_tags_1) + /sizeof(asn_DEF_NodeXY_tags_1[0]), /* 1 */ + asn_DEF_NodeXY_tags_1, /* Same as above */ + sizeof(asn_DEF_NodeXY_tags_1) + /sizeof(asn_DEF_NodeXY_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_NodeXY_1, + 2, /* Elements count */ + &asn_SPC_NodeXY_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/NumberOfParticipantsInCluster.c b/src/tmx/Asn_J2735/src/r2020/NumberOfParticipantsInCluster.c new file mode 100644 index 000000000..93c067fce --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/NumberOfParticipantsInCluster.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "NumberOfParticipantsInCluster.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NumberOfParticipantsInCluster_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NumberOfParticipantsInCluster_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_NumberOfParticipantsInCluster_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 5, "small" }, + { 2, 6, "medium" }, + { 3, 5, "large" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NumberOfParticipantsInCluster_enum2value_1[] = { + 3, /* large(3) */ + 2, /* medium(2) */ + 1, /* small(1) */ + 0 /* unavailable(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NumberOfParticipantsInCluster_specs_1 = { + asn_MAP_NumberOfParticipantsInCluster_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NumberOfParticipantsInCluster_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NumberOfParticipantsInCluster_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NumberOfParticipantsInCluster = { + "NumberOfParticipantsInCluster", + "NumberOfParticipantsInCluster", + &asn_OP_NativeEnumerated, + asn_DEF_NumberOfParticipantsInCluster_tags_1, + sizeof(asn_DEF_NumberOfParticipantsInCluster_tags_1) + /sizeof(asn_DEF_NumberOfParticipantsInCluster_tags_1[0]), /* 1 */ + asn_DEF_NumberOfParticipantsInCluster_tags_1, /* Same as above */ + sizeof(asn_DEF_NumberOfParticipantsInCluster_tags_1) + /sizeof(asn_DEF_NumberOfParticipantsInCluster_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NumberOfParticipantsInCluster_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NumberOfParticipantsInCluster_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NumberOfParticipantsInCluster_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER.c b/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER.c new file mode 100644 index 000000000..5cf2d6066 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER.c @@ -0,0 +1,532 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include /* for CHAR_BIT */ +#include +#include + +/* + * OBJECT IDENTIFIER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OBJECT_IDENTIFIER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)) +}; +asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER = { + ASN__PRIMITIVE_TYPE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OBJECT_IDENTIFIER_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, /* Implemented in terms of a string comparison */ +#if !defined(ASN_DISABLE_BER_SUPPORT) + ber_decode_primitive, + der_encode_primitive, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OBJECT_IDENTIFIER_decode_xer, + OBJECT_IDENTIFIER_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OBJECT_IDENTIFIER_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OBJECT_IDENTIFIER_decode_oer, + OBJECT_IDENTIFIER_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OBJECT_IDENTIFIER_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER = { + "OBJECT IDENTIFIER", + "OBJECT_IDENTIFIER", + &asn_OP_OBJECT_IDENTIFIER, + asn_DEF_OBJECT_IDENTIFIER_tags, + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + asn_DEF_OBJECT_IDENTIFIER_tags, /* Same as above */ + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OBJECT_IDENTIFIER_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +int +OBJECT_IDENTIFIER_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + if(st && st->buf) { + if(st->size < 1) { + ASN__CTFAIL(app_key, td, sptr, + "%s: at least one numerical value " + "expected (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static ssize_t +OBJECT_IDENTIFIER_get_first_arcs(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *arc0, asn_oid_arc_t *arc1) { + asn_oid_arc_t value; + + ssize_t rd = OBJECT_IDENTIFIER_get_single_arc(arcbuf, arcbuf_len, &value); + if(rd <= 0) return rd; + + if(value >= 80) { + *arc0 = 2; + *arc1 = value - 80; + } else if(value >= 40) { + *arc0 = 1; + *arc1 = value - 40; + } else { + *arc0 = 0; + *arc1 = value; + } + + return rd; +} + +ssize_t +OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *ret_value) { + const uint8_t *b = arcbuf; + const uint8_t *arcend = arcbuf + arcbuf_len; /* End of arc */ + + if(arcbuf == arcend) { + return 0; + } else { + asn_oid_arc_t accum; + asn_oid_arc_t upper_limit = (ASN_OID_ARC_MAX >> 7); + /* When the value reaches "upper_limit", it can take */ + /* at most one more digit. If it exceeds "upper_limit" */ + /* but there are more digits - it's an Overflow condition */ + /* Gather all bits into the accumulator */ + for(accum = 0; b < arcend; b++) { + accum = (accum << 7) | (*b & ~0x80); + if((*b & 0x80) == 0) { // no more digits + if(accum <= ASN_OID_ARC_MAX) { + *ret_value = accum; + return 1 + (b - arcbuf); + } else { + errno = ERANGE; /* Overflow */ + return -1; + } + } else { // to make sure we aren't wrapping around + if(accum > upper_limit) { + errno = ERANGE; /* Overflow */ + return -1; + } + } + } + errno = EINVAL; + return -1; + } + +} + +ssize_t +OBJECT_IDENTIFIER__dump_body(const OBJECT_IDENTIFIER_t *st, + asn_app_consume_bytes_f *cb, void *app_key) { + char scratch[32]; + asn_oid_arc_t arc0 = 0; + asn_oid_arc_t arc1 = 0; + size_t produced = 0; + size_t off = 0; + ssize_t rd; + int ret; + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + + ret = snprintf(scratch, sizeof(scratch), "%"PRIu32".%"PRIu32, arc0, arc1); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) + return -1; + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + assert(off <= st->size); + ret = snprintf(scratch, sizeof(scratch), ".%" PRIu32, arc); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) return -1; + } + } + + if(off != st->size) { + ASN_DEBUG("Could not scan to the end of Object Identifier"); + return -1; + } + + return produced; +} + +ssize_t +OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *st, asn_oid_arc_t *arcs, + size_t arc_slots) { + asn_oid_arc_t arc0 = 0; + asn_oid_arc_t arc1 = 0; + size_t num_arcs = 0; + size_t off; + ssize_t rd; + + if(!st || !st->buf) { + errno = EINVAL; + return -1; + } + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + num_arcs = 2; + switch(arc_slots) { + default: + case 2: + arcs[1] = arc1; + /* Fall through */ + case 1: + arcs[0] = arc0; + /* Fall through */ + case 0: + break; + } + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + if(num_arcs < arc_slots) { + arcs[num_arcs] = arc; + } + num_arcs++; + } + } + + if(off != st->size) { + return -1; + } + + return num_arcs; +} + + +/* + * Save the single value as an object identifier arc. + */ +ssize_t +OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t value) { + /* + * The following conditions must hold: + * assert(arcbuf); + */ + uint8_t scratch[((sizeof(value) * CHAR_BIT + 6) / 7)]; + uint8_t *scratch_end = &scratch[sizeof(scratch)-1]; + uint8_t *b; + size_t result_len; + uint8_t mask; + + for(b = scratch_end, mask = 0; ; mask = 0x80, b--) { + *b = mask | (value & 0x7f); + value >>= 7; + if(!value) { + break; + } + } + + result_len = (scratch_end - b) + 1; + + if(result_len > arcbuf_len) { + return -1; + } + + memcpy(arcbuf, b, result_len); + + return result_len; +} + +int +OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *st, const asn_oid_arc_t *arcs, + size_t arc_slots) { + uint8_t *buf; + uint8_t *bp; + ssize_t wrote; + asn_oid_arc_t arc0; + asn_oid_arc_t arc1; + size_t size; + size_t i; + + if(!st || !arcs || arc_slots < 2) { + errno = EINVAL; + return -1; + } + + arc0 = arcs[0]; + arc1 = arcs[1]; + + if(arc0 <= 1) { + if(arc1 >= 40) { + /* 8.19.4: At most 39 subsequent values (including 0) */ + errno = ERANGE; + return -1; + } + } else if(arc0 == 2) { + if(arc1 > ASN_OID_ARC_MAX - 80) { + errno = ERANGE; + return -1; + } + } else if(arc0 > 2) { + /* 8.19.4: Only three values are allocated from the root node */ + errno = ERANGE; + return -1; + } + + /* + * After above tests it is known that the value of arc0 is completely + * trustworthy (0..2). However, the arc1's value is still meaningless. + */ + + /* + * Roughly estimate the maximum size necessary to encode these arcs. + * This estimation implicitly takes in account the following facts, + * that cancel each other: + * * the first two arcs are encoded in a single value. + * * the first value may require more space (+1 byte) + * * the value of the first arc which is in range (0..2) + */ + size = ((sizeof(asn_oid_arc_t) * CHAR_BIT + 6) / 7) * arc_slots; + bp = buf = (uint8_t *)MALLOC(size + 1); + if(!buf) { + /* ENOMEM */ + return -1; + } + + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arc0 * 40 + arc1); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + + for(i = 2; i < arc_slots; i++) { + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arcs[i]); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + } + + /* + * Replace buffer. + */ + st->size = bp - buf; + bp = st->buf; + st->buf = buf; + st->buf[st->size] = '\0'; + if(bp) FREEMEM(bp); + + return 0; +} + +ssize_t +OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end) { + size_t num_arcs = 0; + const char *oid_end; + enum { + ST_LEADSPACE, + ST_TAILSPACE, + ST_AFTERVALUE, /* Next character ought to be '.' or a space */ + ST_WAITDIGITS /* Next character is expected to be a digit */ + } state = ST_LEADSPACE; + + if(!oid_text || oid_txt_length < -1 || (arcs_count && !arcs)) { + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + errno = EINVAL; + return -1; + } + + if(oid_txt_length == -1) + oid_txt_length = strlen(oid_text); + +#define _OID_CAPTURE_ARC(oid_text, oid_end) \ + do { \ + const char *endp = oid_end; \ + unsigned long value; \ + switch(asn_strtoul_lim(oid_text, &endp, &value)) { \ + case ASN_STRTOX_EXTRA_DATA: \ + case ASN_STRTOX_OK: \ + if(value <= ASN_OID_ARC_MAX) { \ + if(num_arcs < arcs_count) arcs[num_arcs] = value; \ + num_arcs++; \ + oid_text = endp - 1; \ + break; \ + } \ + /* Fall through */ \ + case ASN_STRTOX_ERROR_RANGE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = ERANGE; \ + return -1; \ + case ASN_STRTOX_ERROR_INVAL: \ + case ASN_STRTOX_EXPECT_MORE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = EINVAL; \ + return -1; \ + } \ + } while(0) + + for(oid_end = oid_text + oid_txt_length; oid_text broken OID */ + return -1; + case ST_LEADSPACE: + case ST_WAITDIGITS: + _OID_CAPTURE_ARC(oid_text, oid_end); + state = ST_AFTERVALUE; + continue; + } + break; + default: + /* Unexpected symbols */ + state = ST_WAITDIGITS; + break; + } /* switch() */ + break; + } /* for() */ + + + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + + /* Finalize last arc */ + switch(state) { + case ST_LEADSPACE: + return 0; /* No OID found in input data */ + case ST_WAITDIGITS: + errno = EINVAL; /* Broken OID */ + return -1; + case ST_AFTERVALUE: + case ST_TAILSPACE: + return num_arcs; + } + + errno = EINVAL; /* Broken OID */ + return -1; +} diff --git a/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER_print.c b/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER_print.c new file mode 100644 index 000000000..af159df03 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER_print.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +OBJECT_IDENTIFIER_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb("{ ", 2, app_key) < 0) + return -1; + + if(OBJECT_IDENTIFIER__dump_body(st, cb, app_key) < 0) { + return -1; + } + + return (cb(" }", 2, app_key) < 0) ? -1 : 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER_rfill.c b/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER_rfill.c new file mode 100644 index 000000000..8039ac66a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER_rfill.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Generate values from the list of interesting values, or just a random + * value up to the upper limit. + */ +static asn_oid_arc_t +OBJECT_IDENTIFIER__biased_random_arc(asn_oid_arc_t upper_bound) { + const asn_oid_arc_t values[] = {0, 1, 127, 128, 129, 254, 255, 256}; + size_t idx; + + switch(asn_random_between(0, 2)) { + case 0: + idx = asn_random_between(0, sizeof(values) / sizeof(values[0]) - 1); + if(values[idx] < upper_bound) { + return values[idx]; + } + /* Fall through */ + case 1: + return asn_random_between(0, upper_bound); + case 2: + default: + return upper_bound; + } +} + +asn_random_fill_result_t +OBJECT_IDENTIFIER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + OBJECT_IDENTIFIER_t *st; + asn_oid_arc_t arcs[5]; + size_t arcs_len = asn_random_between(2, 5); + size_t i; + + (void)constraints; + + if(max_length < arcs_len) return result_skipped; + + if(*sptr) { + st = *sptr; + } else { + st = CALLOC(1, sizeof(*st)); + } + + arcs[0] = asn_random_between(0, 2); + arcs[1] = OBJECT_IDENTIFIER__biased_random_arc( + arcs[0] <= 1 ? 39 : (ASN_OID_ARC_MAX - 80)); + for(i = 2; i < arcs_len; i++) { + arcs[i] = OBJECT_IDENTIFIER__biased_random_arc(ASN_OID_ARC_MAX); + } + + if(OBJECT_IDENTIFIER_set_arcs(st, arcs, arcs_len)) { + if(st != *sptr) { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } + + *sptr = st; + + result_ok.length = st->size; + return result_ok; +} diff --git a/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER_xer.c b/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER_xer.c new file mode 100644 index 000000000..9691e473c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OBJECT_IDENTIFIER_xer.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static enum xer_pbd_rval +OBJECT_IDENTIFIER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + OBJECT_IDENTIFIER_t *st = (OBJECT_IDENTIFIER_t *)sptr; + const char *chunk_end = (const char *)chunk_buf + chunk_size; + const char *endptr; + asn_oid_arc_t s_arcs[10]; + asn_oid_arc_t *arcs = s_arcs; + ssize_t num_arcs; + ssize_t ret; + + (void)td; + + num_arcs = OBJECT_IDENTIFIER_parse_arcs( + (const char *)chunk_buf, chunk_size, arcs, + sizeof(s_arcs) / sizeof(s_arcs[0]), &endptr); + if(num_arcs < 0) { + /* Expecting more than zero arcs */ + return XPBD_BROKEN_ENCODING; + } else if(num_arcs == 0) { + return XPBD_NOT_BODY_IGNORE; + } + (void)chunk_end; + assert(endptr == chunk_end); + + if((size_t)num_arcs > sizeof(s_arcs)/sizeof(s_arcs[0])) { + arcs = (asn_oid_arc_t *)MALLOC(num_arcs * sizeof(asn_oid_arc_t)); + if(!arcs) return XPBD_SYSTEM_FAILURE; + ret = OBJECT_IDENTIFIER_parse_arcs((const char *)chunk_buf, chunk_size, + arcs, num_arcs, &endptr); + if(ret != num_arcs) + return XPBD_SYSTEM_FAILURE; /* assert?.. */ + } + + /* + * Convert arcs into BER representation. + */ + ret = OBJECT_IDENTIFIER_set_arcs(st, arcs, num_arcs); + if(arcs != s_arcs) FREEMEM(arcs); + + return ret ? XPBD_SYSTEM_FAILURE : XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +OBJECT_IDENTIFIER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(OBJECT_IDENTIFIER_t), opt_mname, + buf_ptr, size, OBJECT_IDENTIFIER__xer_body_decode); +} + +asn_enc_rval_t +OBJECT_IDENTIFIER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) { + ASN__ENCODE_FAILED; + } + + er.encoded = OBJECT_IDENTIFIER__dump_body(st, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/OCTET_STRING.c b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING.c new file mode 100644 index 000000000..d0bdeade7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING.c @@ -0,0 +1,383 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * OCTET STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { + sizeof(OCTET_STRING_t), + offsetof(OCTET_STRING_t, _asn_ctx), + ASN_OSUBV_STR +}; +asn_TYPE_operation_t asn_OP_OCTET_STRING = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, /* Unaligned PER decoder */ + OCTET_STRING_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OCTET_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { + "OCTET STRING", /* Canonical name */ + "OCTET_STRING", /* XML tag name */ + &asn_OP_OCTET_STRING, + asn_DEF_OCTET_STRING_tags, + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + asn_DEF_OCTET_STRING_tags, /* Same as above */ + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs +}; + +void +OCTET_STRING_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + + if(!td || !st) + return; + + ASN_DEBUG("Freeing %s as OCTET STRING", td->name); + + if(st->buf) { + FREEMEM(st->buf); + st->buf = 0; + } + +#if !defined(ASN_DISABLE_BER_SUPPORT) + const asn_OCTET_STRING_specifics_t *specs; + asn_struct_ctx_t *ctx; + + specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Remove decode-time stack. + */ + struct _stack *stck; + stck = (struct _stack *)ctx->ptr; + if(stck) { + while(stck->tail) { + struct _stack_el *sel = stck->tail; + stck->tail = sel->prev; + FREEMEM(sel); + } + FREEMEM(stck); + } +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, + td->specifics + ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics)) + ->struct_size + : sizeof(OCTET_STRING_t)); + break; + } +} + +/* + * Conversion routines. + */ +int +OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) { + void *buf; + + if(st == 0 || (str == 0 && len)) { + errno = EINVAL; + return -1; + } + + /* + * Clear the OCTET STRING. + */ + if(str == NULL) { + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + return 0; + } + + /* Determine the original string size, if not explicitly given */ + if(len < 0) + len = strlen(str); + + /* Allocate and fill the memory */ + buf = MALLOC(len + 1); + if(buf == NULL) + return -1; + + memcpy(buf, str, len); + ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */ + FREEMEM(st->buf); + st->buf = (uint8_t *)buf; + st->size = len; + + return 0; +} + +OCTET_STRING_t * +OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, const char *str, + int len) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + OCTET_STRING_t *st; + + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + if(st && str && OCTET_STRING_fromBuf(st, str, len)) { + FREEMEM(st); + st = NULL; + } + + return st; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +OCTET_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + const OCTET_STRING_t *a = aptr; + const OCTET_STRING_t *b = bptr; + + (void)specs; + assert(!specs || specs->subvariant != ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + return 0; + } + } else { + return ret < 0 ? -1 : 1; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +int +OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", + (int)units, lb, ub, unit_bits); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Decode without translation */ + lb = 0; + } else if(pc && pc->code2value) { + if(unit_bits > 16) + return 1; /* FATAL: can't have constrained + * UniversalString with more than + * 16 million code points */ + for(; buf < end; buf += bpc) { + int value; + int code = per_get_few_bits(po, unit_bits); + if(code < 0) return -1; /* WMORE */ + value = pc->code2value(code); + if(value < 0) { + ASN_DEBUG("Code %d (0x%02x) is" + " not in map (%ld..%ld)", + code, code, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = value; break; + case 2: buf[0] = value >> 8; buf[1] = value; break; + case 4: buf[0] = value >> 24; buf[1] = value >> 16; + buf[2] = value >> 8; buf[3] = value; break; + } + } + return 0; + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_get_many_bits(po, buf, 0, unit_bits * units); + } + + for(; buf < end; buf += bpc) { + int32_t code = per_get_few_bits(po, unit_bits); + int32_t ch = code + lb; + if(code < 0) return -1; /* WMORE */ + if(ch > ub) { + ASN_DEBUG("Code %d is out of range (%ld..%ld)", + ch, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = ch; break; + case 2: buf[0] = ch >> 8; buf[1] = ch; break; + case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; + buf[2] = ch >> 8; buf[3] = ch; break; + } + } + + return 0; +} + +int +OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + const uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", + (int)units, lb, ub, unit_bits, bpc); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Encode as is */ + lb = 0; + } else if(pc && pc->value2code) { + for(; buf < end; buf += bpc) { + int code; + uint32_t value; + switch(bpc) { + case 1: value = *(const uint8_t *)buf; break; + case 2: value = (buf[0] << 8) | buf[1]; break; + case 4: value = (buf[0] << 24) | (buf[1] << 16) + | (buf[2] << 8) | buf[3]; break; + default: return -1; + } + code = pc->value2code(value); + if(code < 0) { + ASN_DEBUG("Character %d (0x%02x) is" + " not in map (%ld..%ld)", + *buf, *buf, lb, ub); + return -1; + } + if(per_put_few_bits(po, code, unit_bits)) + return -1; + } + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_put_many_bits(po, buf, unit_bits * units); + } + + for(ub -= lb; buf < end; buf += bpc) { + int ch; + uint32_t value; + switch(bpc) { + case 1: + value = *(const uint8_t *)buf; + break; + case 2: + value = (buf[0] << 8) | buf[1]; + break; + case 4: + value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + break; + default: + return -1; + } + ch = value - lb; + if(ch < 0 || ch > ub) { + ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, + value, lb, ub + lb); + return -1; + } + if(per_put_few_bits(po, ch, unit_bits)) return -1; + } + + return 0; +} +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ diff --git a/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_aper.c b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_aper.c new file mode 100644 index 000000000..b7b70b698 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_aper.c @@ -0,0 +1,414 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +#undef RETURN +#define RETURN(_code) do {\ + asn_dec_rval_t tmprval;\ + tmprval.code = _code;\ + tmprval.consumed = consumed_myself;\ + return tmprval;\ + } while(0) + +static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { + { APC_CONSTRAINED, 8, 8, 0, 255 }, + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, + 0, 0 +}; + +asn_dec_rval_t +OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints + ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: +/* + case ASN_OSUBV_ANY: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); +*/ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; +*/ + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %lld .. %lld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + (long long int)csiz->lower_bound, (long long int)csiz->upper_bound, + csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + cval = &asn_DEF_OCTET_STRING_constraints.value; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + /* X.691 #16 NOTE 1 for fixed length (<= 16 bits) strings */ + if (st->size > 2 || csiz->range_bits != 0) { + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + if(bpc) { + ASN_DEBUG("Decoding OCTET STRING size %lld", + (long long int)csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, + bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, + pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Decoding BIT STRING size %lld", + (long long int)csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + if(bpc == 0) { + int ubs = (csiz->upper_bound & 0x7); + st->bits_unused = ubs ? 8 - ubs : 0; + } + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + repeat = 0; + /* Get the PER length */ + if (csiz->upper_bound - csiz->lower_bound == 0) + /* Indefinite length case */ + raw_len = aper_get_length(pd, -1, -1, csiz->effective_bits, &repeat); + else + raw_len = aper_get_length(pd, csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + raw_len += csiz->lower_bound; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + + /* X.691 #16 NOTE 1 for fixed length (<=16 bits) strings */ + if ((raw_len > 2) || (csiz->upper_bound > 2) || (csiz->range_bits != 0)) + { + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + + if(bpc) { + len_bytes = raw_len * bpc; + len_bits = len_bytes * unit_bits; + } else { + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) + st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + } + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + if(bpc) { + ret = OCTET_STRING_per_get_characters(pd, + &st->buf[st->size], + raw_len, bpc, + unit_bits, + cval->lower_bound, + cval->upper_bound, + pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ret = per_get_many_bits(pd, &st->buf[st->size], + 0, len_bits); + } + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints + ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + unsigned int sizeinunits; + const uint8_t *buf; + int ret; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: +/* + case ASN_OSUBV_ANY: + ASN__ENCODE_FAILED; +*/ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + sizeinunits = st->size * 8 - (st->bits_unused & 0x07); + ASN_DEBUG("BIT STRING of %d bytes", + sizeinunits); + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* + if(cval->flags & APC_CONSTRAINED) + unit_bits = 8; +*/ + bpc = OS__BPC_CHAR; + sizeinunits = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + sizeinunits = st->size / 2; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + sizeinunits = st->size / 4; + break; + } + + ASN_DEBUG("Encoding %s into %d units of %d bits" + " (%lld..%lld, effective %d)%s", + td->name, sizeinunits, unit_bits, + (long long int)csiz->lower_bound, + (long long int)csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out wheter size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((int)sizeinunits < csiz->lower_bound + || (int)sizeinunits > csiz->upper_bound) { + if(ct_extensible) { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else + ASN__ENCODE_FAILED; + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits >= 0) { + ASN_DEBUG("Encoding %zu bytes (%lld), length in %d bits", + st->size, (long long int)(sizeinunits - csiz->lower_bound), + csiz->effective_bits); + if (csiz->effective_bits > 0) { + ret = aper_put_length(po, csiz->lower_bound, csiz->upper_bound, + sizeinunits - csiz->lower_bound, NULL); + if(ret < 0) ASN__ENCODE_FAILED; + } + if (csiz->effective_bits > 0 || (st->size > 2) + || (csiz->upper_bound > (2 * 8 / unit_bits)) + || (csiz->range_bits != 0)) + { /* X.691 #16 NOTE 1 for fixed length (<=16 bits) strings*/ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + } + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, st->buf, + sizeinunits, + bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, + pc); + } else { + ret = per_put_many_bits(po, st->buf, + sizeinunits * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %zu bytes", st->size); + + if(sizeinunits == 0) { + if(aper_put_length(po, -1, -1, 0, NULL) < 0) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + buf = st->buf; + while(sizeinunits) { + int need_eom = 0; + ssize_t maySave = aper_put_length(po, -1, -1, sizeinunits, &need_eom); + + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %ld of %ld", + (long)maySave, (long)sizeinunits); + + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, buf, maySave, + bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, + pc); + } else { + ret = per_put_many_bits(po, buf, maySave * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + + if(bpc) + buf += maySave * bpc; + else + buf += maySave >> 3; + sizeinunits -= maySave; + assert(!(maySave & 0x07) || !sizeinunits); + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_ber.c b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_ber.c new file mode 100644 index 000000000..8a7610aee --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_ber.c @@ -0,0 +1,525 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +#undef _CH_PHASE +#define _CH_PHASE(ctx, inc) do {\ + if(ctx->phase == 0)\ + ctx->context = 0;\ + ctx->phase += inc;\ + } while(0) + +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) +#undef PREV_PHASE +#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) + +#undef ADVANCE +#define ADVANCE(num_bytes) do {\ + size_t num = (num_bytes);\ + buf_ptr = ((const char *)buf_ptr) + num;\ + size -= num;\ + consumed_myself += num;\ + } while(0) + +#undef RETURN +#define RETURN(_code) do {\ + asn_dec_rval_t tmprval;\ + tmprval.code = _code;\ + tmprval.consumed = consumed_myself;\ + return tmprval;\ + } while(0) + +#undef APPEND +#define APPEND(bufptr, bufsize) do {\ + size_t _bs = (bufsize); /* Append size */\ + size_t _ns = ctx->context; /* Allocated now */\ + size_t _es = st->size + _bs; /* Expected size */\ + /* int is really a typeof(st->size): */\ + if((int)_es < 0) RETURN(RC_FAIL);\ + if(_ns <= _es) {\ + void *ptr;\ + /* Be nice and round to the memory allocator */\ + do { _ns = _ns ? _ns << 1 : 16; }\ + while(_ns <= _es);\ + /* int is really a typeof(st->size): */\ + if((int)_ns < 0) RETURN(RC_FAIL);\ + ptr = REALLOC(st->buf, _ns);\ + if(ptr) {\ + st->buf = (uint8_t *)ptr;\ + ctx->context = _ns;\ + } else {\ + RETURN(RC_FAIL);\ + }\ + ASN_DEBUG("Reallocating into %ld", (long)_ns);\ + }\ + memcpy(st->buf + st->size, bufptr, _bs);\ + /* Convenient nul-termination */\ + st->buf[_es] = '\0';\ + st->size = _es;\ + } while(0) + +/* + * The main reason why ASN.1 is still alive is that too much time and effort + * is necessary for learning it more or less adequately, thus creating a gut + * necessity to demonstrate that acquired skill everywhere afterwards. + * No, I am not going to explain what the following stuff is. + */ +static struct _stack_el * +OS__add_stack_el(struct _stack *st) { + struct _stack_el *nel; + + /* + * Reuse the old stack frame or allocate a new one. + */ + if(st->cur_ptr && st->cur_ptr->next) { + nel = st->cur_ptr->next; + nel->bits_chopped = 0; + nel->got = 0; + /* Retain the nel->cont_level, it's correct. */ + } else { + nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); + if(nel == NULL) + return NULL; + + if(st->tail) { + /* Increase a subcontainment depth */ + nel->cont_level = st->tail->cont_level + 1; + st->tail->next = nel; + } + nel->prev = st->tail; + st->tail = nel; + } + + st->cur_ptr = nel; + + return nel; +} + +static struct _stack * +_new_stack(void) { + return (struct _stack *)CALLOC(1, sizeof(struct _stack)); +} + +/* + * Decode OCTET STRING type. + */ +asn_dec_rval_t +OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + asn_dec_rval_t rval; + asn_struct_ctx_t *ctx; + ssize_t consumed_myself = 0; + struct _stack *stck; /* Expectations stack structure */ + struct _stack_el *sel = 0; /* Stack element */ + int tlv_constr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + + ASN_DEBUG("Decoding %s as %s (frame %ld)", + td->name, + (type_variant == ASN_OSUBV_STR) ? + "OCTET STRING" : "OS-SpecialCase", + (long)size); + + /* + * Create the string if does not exist. + */ + if(st == NULL) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) RETURN(RC_FAIL); + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + switch(ctx->phase) { + case 0: + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, ctx, + buf_ptr, size, tag_mode, -1, + &ctx->left, &tlv_constr); + if(rval.code != RC_OK) + return rval; + + if(tlv_constr) { + /* + * Complex operation, requires stack of expectations. + */ + ctx->ptr = _new_stack(); + if(!ctx->ptr) { + RETURN(RC_FAIL); + } + } else { + /* + * Jump into stackless primitive decoding. + */ + _CH_PHASE(ctx, 3); + if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) + APPEND(buf_ptr, rval.consumed); + ADVANCE(rval.consumed); + goto phase3; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + phase1: + /* + * Fill the stack with expectations. + */ + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + do { + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_tag_t expected_tag; + ssize_t tl, ll, tlvl; + /* This one works even if (sel->left == -1) */ + size_t Left = ((!sel||(size_t)sel->left >= size) + ?size:(size_t)sel->left); + + + ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)(sel?sel->got:0) + ); + if(sel && sel->left <= 0 && sel->want_nulls == 0) { + if(sel->prev) { + struct _stack_el *prev = sel->prev; + if(prev->left != -1) { + if(prev->left < sel->got) + RETURN(RC_FAIL); + prev->left -= sel->got; + } + prev->got += sel->got; + sel = stck->cur_ptr = prev; + if(!sel) break; + tlv_constr = 1; + continue; + } else { + sel = stck->cur_ptr = 0; + break; /* Nothing to wait */ + } + } + + tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); + ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", + (long)size, (long)Left, sel?"":"!", + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)tl); + switch(tl) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); + + ll = ber_fetch_length(tlv_constr, + (const char *)buf_ptr + tl,Left - tl,&tlv_len); + ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", + ber_tlv_tag_string(tlv_tag), tlv_constr, + (long)Left, (long)tl, (long)tlv_len, (long)ll); + switch(ll) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + if(sel && sel->want_nulls + && ((const uint8_t *)buf_ptr)[0] == 0 + && ((const uint8_t *)buf_ptr)[1] == 0) + { + ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); + + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND("\0\0", 2); + + ADVANCE(2); + sel->got += 2; + if(sel->left != -1) { + sel->left -= 2; /* assert(sel->left >= 2) */ + } + + sel->want_nulls--; + if(sel->want_nulls == 0) { + /* Move to the next expectation */ + sel->left = 0; + tlv_constr = 1; + } + + continue; + } + + /* + * Set up expected tags, + * depending on ASN.1 type being decoded. + */ + switch(type_variant) { + case ASN_OSUBV_BIT: + /* X.690: 8.6.4.1, NOTE 2 */ + /* Fall through */ + case ASN_OSUBV_STR: + default: + if(sel) { + unsigned level = sel->cont_level; + if(level < td->all_tags_count) { + expected_tag = td->all_tags[level]; + break; + } else if(td->all_tags_count) { + expected_tag = td->all_tags + [td->all_tags_count - 1]; + break; + } + /* else, Fall through */ + } + /* Fall through */ + case ASN_OSUBV_ANY: + expected_tag = tlv_tag; + break; + } + + if(tlv_tag != expected_tag) { + char buf[2][32]; + ber_tlv_tag_snprint(tlv_tag, + buf[0], sizeof(buf[0])); + ber_tlv_tag_snprint(td->tags[td->tags_count-1], + buf[1], sizeof(buf[1])); + ASN_DEBUG("Tag does not match expectation: %s != %s", + buf[0], buf[1]); + RETURN(RC_FAIL); + } + + tlvl = tl + ll; /* Combined length of T and L encoding */ + if((tlv_len + tlvl) < 0) { + /* tlv_len value is too big */ + ASN_DEBUG("TLV encoding + length (%ld) is too big", + (long)tlv_len); + RETURN(RC_FAIL); + } + + /* + * Append a new expectation. + */ + sel = OS__add_stack_el(stck); + if(!sel) RETURN(RC_FAIL); + + sel->tag = tlv_tag; + + sel->want_nulls = (tlv_len==-1); + if(sel->prev && sel->prev->left != -1) { + /* Check that the parent frame is big enough */ + if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) + RETURN(RC_FAIL); + if(tlv_len == -1) + sel->left = sel->prev->left - tlvl; + else + sel->left = tlv_len; + } else { + sel->left = tlv_len; + } + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND(buf_ptr, tlvl); + sel->got += tlvl; + ADVANCE(tlvl); + + ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", + (long)sel->got, (long)sel->left, + sel->want_nulls, sel->cont_level); + + } while(tlv_constr); + if(sel == NULL) { + /* Finished operation, "phase out" */ + ASN_DEBUG("Phase out"); + _CH_PHASE(ctx, +3); + break; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 2: + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", + (long)sel->left, (long)size, (long)sel->got, + sel->want_nulls); + { + ber_tlv_len_t len; + + assert(sel->left >= 0); + + len = ((ber_tlv_len_t)size < sel->left) + ? (ber_tlv_len_t)size : sel->left; + if(len > 0) { + if(type_variant == ASN_OSUBV_BIT + && sel->bits_chopped == 0) { + /* Put the unused-bits-octet away */ + st->bits_unused = *(const uint8_t *)buf_ptr; + APPEND(((const char *)buf_ptr+1), (len - 1)); + sel->bits_chopped = 1; + } else { + APPEND(buf_ptr, len); + } + ADVANCE(len); + sel->left -= len; + sel->got += len; + } + + if(sel->left) { + ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", + (long)sel->left, (long)size, sel->want_nulls); + RETURN(RC_WMORE); + } + + PREV_PHASE(ctx); + goto phase1; + } + break; + case 3: + phase3: + /* + * Primitive form, no stack required. + */ + assert(ctx->left >= 0); + + if(size < (size_t)ctx->left) { + if(!size) RETURN(RC_WMORE); + if(type_variant == ASN_OSUBV_BIT && !ctx->context) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, size); + assert(ctx->context > 0); + ctx->left -= size; + ADVANCE(size); + RETURN(RC_WMORE); + } else { + if(type_variant == ASN_OSUBV_BIT + && !ctx->context && ctx->left) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, ctx->left); + ADVANCE(ctx->left); + ctx->left = 0; + + NEXT_PHASE(ctx); + } + break; + } + + if(sel) { + ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", + (void *)sel->prev, sel->want_nulls, + (long)sel->left, (long)sel->got, (long)size); + if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { + RETURN(RC_WMORE); + } + } + + /* + * BIT STRING-specific processing. + */ + if(type_variant == ASN_OSUBV_BIT) { + if(st->size) { + if(st->bits_unused < 0 || st->bits_unused > 7) { + RETURN(RC_FAIL); + } + /* Finalize BIT STRING: zero out unused bits. */ + st->buf[st->size-1] &= 0xff << st->bits_unused; + } else { + if(st->bits_unused) { + RETURN(RC_FAIL); + } + } + } + + ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", + (long)consumed_myself, td->name, + (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", + (long)st->size); + + + RETURN(RC_OK); +} + +/* + * Encode OCTET STRING type using DER. + */ +asn_enc_rval_t +OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 0, 0, 0 }; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + int fix_last_byte = 0; + + ASN_DEBUG("%s %s as OCTET STRING", + cb?"Estimating":"Encoding", td->name); + + /* + * Write tags. + */ + if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { + er.encoded = der_write_tags(td, + (type_variant == ASN_OSUBV_BIT) + st->size, + tag_mode, type_variant == ASN_OSUBV_ANY, tag, + cb, app_key); + if(er.encoded == -1) { + er.failed_type = td; + er.structure_ptr = sptr; + return er; + } + } else { + /* Disallow: [] IMPLICIT ANY */ + assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); + er.encoded = 0; + } + + if(!cb) { + er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; + ASN__ENCODED_OK(er); + } + + /* + * Prepare to deal with the last octet of BIT STRING. + */ + if(type_variant == ASN_OSUBV_BIT) { + uint8_t b = st->bits_unused & 0x07; + if(b && st->size) fix_last_byte = 1; + ASN__CALLBACK(&b, 1); + } + + /* Invoke callback for the main part of the buffer */ + ASN__CALLBACK(st->buf, st->size - fix_last_byte); + + /* The last octet should be stripped off the unused bits */ + if(fix_last_byte) { + uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); + ASN__CALLBACK(&b, 1); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_oer.c b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_oer.c new file mode 100644 index 000000000..6d5bda3f9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_oer.c @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +OCTET_STRING_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + asn_dec_rval_t rval = {RC_OK, 0}; + size_t expected_length = 0; + + size_t unit_bytes; + switch(specs->subvariant) { + default: + case ASN_OSUBV_BIT: + ASN_DEBUG("Invalid use of OCTET STRING to decode BIT STRING"); + ASN__DECODE_FAILED; + case ASN_OSUBV_ANY: + /* Fall through */ + case ASN_OSUBV_STR: + unit_bytes = 1; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + break; + } + + (void)opt_codec_ctx; + + if(!st) { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) ASN__DECODE_FAILED; + } + + if(ct_size >= 0) { + expected_length = unit_bytes * ct_size; + } else { + /* + * X.696 (08/2015) #27.2 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + ssize_t len_len = oer_fetch_length(ptr, size, &expected_length); + if(len_len > 0) { + rval.consumed = len_len; + ptr = (const char *)ptr + len_len; + size -= len_len; + } else if(len_len == 0) { + ASN__DECODE_STARVED; + } else if(len_len < 0) { + ASN__DECODE_FAILED; + } + + if(expected_length % unit_bytes != 0) { + ASN_DEBUG( + "Data size %" ASN_PRI_SIZE " bytes is not consistent with multiplier %" ASN_PRI_SIZE "", + expected_length, unit_bytes); + ASN__DECODE_FAILED; + } + } + + if(size < expected_length) { + ASN__DECODE_STARVED; + } else { + uint8_t *buf = MALLOC(expected_length + 1); + if(buf == NULL) { + ASN__DECODE_FAILED; + } else { + memcpy(buf, ptr, expected_length); + buf[expected_length] = '\0'; + } + FREEMEM(st->buf); + st->buf = buf; + st->size = expected_length; + + rval.consumed += expected_length; + return rval; + } +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +OCTET_STRING_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + asn_enc_rval_t er = {0, 0, 0}; + + if(!st) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s %" ASN_PRI_SIZE " as OCTET STRING", td ? td->name : "", st->size); + + if(ct_size >= 0) { + /* + * Check that available data matches the constraint + */ + size_t unit_bytes; + switch(specs->subvariant) { + default: + case ASN_OSUBV_BIT: + ASN_DEBUG("Invalid use of OCTET STRING to encode BIT STRING"); + ASN__ENCODE_FAILED; + case ASN_OSUBV_ANY: + /* Fall through */ + case ASN_OSUBV_STR: + unit_bytes = 1; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + break; + } + + if(st->size != unit_bytes * (size_t)ct_size) { + ASN_DEBUG( + "Trying to encode %s (%" ASN_PRI_SIZE " bytes) which doesn't fit SIZE " + "constraint (%" ASN_PRI_SIZE ")", + td->name, st->size, ct_size); + ASN__ENCODE_FAILED; + } + } else { + /* + * X.696 (08/2015) #27.2 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + ssize_t ret = oer_serialize_length(st->size, cb, app_key); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + er.encoded += ret; + } + + er.encoded += st->size; + if(cb(st->buf, st->size, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_print.c b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_print.c new file mode 100644 index 000000000..37d69b24c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_print.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +OCTET_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + (void)td; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = (buf == NULL)? NULL : buf + st->size; + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + _i_INDENT(1); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Remove the tail space */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + return 0; +} + +int +OCTET_STRING_print_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st && (st->buf || !st->size)) { + return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_rfill.c b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_rfill.c new file mode 100644 index 000000000..257338992 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_rfill.c @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Biased function for randomizing character values around their limits. + */ +static uint32_t +OCTET_STRING__random_char(unsigned long lb, unsigned long ub) { + assert(lb <= ub); + switch(asn_random_between(0, 16)) { + case 0: + if(lb < ub) return lb + 1; + /* Fall through */ + case 1: + return lb; + case 2: + if(lb < ub) return ub - 1; + /* Fall through */ + case 3: + return ub; + default: + return asn_random_between(lb, ub); + } +} + +asn_random_fill_result_t +OCTET_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + unsigned int unit_bytes = 1; + unsigned long clb = 0; /* Lower bound on char */ + unsigned long cub = 255; /* Higher bound on char value */ + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_len; + OCTET_STRING_t *st; + + if(max_length == 0 && !*sptr) return result_skipped; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + /* Handled by BIT_STRING itself. */ + return result_failed; + case ASN_OSUBV_STR: + unit_bytes = 1; + clb = 0; + cub = 255; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + clb = 0; + cub = 65535; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + clb = 0; + cub = 0x10FFFF; + break; + } + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_SEMI_CONSTRAINED) { + clb = pc->lower_bound; + } else if(pc->flags & APC_CONSTRAINED) { + clb = pc->lower_bound; + cub = pc->upper_bound; + } + } +#else + if(!constraints) constraints = &td->encoding_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + + rnd_len = + OCTET_STRING_random_length_constrained(td, constraints, max_length); + + buf = CALLOC(unit_bytes, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[unit_bytes * rnd_len]; + + switch(unit_bytes) { + case 1: + for(b = buf; b < bend; b += unit_bytes) { + *(uint8_t *)b = OCTET_STRING__random_char(clb, cub); + } + *(uint8_t *)b = 0; + break; + case 2: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 8; + b[1] = code; + } + *(uint16_t *)b = 0; + break; + case 4: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 24; + b[1] = code >> 16; + b[2] = code >> 8; + b[3] = code; + } + *(uint32_t *)b = 0; + break; + } + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = unit_bytes * rnd_len; + + result_ok.length = st->size; + return result_ok; +} + +size_t +OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *td, + const asn_encoding_constraints_t *constraints, size_t max_length) { + const unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + size_t rnd_len; + + /* Figure out how far we should go */ + rnd_len = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length <= (size_t)pc->lower_bound) { + return pc->lower_bound; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_len = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_len = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_len from the table */ + if(rnd_len <= max_length) { + break; + } + /* Fall through */ + default: + rnd_len = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_len = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_len = asn_random_between(0, max_length); + } + } else { +#else + if(!constraints) constraints = &td->encoding_constraints; + { +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + if(rnd_len > max_length) { + rnd_len = asn_random_between(0, max_length); + } + } + + return rnd_len; +} diff --git a/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_uper.c b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_uper.c new file mode 100644 index 000000000..dba8bd444 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_uper.c @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +#undef RETURN +#define RETURN(_code) do {\ + asn_dec_rval_t tmprval;\ + tmprval.code = _code;\ + tmprval.consumed = consumed_myself;\ + return tmprval;\ + } while(0) + +static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { + { APC_CONSTRAINED, 8, 8, 0, 255 }, + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, + 0, 0 +}; + +asn_dec_rval_t +OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); + break; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if(bpc) { + ASN_DEBUG("Encoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, + bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, + pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Encoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len * bpc; + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, + bpc, unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints + ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + size_t size_in_units; + const uint8_t *buf; + int ret; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN__ENCODE_FAILED; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + size_in_units = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + size_in_units = st->size >> 1; + if(st->size & 1) { + ASN_DEBUG("%s string size is not modulo 2", td->name); + ASN__ENCODE_FAILED; + } + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + size_in_units = st->size >> 2; + if(st->size & 3) { + ASN_DEBUG("%s string size is not modulo 4", td->name); + ASN__ENCODE_FAILED; + } + break; + } + + ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_units, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_units < csiz->lower_bound + || (ssize_t)size_in_units > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, + size_in_units - csiz->lower_bound, csiz->effective_bits); + ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, + unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, + need_eom ? ",+EOM" : ""); + + ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save * bpc; + size_in_units -= may_save; + assert(!(may_save & 0x07) || !size_in_units); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_units); + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_xer.c b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_xer.c new file mode 100644 index 000000000..07a306317 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OCTET_STRING_xer.c @@ -0,0 +1,627 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +asn_enc_rval_t +OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + if(flags & XER_F_CANONICAL) { + char *scend = scratch + (sizeof(scratch) - 2); + for(; buf < end; buf++) { + if(p >= scend) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + } + + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + } else { + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + p = scratch; + ASN__TEXT_INDENT(1, ilevel); + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + if(p - scratch) { + p--; /* Remove the tail space */ + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + if(st->size > 16) + ASN__TEXT_INDENT(1, ilevel-1); + } + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +static const struct OCTET_STRING__xer_escape_table_s { + const char *string; + int size; +} OCTET_STRING__xer_escape_table[] = { +#define OSXET(s) { s, sizeof(s) - 1 } + OSXET("\074\156\165\154\057\076"), /* */ + OSXET("\074\163\157\150\057\076"), /* */ + OSXET("\074\163\164\170\057\076"), /* */ + OSXET("\074\145\164\170\057\076"), /* */ + OSXET("\074\145\157\164\057\076"), /* */ + OSXET("\074\145\156\161\057\076"), /* */ + OSXET("\074\141\143\153\057\076"), /* */ + OSXET("\074\142\145\154\057\076"), /* */ + OSXET("\074\142\163\057\076"), /* */ + OSXET("\011"), /* \t */ + OSXET("\012"), /* \n */ + OSXET("\074\166\164\057\076"), /* */ + OSXET("\074\146\146\057\076"), /* */ + OSXET("\015"), /* \r */ + OSXET("\074\163\157\057\076"), /* */ + OSXET("\074\163\151\057\076"), /* */ + OSXET("\074\144\154\145\057\076"), /* */ + OSXET("\074\144\143\061\057\076"), /* */ + OSXET("\074\144\143\062\057\076"), /* */ + OSXET("\074\144\143\063\057\076"), /* */ + OSXET("\074\144\143\064\057\076"), /* */ + OSXET("\074\156\141\153\057\076"), /* */ + OSXET("\074\163\171\156\057\076"), /* */ + OSXET("\074\145\164\142\057\076"), /* */ + OSXET("\074\143\141\156\057\076"), /* */ + OSXET("\074\145\155\057\076"), /* */ + OSXET("\074\163\165\142\057\076"), /* */ + OSXET("\074\145\163\143\057\076"), /* */ + OSXET("\074\151\163\064\057\076"), /* */ + OSXET("\074\151\163\063\057\076"), /* */ + OSXET("\074\151\163\062\057\076"), /* */ + OSXET("\074\151\163\061\057\076"), /* */ + { 0, 0 }, /* " " */ + { 0, 0 }, /* ! */ + { 0, 0 }, /* \" */ + { 0, 0 }, /* # */ + { 0, 0 }, /* $ */ + { 0, 0 }, /* % */ + OSXET("\046\141\155\160\073"), /* & */ + { 0, 0 }, /* ' */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ + {0,0},{0,0},{0,0},{0,0}, /* 89:; */ + OSXET("\046\154\164\073"), /* < */ + { 0, 0 }, /* = */ + OSXET("\046\147\164\073"), /* > */ +}; + +static int +OS__check_escaped_control_char(const void *buf, int size) { + size_t i; + /* + * Inefficient algorithm which translates the escape sequences + * defined above into characters. Returns -1 if not found. + * TODO: replace by a faster algorithm (bsearch(), hash or + * nested table lookups). + */ + for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { + const struct OCTET_STRING__xer_escape_table_s *el; + el = &OCTET_STRING__xer_escape_table[i]; + if(el->size == size && memcmp(buf, el->string, size) == 0) + return i; + } + return -1; +} + +static int +OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { + /* + * This might be one of the escape sequences + * for control characters. Check it out. + * #11.15.5 + */ + int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); + if(control_char >= 0) { + OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; + void *p = REALLOC(st->buf, st->size + 2); + if(p) { + st->buf = (uint8_t *)p; + st->buf[st->size++] = control_char; + st->buf[st->size] = '\0'; /* nul-termination */ + return 0; + } + } + + return -1; /* No, it's not */ +} + +asn_enc_rval_t +OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + uint8_t *buf, *end; + uint8_t *ss; /* Sequence start */ + ssize_t encoded_len = 0; + + (void)ilevel; /* Unused argument */ + (void)flags; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + buf = st->buf; + end = buf + st->size; + for(ss = buf; buf < end; buf++) { + unsigned int ch = *buf; + int s_len; /* Special encoding sequence length */ + + /* + * Escape certain characters: X.680/11.15 + */ + if(ch < sizeof(OCTET_STRING__xer_escape_table) + / sizeof(OCTET_STRING__xer_escape_table[0]) + && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { + if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) + || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, app_key) < 0) + ASN__ENCODE_FAILED; + encoded_len += (buf - ss) + s_len; + ss = buf + 1; + } + } + + encoded_len += (buf - ss); + if((buf - ss) && cb(ss, buf - ss, app_key) < 0) + ASN__ENCODE_FAILED; + + er.encoded = encoded_len; + ASN__ENCODED_OK(er); +} + +/* + * Convert from hexadecimal format (cstring): "AB CD EF" + */ +static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *chunk_stop = (const char *)chunk_buf; + const char *p = chunk_stop; + const char *pend = p + chunk_size; + unsigned int clv = 0; + int half = 0; /* Half bit */ + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 1) / 2; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * If something like " a b c " appears here, the " a b":3 will be + * converted, and the rest skipped. That is, unless buf_size is greater + * than chunk_size, then it'll be equivalent to "ABC0". + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + continue; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + clv = (clv << 4) + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + clv = (clv << 4) + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + clv = (clv << 4) + (ch - 0x61 + 10); + break; + default: + *buf = 0; /* JIC */ + return -1; + } + if(half++) { + half = 0; + *buf++ = clv; + chunk_stop = p + 1; + } + } + + /* + * Check partial decoding. + */ + if(half) { + if(have_more) { + /* + * Partial specification is fine, + * because no more more PXER_TEXT data is available. + */ + *buf++ = clv << 4; + chunk_stop = p; + } + } else { + chunk_stop = p; + } + + st->size = buf - st->buf; /* Adjust the buffer size */ + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return (chunk_stop - (const char *)chunk_buf); /* Converted size */ +} + +/* + * Convert from binary format: "00101011101" + */ +static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + BIT_STRING_t *st = (BIT_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = (p == NULL)? NULL : p + chunk_size; + int bits_unused = st->bits_unused & 0x7; + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 7) / 8; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + (void)have_more; + + if(bits_unused == 0) + bits_unused = 8; + else if(st->size) + buf--; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + break; + case 0x30: + case 0x31: + if(bits_unused-- <= 0) { + *++buf = 0; /* Clean the cell */ + bits_unused = 7; + } + *buf |= (ch&1) << bits_unused; + break; + default: + st->bits_unused = bits_unused; + return -1; + } + } + + if(bits_unused == 8) { + st->size = buf - st->buf; + st->bits_unused = 0; + } else { + st->size = buf - st->buf + 1; + st->bits_unused = bits_unused; + } + + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Something like strtod(), but with stricter rules. + */ +static int +OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { + const int32_t last_unicode_codepoint = 0x10ffff; + int32_t val = 0; + const char *p; + + for(p = buf; p < end; p++) { + int ch = *p; + + switch(ch) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + val = val * base + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + val = val * base + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + val = val * base + (ch - 0x61 + 10); + break; + case 0x3b: /* ';' */ + *ret_value = val; + return (p - buf) + 1; + default: + return -1; /* Character set error */ + } + + /* Value exceeds the Unicode range. */ + if(val > last_unicode_codepoint) { + return -1; + } + } + + *ret_value = -1; + return (p - buf); +} + +/* + * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" + */ +static ssize_t +OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, + size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + uint8_t *buf; + + /* Reallocate buffer */ + size_t new_size = st->size + chunk_size; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + int len; /* Length of the rest of the chunk */ + + if(ch != 0x26 /* '&' */) { + *buf++ = ch; + continue; /* That was easy... */ + } + + /* + * Process entity reference. + */ + len = chunk_size - (p - (const char *)chunk_buf); + if(len == 1 /* "&" */) goto want_more; + if(p[1] == 0x23 /* '#' */) { + const char *pval; /* Pointer to start of digits */ + int32_t val = 0; /* Entity reference value */ + int base; + + if(len == 2 /* "&#" */) goto want_more; + if(p[2] == 0x78 /* 'x' */) + pval = p + 3, base = 16; + else + pval = p + 2, base = 10; + len = OS__strtoent(base, pval, p + len, &val); + if(len == -1) { + /* Invalid charset. Just copy verbatim. */ + *buf++ = ch; + continue; + } + if(!len || pval[len-1] != 0x3b) goto want_more; + assert(val > 0); + p += (pval - p) + len - 1; /* Advance past entref */ + + if(val < 0x80) { + *buf++ = (char)val; + } else if(val < 0x800) { + *buf++ = 0xc0 | ((val >> 6)); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x10000) { + *buf++ = 0xe0 | ((val >> 12)); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x200000) { + *buf++ = 0xf0 | ((val >> 18)); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x4000000) { + *buf++ = 0xf8 | ((val >> 24)); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else { + *buf++ = 0xfc | ((val >> 30) & 0x1); + *buf++ = 0x80 | ((val >> 24) & 0x3f); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } + } else { + /* + * Ugly, limited parsing of & > < + */ + char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); + if(!sc) goto want_more; + if((sc - p) == 4 + && p[1] == 0x61 /* 'a' */ + && p[2] == 0x6d /* 'm' */ + && p[3] == 0x70 /* 'p' */) { + *buf++ = 0x26; + p = sc; + continue; + } + if((sc - p) == 3) { + if(p[1] == 0x6c) { + *buf = 0x3c; /* '<' */ + } else if(p[1] == 0x67) { + *buf = 0x3e; /* '>' */ + } else { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + if(p[2] != 0x74) { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + buf++; + p = sc; + continue; + } + /* Unsupported entity reference */ + *buf++ = ch; + } + + continue; + want_more: + if(have_more) { + /* + * We know that no more data (of the same type) + * is coming. Copy the rest verbatim. + */ + *buf++ = ch; + continue; + } + chunk_size = (p - (const char *)chunk_buf); + /* Processing stalled: need more data */ + break; + } + + st->size = buf - st->buf; + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Decode OCTET STRING from the XML element's body. + */ +static asn_dec_rval_t +OCTET_STRING__decode_xer( + const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size, int have_more)) { + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t *ctx; /* Per-structure parser context */ + asn_dec_rval_t rval; /* Return value from the decoder */ + int st_allocated; + + /* + * Create the string if does not exist. + */ + if(!st) { + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + *sptr = (void *)st; + if(!st) goto sta_failed; + st_allocated = 1; + } else { + st_allocated = 0; + } + if(!st->buf) { + /* This is separate from above section */ + st->buf = (uint8_t *)CALLOC(1, 1); + if(!st->buf) { + if(st_allocated) { + *sptr = 0; + goto stb_failed; + } else { + goto sta_failed; + } + } + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); + + return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, + buf_ptr, size, + opt_unexpected_tag_decoder, + body_receiver); + +stb_failed: + FREEMEM(st); +sta_failed: + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; +} + +/* + * Decode OCTET STRING from the hexadecimal data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, + OCTET_STRING__convert_hexadecimal); +} + +/* + * Decode OCTET STRING from the binary (0/1) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, + OCTET_STRING__convert_binary); +} + +/* + * Decode OCTET STRING from the string (ASCII/UTF-8) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, + OCTET_STRING__handle_control_chars, + OCTET_STRING__convert_entrefs); +} diff --git a/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE.c b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE.c new file mode 100644 index 000000000..dcf0cb91e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2023 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_TYPE_operation_t asn_OP_OPEN_TYPE = { + OPEN_TYPE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OPEN_TYPE_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OPEN_TYPE_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OPEN_TYPE_decode_ber, + OPEN_TYPE_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OPEN_TYPE_decode_xer, + OPEN_TYPE_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OPEN_TYPE_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OPEN_TYPE_decode_oer, + OPEN_TYPE_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OPEN_TYPE_decode_uper, + OPEN_TYPE_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OPEN_TYPE_decode_aper, + OPEN_TYPE_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + 0, /* Random fill is not supported for open type */ +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; diff --git a/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_aper.c b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_aper.c new file mode 100644 index 000000000..c62e5bdc7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_aper.c @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + + +int OPEN_TYPE_aper_is_unknown_type(const asn_TYPE_descriptor_t *td, void *sptr, const asn_TYPE_member_t *elm) { + asn_type_selector_result_t selected; + + if(!elm->type_selector) { + return 1; + } + else { + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + return 1; + } + } + return 0; +} + +asn_dec_rval_t +OPEN_TYPE_aper_unknown_type_discard_bytes (asn_per_data_t *pd) { +#define ASN_DUMMY_BYTES 256 + unsigned char dummy[ASN_DUMMY_BYTES], *dummy_ptr = NULL; + ssize_t bytes; + int repeat; + asn_dec_rval_t rv; + + rv.consumed = 0; + rv.code = RC_FAIL; + + do { + bytes = aper_get_length(pd, -1, -1, -1, &repeat); + if (bytes > 10 * ASN_DUMMY_BYTES) + { + return rv; + } + else if (bytes > ASN_DUMMY_BYTES) + { + dummy_ptr = CALLOC(1, bytes); + if (!dummy_ptr) + return rv; + } + + per_get_many_bits(pd, (dummy_ptr ? dummy_ptr : dummy), 0, bytes << 3); + + if (dummy_ptr) + { + FREEMEM(dummy_ptr); + dummy_ptr = NULL; + } + } while (repeat); + + rv.code = RC_OK; + return rv; +#undef ASN_DUMMY_BYTES +} diff --git a/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_ber.c b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_ber.c new file mode 100644 index 000000000..700224ceb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_ber.c @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + ASN_DEBUG("presence %d\n", selected.presence_index); + + rv = selected.type_descriptor->op->ber_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, + elm->tag_mode); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + rv.code = RC_OK; + rv.consumed = consumed_myself; + return rv; + } else { + /* Oh, now a full-blown failure failure */ + } + /* Fall through */ + case RC_FAIL: + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + break; + } + + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; +} diff --git a/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_oer.c b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_oer.c new file mode 100644 index 000000000..578d5a632 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_oer.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2023 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + asn_TYPE_member_t *elm, const void *ptr, size_t size) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + size_t ot_ret; + + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + ot_ret = oer_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, ptr, size); + switch(ot_ret) { + default: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + rv.code = RC_OK; + rv.consumed = ot_ret; + return rv; + } else { + /* Oh, now a full-blown failure failure */ + } + /* Fall through */ + case -1: + rv.code = RC_FAIL; + rv.consumed = ot_ret; + break; + case 0: + rv.code = RC_WMORE; + rv.consumed = 0; + break; + } + + if(*memb_ptr2) { + const asn_CHOICE_specifics_t *specs = + selected.type_descriptor->specifics; + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_FREE_CONTENTS_ONLY(*selected.type_descriptor, + inner_value); + memset(*memb_ptr2, 0, specs->struct_size); + } + } + return rv; +} diff --git a/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_uper.c b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_uper.c new file mode 100644 index 000000000..30bd62edc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_uper.c @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_xer.c b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_xer.c new file mode 100644 index 000000000..0926e7f5c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OPEN_TYPE_xer.c @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + int xer_context = 0; + ssize_t ch_size; + pxer_chunk_type_e ch_type; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + /* + * Confirm wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_OPENING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = selected.type_descriptor->op->xer_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_FAIL: + /* Point to a best position where failure occurred */ + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + /* Wrt. rv.consumed==0: + * In case a genuine RC_WMORE, the whole Open Type decoding + * will have to be restarted. + */ + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; + } + + /* + * Finalize wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_CLOSING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + rv.consumed += consumed_myself; + + return rv; +} diff --git a/src/tmx/Asn_J2735/src/r2020/ObjectCount.c b/src/tmx/Asn_J2735/src/r2020/ObjectCount.c new file mode 100644 index 000000000..e27a193b9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ObjectCount.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "NMEAcorrections" + * found in "J2735-NMEAcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ObjectCount.h" + +int +ObjectCount_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 1023L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ObjectCount_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..1023) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ObjectCount_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ObjectCount_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ObjectCount = { + "ObjectCount", + "ObjectCount", + &asn_OP_NativeInteger, + asn_DEF_ObjectCount_tags_1, + sizeof(asn_DEF_ObjectCount_tags_1) + /sizeof(asn_DEF_ObjectCount_tags_1[0]), /* 1 */ + asn_DEF_ObjectCount_tags_1, /* Same as above */ + sizeof(asn_DEF_ObjectCount_tags_1) + /sizeof(asn_DEF_ObjectCount_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ObjectCount_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ObjectCount_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ObjectCount_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ObjectDescriptor.c b/src/tmx/Asn_J2735/src/r2020/ObjectDescriptor.c new file mode 100644 index 000000000..c311a9291 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ObjectDescriptor.c @@ -0,0 +1,91 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * ObjectDescriptor basic type description. + */ +static const ber_tlv_tag_t asn_DEF_ObjectDescriptor_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (7 << 2)), /* [UNIVERSAL 7] IMPLICIT ... */ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +asn_TYPE_operation_t asn_OP_ObjectDescriptor = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print_utf8, /* Treat as ASCII subset (it's not) */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer_utf8, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, + 0, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + 0, /* Not supported for ObjectDescriptor */ +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_ObjectDescriptor = { + "ObjectDescriptor", + "ObjectDescriptor", + &asn_OP_ObjectDescriptor, + asn_DEF_ObjectDescriptor_tags, + sizeof(asn_DEF_ObjectDescriptor_tags) + / sizeof(asn_DEF_ObjectDescriptor_tags[0]) - 1, + asn_DEF_ObjectDescriptor_tags, + sizeof(asn_DEF_ObjectDescriptor_tags) + / sizeof(asn_DEF_ObjectDescriptor_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_unknown_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; diff --git a/src/tmx/Asn_J2735/src/r2020/ObjectDistance.c b/src/tmx/Asn_J2735/src/r2020/ObjectDistance.c new file mode 100644 index 000000000..79ec8c88b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ObjectDistance.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "ObjectDistance.h" + +int +ObjectDistance_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32767 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_ObjectDistance_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-32767..32767) */, + -1}; +asn_per_constraints_t asn_PER_type_ObjectDistance_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32767, 32767 } /* (-32767..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ObjectDistance_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ObjectDistance = { + "ObjectDistance", + "ObjectDistance", + &asn_OP_NativeInteger, + asn_DEF_ObjectDistance_tags_1, + sizeof(asn_DEF_ObjectDistance_tags_1) + /sizeof(asn_DEF_ObjectDistance_tags_1[0]), /* 1 */ + asn_DEF_ObjectDistance_tags_1, /* Same as above */ + sizeof(asn_DEF_ObjectDistance_tags_1) + /sizeof(asn_DEF_ObjectDistance_tags_1[0]), /* 1 */ + { &asn_OER_type_ObjectDistance_constr_1, &asn_PER_type_ObjectDistance_constr_1, ObjectDistance_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ObjectID.c b/src/tmx/Asn_J2735/src/r2020/ObjectID.c new file mode 100644 index 000000000..5b46a3671 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ObjectID.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "ObjectID.h" + +int +ObjectID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_ObjectID_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +asn_per_constraints_t asn_PER_type_ObjectID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ObjectID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ObjectID = { + "ObjectID", + "ObjectID", + &asn_OP_NativeInteger, + asn_DEF_ObjectID_tags_1, + sizeof(asn_DEF_ObjectID_tags_1) + /sizeof(asn_DEF_ObjectID_tags_1[0]), /* 1 */ + asn_DEF_ObjectID_tags_1, /* Same as above */ + sizeof(asn_DEF_ObjectID_tags_1) + /sizeof(asn_DEF_ObjectID_tags_1[0]), /* 1 */ + { &asn_OER_type_ObjectID_constr_1, &asn_PER_type_ObjectID_constr_1, ObjectID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ObjectType.c b/src/tmx/Asn_J2735/src/r2020/ObjectType.c new file mode 100644 index 000000000..43ce3726e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ObjectType.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "ObjectType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_ObjectType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_ObjectType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ObjectType_value2enum_1[] = { + { 0, 7, "unknown" }, + { 1, 7, "vehicle" }, + { 2, 3, "vru" }, + { 3, 6, "animal" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ObjectType_enum2value_1[] = { + 3, /* animal(3) */ + 0, /* unknown(0) */ + 1, /* vehicle(1) */ + 2 /* vru(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ObjectType_specs_1 = { + asn_MAP_ObjectType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ObjectType_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ObjectType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ObjectType = { + "ObjectType", + "ObjectType", + &asn_OP_NativeEnumerated, + asn_DEF_ObjectType_tags_1, + sizeof(asn_DEF_ObjectType_tags_1) + /sizeof(asn_DEF_ObjectType_tags_1[0]), /* 1 */ + asn_DEF_ObjectType_tags_1, /* Same as above */ + sizeof(asn_DEF_ObjectType_tags_1) + /sizeof(asn_DEF_ObjectType_tags_1[0]), /* 1 */ + { &asn_OER_type_ObjectType_constr_1, &asn_PER_type_ObjectType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ObjectType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ObstacleDetection.c b/src/tmx/Asn_J2735/src/r2020/ObstacleDetection.c new file mode 100644 index 000000000..52eefcb34 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ObstacleDetection.c @@ -0,0 +1,195 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ObstacleDetection.h" + +static int +memb_description_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 523L && value <= 541L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_description_constr_4 CC_NOTUSED = { + { 2, 1 } /* (523..541) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_description_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 523, 541 } /* (523..541) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_ObstacleDetection_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ObstacleDetection, obDist), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObstacleDistance, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "obDist" + }, + { ATF_NOFLAGS, 0, offsetof(struct ObstacleDetection, obDirect), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObstacleDirection, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "obDirect" + }, + { ATF_POINTER, 2, offsetof(struct ObstacleDetection, description), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIScodes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_description_constr_4, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_description_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_description_constraint_1 + }, + 0, 0, /* No default value */ + "description" + }, + { ATF_POINTER, 1, offsetof(struct ObstacleDetection, locationDetails), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GenericLocations, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "locationDetails" + }, + { ATF_NOFLAGS, 0, offsetof(struct ObstacleDetection, dateTime), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DDateTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dateTime" + }, + { ATF_POINTER, 1, offsetof(struct ObstacleDetection, vertEvent), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VerticalAccelerationThreshold, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vertEvent" + }, +}; +static const int asn_MAP_ObstacleDetection_oms_1[] = { 2, 3, 5 }; +static const ber_tlv_tag_t asn_DEF_ObstacleDetection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ObstacleDetection_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* obDist */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* obDirect */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* description */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* locationDetails */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dateTime */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* vertEvent */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ObstacleDetection_specs_1 = { + sizeof(struct ObstacleDetection), + offsetof(struct ObstacleDetection, _asn_ctx), + asn_MAP_ObstacleDetection_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_ObstacleDetection_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ObstacleDetection = { + "ObstacleDetection", + "ObstacleDetection", + &asn_OP_SEQUENCE, + asn_DEF_ObstacleDetection_tags_1, + sizeof(asn_DEF_ObstacleDetection_tags_1) + /sizeof(asn_DEF_ObstacleDetection_tags_1[0]), /* 1 */ + asn_DEF_ObstacleDetection_tags_1, /* Same as above */ + sizeof(asn_DEF_ObstacleDetection_tags_1) + /sizeof(asn_DEF_ObstacleDetection_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ObstacleDetection_1, + 6, /* Elements count */ + &asn_SPC_ObstacleDetection_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ObstacleDirection.c b/src/tmx/Asn_J2735/src/r2020/ObstacleDirection.c new file mode 100644 index 000000000..70ffc7bec --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ObstacleDirection.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ObstacleDirection.h" + +int +ObstacleDirection_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 28800L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using Common_Angle, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ObstacleDirection_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..28800) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ObstacleDirection_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 28800 } /* (0..28800) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ObstacleDirection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ObstacleDirection = { + "ObstacleDirection", + "ObstacleDirection", + &asn_OP_NativeInteger, + asn_DEF_ObstacleDirection_tags_1, + sizeof(asn_DEF_ObstacleDirection_tags_1) + /sizeof(asn_DEF_ObstacleDirection_tags_1[0]), /* 1 */ + asn_DEF_ObstacleDirection_tags_1, /* Same as above */ + sizeof(asn_DEF_ObstacleDirection_tags_1) + /sizeof(asn_DEF_ObstacleDirection_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ObstacleDirection_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ObstacleDirection_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ObstacleDirection_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ObstacleDistance.c b/src/tmx/Asn_J2735/src/r2020/ObstacleDistance.c new file mode 100644 index 000000000..dcc0763e7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ObstacleDistance.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ObstacleDistance.h" + +int +ObstacleDistance_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ObstacleDistance_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ObstacleDistance_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32767 } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ObstacleDistance_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ObstacleDistance = { + "ObstacleDistance", + "ObstacleDistance", + &asn_OP_NativeInteger, + asn_DEF_ObstacleDistance_tags_1, + sizeof(asn_DEF_ObstacleDistance_tags_1) + /sizeof(asn_DEF_ObstacleDistance_tags_1[0]), /* 1 */ + asn_DEF_ObstacleDistance_tags_1, /* Same as above */ + sizeof(asn_DEF_ObstacleDistance_tags_1) + /sizeof(asn_DEF_ObstacleDistance_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ObstacleDistance_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ObstacleDistance_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ObstacleDistance_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ObstacleSize.c b/src/tmx/Asn_J2735/src/r2020/ObstacleSize.c new file mode 100644 index 000000000..8edc1baf8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ObstacleSize.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "ObstacleSize.h" + +asn_TYPE_member_t asn_MBR_ObstacleSize_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ObstacleSize, width), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SizeValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "width" + }, + { ATF_NOFLAGS, 0, offsetof(struct ObstacleSize, length), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SizeValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "length" + }, + { ATF_POINTER, 1, offsetof(struct ObstacleSize, height), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SizeValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "height" + }, +}; +static const int asn_MAP_ObstacleSize_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ObstacleSize_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ObstacleSize_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* width */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* length */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* height */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ObstacleSize_specs_1 = { + sizeof(struct ObstacleSize), + offsetof(struct ObstacleSize, _asn_ctx), + asn_MAP_ObstacleSize_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ObstacleSize_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ObstacleSize = { + "ObstacleSize", + "ObstacleSize", + &asn_OP_SEQUENCE, + asn_DEF_ObstacleSize_tags_1, + sizeof(asn_DEF_ObstacleSize_tags_1) + /sizeof(asn_DEF_ObstacleSize_tags_1[0]), /* 1 */ + asn_DEF_ObstacleSize_tags_1, /* Same as above */ + sizeof(asn_DEF_ObstacleSize_tags_1) + /sizeof(asn_DEF_ObstacleSize_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ObstacleSize_1, + 3, /* Elements count */ + &asn_SPC_ObstacleSize_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ObstacleSizeConfidence.c b/src/tmx/Asn_J2735/src/r2020/ObstacleSizeConfidence.c new file mode 100644 index 000000000..d5ddfbc43 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ObstacleSizeConfidence.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "ObstacleSizeConfidence.h" + +asn_TYPE_member_t asn_MBR_ObstacleSizeConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ObstacleSizeConfidence, widthConfidence), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SizeValueConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "widthConfidence" + }, + { ATF_NOFLAGS, 0, offsetof(struct ObstacleSizeConfidence, lengthConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SizeValueConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "lengthConfidence" + }, + { ATF_POINTER, 1, offsetof(struct ObstacleSizeConfidence, heightConfidence), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SizeValueConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "heightConfidence" + }, +}; +static const int asn_MAP_ObstacleSizeConfidence_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ObstacleSizeConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ObstacleSizeConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* widthConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lengthConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* heightConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ObstacleSizeConfidence_specs_1 = { + sizeof(struct ObstacleSizeConfidence), + offsetof(struct ObstacleSizeConfidence, _asn_ctx), + asn_MAP_ObstacleSizeConfidence_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ObstacleSizeConfidence_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ObstacleSizeConfidence = { + "ObstacleSizeConfidence", + "ObstacleSizeConfidence", + &asn_OP_SEQUENCE, + asn_DEF_ObstacleSizeConfidence_tags_1, + sizeof(asn_DEF_ObstacleSizeConfidence_tags_1) + /sizeof(asn_DEF_ObstacleSizeConfidence_tags_1[0]), /* 1 */ + asn_DEF_ObstacleSizeConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_ObstacleSizeConfidence_tags_1) + /sizeof(asn_DEF_ObstacleSizeConfidence_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ObstacleSizeConfidence_1, + 3, /* Elements count */ + &asn_SPC_ObstacleSizeConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Offset-B09.c b/src/tmx/Asn_J2735/src/r2020/Offset-B09.c new file mode 100644 index 000000000..104ec49f7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Offset-B09.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Offset-B09.h" + +int +Offset_B09_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -256L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Offset_B09_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-256..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Offset_B09_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, -256, 255 } /* (-256..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Offset_B09_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Offset_B09 = { + "Offset-B09", + "Offset-B09", + &asn_OP_NativeInteger, + asn_DEF_Offset_B09_tags_1, + sizeof(asn_DEF_Offset_B09_tags_1) + /sizeof(asn_DEF_Offset_B09_tags_1[0]), /* 1 */ + asn_DEF_Offset_B09_tags_1, /* Same as above */ + sizeof(asn_DEF_Offset_B09_tags_1) + /sizeof(asn_DEF_Offset_B09_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Offset_B09_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Offset_B09_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Offset_B09_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Offset-B10.c b/src/tmx/Asn_J2735/src/r2020/Offset-B10.c new file mode 100644 index 000000000..3762748a3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Offset-B10.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Offset-B10.h" + +int +Offset_B10_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -512L && value <= 511L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Offset_B10_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-512..511) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Offset_B10_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, -512, 511 } /* (-512..511) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Offset_B10_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Offset_B10 = { + "Offset-B10", + "Offset-B10", + &asn_OP_NativeInteger, + asn_DEF_Offset_B10_tags_1, + sizeof(asn_DEF_Offset_B10_tags_1) + /sizeof(asn_DEF_Offset_B10_tags_1[0]), /* 1 */ + asn_DEF_Offset_B10_tags_1, /* Same as above */ + sizeof(asn_DEF_Offset_B10_tags_1) + /sizeof(asn_DEF_Offset_B10_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Offset_B10_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Offset_B10_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Offset_B10_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Offset-B11.c b/src/tmx/Asn_J2735/src/r2020/Offset-B11.c new file mode 100644 index 000000000..b2012811e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Offset-B11.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Offset-B11.h" + +int +Offset_B11_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -1024L && value <= 1023L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Offset_B11_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-1024..1023) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Offset_B11_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, -1024, 1023 } /* (-1024..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Offset_B11_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Offset_B11 = { + "Offset-B11", + "Offset-B11", + &asn_OP_NativeInteger, + asn_DEF_Offset_B11_tags_1, + sizeof(asn_DEF_Offset_B11_tags_1) + /sizeof(asn_DEF_Offset_B11_tags_1[0]), /* 1 */ + asn_DEF_Offset_B11_tags_1, /* Same as above */ + sizeof(asn_DEF_Offset_B11_tags_1) + /sizeof(asn_DEF_Offset_B11_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Offset_B11_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Offset_B11_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Offset_B11_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Offset-B12.c b/src/tmx/Asn_J2735/src/r2020/Offset-B12.c new file mode 100644 index 000000000..c19b213c4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Offset-B12.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Offset-B12.h" + +int +Offset_B12_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -2048L && value <= 2047L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Offset_B12_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-2048..2047) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Offset_B12_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, -2048, 2047 } /* (-2048..2047) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Offset_B12_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Offset_B12 = { + "Offset-B12", + "Offset-B12", + &asn_OP_NativeInteger, + asn_DEF_Offset_B12_tags_1, + sizeof(asn_DEF_Offset_B12_tags_1) + /sizeof(asn_DEF_Offset_B12_tags_1[0]), /* 1 */ + asn_DEF_Offset_B12_tags_1, /* Same as above */ + sizeof(asn_DEF_Offset_B12_tags_1) + /sizeof(asn_DEF_Offset_B12_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Offset_B12_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Offset_B12_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Offset_B12_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Offset-B13.c b/src/tmx/Asn_J2735/src/r2020/Offset-B13.c new file mode 100644 index 000000000..29a07bc59 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Offset-B13.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Offset-B13.h" + +int +Offset_B13_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -4096L && value <= 4095L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Offset_B13_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-4096..4095) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Offset_B13_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 13, 13, -4096, 4095 } /* (-4096..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Offset_B13_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Offset_B13 = { + "Offset-B13", + "Offset-B13", + &asn_OP_NativeInteger, + asn_DEF_Offset_B13_tags_1, + sizeof(asn_DEF_Offset_B13_tags_1) + /sizeof(asn_DEF_Offset_B13_tags_1[0]), /* 1 */ + asn_DEF_Offset_B13_tags_1, /* Same as above */ + sizeof(asn_DEF_Offset_B13_tags_1) + /sizeof(asn_DEF_Offset_B13_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Offset_B13_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Offset_B13_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Offset_B13_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Offset-B14.c b/src/tmx/Asn_J2735/src/r2020/Offset-B14.c new file mode 100644 index 000000000..481b7dd93 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Offset-B14.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Offset-B14.h" + +int +Offset_B14_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -8192L && value <= 8191L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Offset_B14_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-8192..8191) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Offset_B14_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, -8192, 8191 } /* (-8192..8191) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Offset_B14_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Offset_B14 = { + "Offset-B14", + "Offset-B14", + &asn_OP_NativeInteger, + asn_DEF_Offset_B14_tags_1, + sizeof(asn_DEF_Offset_B14_tags_1) + /sizeof(asn_DEF_Offset_B14_tags_1[0]), /* 1 */ + asn_DEF_Offset_B14_tags_1, /* Same as above */ + sizeof(asn_DEF_Offset_B14_tags_1) + /sizeof(asn_DEF_Offset_B14_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Offset_B14_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Offset_B14_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Offset_B14_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Offset-B16.c b/src/tmx/Asn_J2735/src/r2020/Offset-B16.c new file mode 100644 index 000000000..d3fcc2bdd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Offset-B16.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Offset-B16.h" + +int +Offset_B16_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32768L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Offset_B16_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-32768..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Offset_B16_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32768, 32767 } /* (-32768..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Offset_B16_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Offset_B16 = { + "Offset-B16", + "Offset-B16", + &asn_OP_NativeInteger, + asn_DEF_Offset_B16_tags_1, + sizeof(asn_DEF_Offset_B16_tags_1) + /sizeof(asn_DEF_Offset_B16_tags_1[0]), /* 1 */ + asn_DEF_Offset_B16_tags_1, /* Same as above */ + sizeof(asn_DEF_Offset_B16_tags_1) + /sizeof(asn_DEF_Offset_B16_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Offset_B16_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Offset_B16_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Offset_B16_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/OffsetLL-B12.c b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B12.c new file mode 100644 index 000000000..ffd0a3f0e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B12.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "OffsetLL-B12.h" + +int +OffsetLL_B12_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -2048L && value <= 2047L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_OffsetLL_B12_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-2048..2047) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_OffsetLL_B12_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, -2048, 2047 } /* (-2048..2047) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_OffsetLL_B12_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OffsetLL_B12 = { + "OffsetLL-B12", + "OffsetLL-B12", + &asn_OP_NativeInteger, + asn_DEF_OffsetLL_B12_tags_1, + sizeof(asn_DEF_OffsetLL_B12_tags_1) + /sizeof(asn_DEF_OffsetLL_B12_tags_1[0]), /* 1 */ + asn_DEF_OffsetLL_B12_tags_1, /* Same as above */ + sizeof(asn_DEF_OffsetLL_B12_tags_1) + /sizeof(asn_DEF_OffsetLL_B12_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_OffsetLL_B12_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_OffsetLL_B12_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OffsetLL_B12_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/OffsetLL-B14.c b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B14.c new file mode 100644 index 000000000..44c0e2f79 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B14.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "OffsetLL-B14.h" + +int +OffsetLL_B14_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -8192L && value <= 8191L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_OffsetLL_B14_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-8192..8191) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_OffsetLL_B14_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, -8192, 8191 } /* (-8192..8191) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_OffsetLL_B14_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OffsetLL_B14 = { + "OffsetLL-B14", + "OffsetLL-B14", + &asn_OP_NativeInteger, + asn_DEF_OffsetLL_B14_tags_1, + sizeof(asn_DEF_OffsetLL_B14_tags_1) + /sizeof(asn_DEF_OffsetLL_B14_tags_1[0]), /* 1 */ + asn_DEF_OffsetLL_B14_tags_1, /* Same as above */ + sizeof(asn_DEF_OffsetLL_B14_tags_1) + /sizeof(asn_DEF_OffsetLL_B14_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_OffsetLL_B14_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_OffsetLL_B14_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OffsetLL_B14_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/OffsetLL-B16.c b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B16.c new file mode 100644 index 000000000..175b270ad --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B16.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "OffsetLL-B16.h" + +int +OffsetLL_B16_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32768L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_OffsetLL_B16_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-32768..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_OffsetLL_B16_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32768, 32767 } /* (-32768..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_OffsetLL_B16_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OffsetLL_B16 = { + "OffsetLL-B16", + "OffsetLL-B16", + &asn_OP_NativeInteger, + asn_DEF_OffsetLL_B16_tags_1, + sizeof(asn_DEF_OffsetLL_B16_tags_1) + /sizeof(asn_DEF_OffsetLL_B16_tags_1[0]), /* 1 */ + asn_DEF_OffsetLL_B16_tags_1, /* Same as above */ + sizeof(asn_DEF_OffsetLL_B16_tags_1) + /sizeof(asn_DEF_OffsetLL_B16_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_OffsetLL_B16_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_OffsetLL_B16_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OffsetLL_B16_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/OffsetLL-B18.c b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B18.c new file mode 100644 index 000000000..791c18446 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B18.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "OffsetLL-B18.h" + +int +OffsetLL_B18_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -131072L && value <= 131071L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_OffsetLL_B18_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-131072..131071) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_OffsetLL_B18_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 18, -1, -131072, 131071 } /* (-131072..131071) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_OffsetLL_B18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OffsetLL_B18 = { + "OffsetLL-B18", + "OffsetLL-B18", + &asn_OP_NativeInteger, + asn_DEF_OffsetLL_B18_tags_1, + sizeof(asn_DEF_OffsetLL_B18_tags_1) + /sizeof(asn_DEF_OffsetLL_B18_tags_1[0]), /* 1 */ + asn_DEF_OffsetLL_B18_tags_1, /* Same as above */ + sizeof(asn_DEF_OffsetLL_B18_tags_1) + /sizeof(asn_DEF_OffsetLL_B18_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_OffsetLL_B18_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_OffsetLL_B18_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OffsetLL_B18_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/OffsetLL-B22.c b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B22.c new file mode 100644 index 000000000..40d4d9eb7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B22.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "OffsetLL-B22.h" + +int +OffsetLL_B22_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -2097152L && value <= 2097151L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_OffsetLL_B22_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-2097152..2097151) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_OffsetLL_B22_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 22, -1, -2097152, 2097151 } /* (-2097152..2097151) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_OffsetLL_B22_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OffsetLL_B22 = { + "OffsetLL-B22", + "OffsetLL-B22", + &asn_OP_NativeInteger, + asn_DEF_OffsetLL_B22_tags_1, + sizeof(asn_DEF_OffsetLL_B22_tags_1) + /sizeof(asn_DEF_OffsetLL_B22_tags_1[0]), /* 1 */ + asn_DEF_OffsetLL_B22_tags_1, /* Same as above */ + sizeof(asn_DEF_OffsetLL_B22_tags_1) + /sizeof(asn_DEF_OffsetLL_B22_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_OffsetLL_B22_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_OffsetLL_B22_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OffsetLL_B22_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/OffsetLL-B24.c b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B24.c new file mode 100644 index 000000000..3ecc3c204 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OffsetLL-B24.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "OffsetLL-B24.h" + +int +OffsetLL_B24_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -8388608L && value <= 8388607L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_OffsetLL_B24_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-8388608..8388607) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_OffsetLL_B24_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 24, -1, -8388608, 8388607 } /* (-8388608..8388607) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_OffsetLL_B24_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OffsetLL_B24 = { + "OffsetLL-B24", + "OffsetLL-B24", + &asn_OP_NativeInteger, + asn_DEF_OffsetLL_B24_tags_1, + sizeof(asn_DEF_OffsetLL_B24_tags_1) + /sizeof(asn_DEF_OffsetLL_B24_tags_1[0]), /* 1 */ + asn_DEF_OffsetLL_B24_tags_1, /* Same as above */ + sizeof(asn_DEF_OffsetLL_B24_tags_1) + /sizeof(asn_DEF_OffsetLL_B24_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_OffsetLL_B24_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_OffsetLL_B24_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OffsetLL_B24_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/OffsetPoint.c b/src/tmx/Asn_J2735/src/r2020/OffsetPoint.c new file mode 100644 index 000000000..3572ed0d9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OffsetPoint.c @@ -0,0 +1,126 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "OffsetPoint.h" + +static int +memb_deltax_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32768 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_deltay_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32768 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_deltax_constr_2 CC_NOTUSED = { + { 2, 0 } /* (-32768..32767) */, + -1}; +static asn_per_constraints_t asn_PER_memb_deltax_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32768, 32767 } /* (-32768..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_deltay_constr_3 CC_NOTUSED = { + { 2, 0 } /* (-32768..32767) */, + -1}; +static asn_per_constraints_t asn_PER_memb_deltay_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32768, 32767 } /* (-32768..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_OffsetPoint_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct OffsetPoint, deltax), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_deltax_constr_2, &asn_PER_memb_deltax_constr_2, memb_deltax_constraint_1 }, + 0, 0, /* No default value */ + "deltax" + }, + { ATF_NOFLAGS, 0, offsetof(struct OffsetPoint, deltay), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_deltay_constr_3, &asn_PER_memb_deltay_constr_3, memb_deltay_constraint_1 }, + 0, 0, /* No default value */ + "deltay" + }, +}; +static const ber_tlv_tag_t asn_DEF_OffsetPoint_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_OffsetPoint_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* deltax */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* deltay */ +}; +asn_SEQUENCE_specifics_t asn_SPC_OffsetPoint_specs_1 = { + sizeof(struct OffsetPoint), + offsetof(struct OffsetPoint, _asn_ctx), + asn_MAP_OffsetPoint_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_OffsetPoint = { + "OffsetPoint", + "OffsetPoint", + &asn_OP_SEQUENCE, + asn_DEF_OffsetPoint_tags_1, + sizeof(asn_DEF_OffsetPoint_tags_1) + /sizeof(asn_DEF_OffsetPoint_tags_1[0]), /* 1 */ + asn_DEF_OffsetPoint_tags_1, /* Same as above */ + sizeof(asn_DEF_OffsetPoint_tags_1) + /sizeof(asn_DEF_OffsetPoint_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_OffsetPoint_1, + 2, /* Elements count */ + &asn_SPC_OffsetPoint_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/OffsetSystem.c b/src/tmx/Asn_J2735/src/r2020/OffsetSystem.c new file mode 100644 index 000000000..5b7f28eb5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OffsetSystem.c @@ -0,0 +1,171 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "OffsetSystem.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_offset_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_offset_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_offset_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct OffsetSystem__offset, choice.xy), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NodeListXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "xy" + }, + { ATF_NOFLAGS, 0, offsetof(struct OffsetSystem__offset, choice.ll), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NodeListLL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ll" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_offset_tag2el_3[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* xy */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ll */ +}; +static asn_CHOICE_specifics_t asn_SPC_offset_specs_3 = { + sizeof(struct OffsetSystem__offset), + offsetof(struct OffsetSystem__offset, _asn_ctx), + offsetof(struct OffsetSystem__offset, present), + sizeof(((struct OffsetSystem__offset *)0)->present), + asn_MAP_offset_tag2el_3, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_offset_3 = { + "offset", + "offset", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_offset_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_offset_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_offset_3, + 2, /* Elements count */ + &asn_SPC_offset_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_OffsetSystem_1[] = { + { ATF_POINTER, 1, offsetof(struct OffsetSystem, scale), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Zoom, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "scale" + }, + { ATF_NOFLAGS, 0, offsetof(struct OffsetSystem, offset), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_offset_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offset" + }, +}; +static const int asn_MAP_OffsetSystem_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_OffsetSystem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_OffsetSystem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scale */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* offset */ +}; +asn_SEQUENCE_specifics_t asn_SPC_OffsetSystem_specs_1 = { + sizeof(struct OffsetSystem), + offsetof(struct OffsetSystem, _asn_ctx), + asn_MAP_OffsetSystem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_OffsetSystem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_OffsetSystem = { + "OffsetSystem", + "OffsetSystem", + &asn_OP_SEQUENCE, + asn_DEF_OffsetSystem_tags_1, + sizeof(asn_DEF_OffsetSystem_tags_1) + /sizeof(asn_DEF_OffsetSystem_tags_1[0]), /* 1 */ + asn_DEF_OffsetSystem_tags_1, /* Same as above */ + sizeof(asn_DEF_OffsetSystem_tags_1) + /sizeof(asn_DEF_OffsetSystem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_OffsetSystem_1, + 2, /* Elements count */ + &asn_SPC_OffsetSystem_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/OverlayLaneList.c b/src/tmx/Asn_J2735/src/r2020/OverlayLaneList.c new file mode 100644 index 000000000..9bbcbe0a2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/OverlayLaneList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "OverlayLaneList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_OverlayLaneList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..5)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_OverlayLaneList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 5 } /* (SIZE(1..5)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_OverlayLaneList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_LaneID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_OverlayLaneList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_OverlayLaneList_specs_1 = { + sizeof(struct OverlayLaneList), + offsetof(struct OverlayLaneList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_OverlayLaneList = { + "OverlayLaneList", + "OverlayLaneList", + &asn_OP_SEQUENCE_OF, + asn_DEF_OverlayLaneList_tags_1, + sizeof(asn_DEF_OverlayLaneList_tags_1) + /sizeof(asn_DEF_OverlayLaneList_tags_1[0]), /* 1 */ + asn_DEF_OverlayLaneList_tags_1, /* Same as above */ + sizeof(asn_DEF_OverlayLaneList_tags_1) + /sizeof(asn_DEF_OverlayLaneList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_OverlayLaneList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_OverlayLaneList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_OverlayLaneList_1, + 1, /* Single element */ + &asn_SPC_OverlayLaneList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PartII-Id.c b/src/tmx/Asn_J2735/src/r2020/PartII-Id.c new file mode 100644 index 000000000..f6ad1fa5c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PartII-Id.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PartII-Id.h" + +int +PartII_Id_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 63L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PartII_Id_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..63) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PartII_Id_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 63 } /* (0..63) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PartII_Id_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PartII_Id = { + "PartII-Id", + "PartII-Id", + &asn_OP_NativeInteger, + asn_DEF_PartII_Id_tags_1, + sizeof(asn_DEF_PartII_Id_tags_1) + /sizeof(asn_DEF_PartII_Id_tags_1[0]), /* 1 */ + asn_DEF_PartII_Id_tags_1, /* Same as above */ + sizeof(asn_DEF_PartII_Id_tags_1) + /sizeof(asn_DEF_PartII_Id_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PartII_Id_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PartII_Id_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PartII_Id_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PartIIcontent.c b/src/tmx/Asn_J2735/src/r2020/PartIIcontent.c new file mode 100644 index 000000000..beb0ee5b5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PartIIcontent.c @@ -0,0 +1,284 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PartIIcontent.h" + +static const long asn_VAL_1_vehicleSafetyExt = 0; +static const long asn_VAL_2_specialVehicleExt = 1; +static const long asn_VAL_3_supplementalVehicleExt = 2; +static const asn_ioc_cell_t asn_IOS_BSMpartIIExtension_1_rows[] = { + { "&id", aioc__value, &asn_DEF_PartII_Id, &asn_VAL_1_vehicleSafetyExt }, + { "&Type", aioc__type, &asn_DEF_VehicleSafetyExtensions }, + { "&id", aioc__value, &asn_DEF_PartII_Id, &asn_VAL_2_specialVehicleExt }, + { "&Type", aioc__type, &asn_DEF_SpecialVehicleExtensions }, + { "&id", aioc__value, &asn_DEF_PartII_Id, &asn_VAL_3_supplementalVehicleExt }, + { "&Type", aioc__type, &asn_DEF_SupplementalVehicleExtensions } +}; +static const asn_ioc_set_t asn_IOS_BSMpartIIExtension_1[] = { + { 3, 2, asn_IOS_BSMpartIIExtension_1_rows } +}; +static int +memb_partII_Id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 63L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_BSMpartIIExtension_partII_Value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_BSMpartIIExtension_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct BSMpartIIExtension, partII_Id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_partII_Value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_partII_Id_constr_2 CC_NOTUSED = { + { 1, 1 } /* (0..63) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_partII_Id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 63 } /* (0..63) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_partII_Value_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_partII_Value_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_partII_Value_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct BSMpartIIExtension__partII_Value, choice.VehicleSafetyExtensions), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_VehicleSafetyExtensions, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "VehicleSafetyExtensions" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMpartIIExtension__partII_Value, choice.SpecialVehicleExtensions), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SpecialVehicleExtensions, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "SpecialVehicleExtensions" + }, + { ATF_NOFLAGS, 0, offsetof(struct BSMpartIIExtension__partII_Value, choice.SupplementalVehicleExtensions), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SupplementalVehicleExtensions, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "SupplementalVehicleExtensions" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_partII_Value_tag2el_3[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* VehicleSafetyExtensions */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* SpecialVehicleExtensions */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* SupplementalVehicleExtensions */ +}; +static asn_CHOICE_specifics_t asn_SPC_partII_Value_specs_3 = { + sizeof(struct BSMpartIIExtension__partII_Value), + offsetof(struct BSMpartIIExtension__partII_Value, _asn_ctx), + offsetof(struct BSMpartIIExtension__partII_Value, present), + sizeof(((struct BSMpartIIExtension__partII_Value *)0)->present), + asn_MAP_partII_Value_tag2el_3, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_partII_Value_3 = { + "partII-Value", + "partII-Value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_partII_Value_3, + 3, /* Elements count */ + &asn_SPC_partII_Value_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_BSMpartIIExtension_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BSMpartIIExtension, partII_Id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PartII_Id, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_partII_Id_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_partII_Id_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_partII_Id_constraint_1 + }, + 0, 0, /* No default value */ + "partII-Id" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct BSMpartIIExtension, partII_Value), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_partII_Value_3, + select_BSMpartIIExtension_partII_Value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_partII_Value_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_partII_Value_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_partII_Value_constraint_1 + }, + 0, 0, /* No default value */ + "partII-Value" + }, +}; +static const ber_tlv_tag_t asn_DEF_BSMpartIIExtension_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BSMpartIIExtension_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* partII-Id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* partII-Value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BSMpartIIExtension_specs_1 = { + sizeof(struct BSMpartIIExtension), + offsetof(struct BSMpartIIExtension, _asn_ctx), + asn_MAP_BSMpartIIExtension_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BSMpartIIExtension = { + "BSMpartIIExtension", + "BSMpartIIExtension", + &asn_OP_SEQUENCE, + asn_DEF_BSMpartIIExtension_tags_1, + sizeof(asn_DEF_BSMpartIIExtension_tags_1) + /sizeof(asn_DEF_BSMpartIIExtension_tags_1[0]), /* 1 */ + asn_DEF_BSMpartIIExtension_tags_1, /* Same as above */ + sizeof(asn_DEF_BSMpartIIExtension_tags_1) + /sizeof(asn_DEF_BSMpartIIExtension_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_BSMpartIIExtension_1, + 2, /* Elements count */ + &asn_SPC_BSMpartIIExtension_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PathHistory.c b/src/tmx/Asn_J2735/src/r2020/PathHistory.c new file mode 100644 index 000000000..d6dce25e4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PathHistory.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PathHistory.h" + +asn_TYPE_member_t asn_MBR_PathHistory_1[] = { + { ATF_POINTER, 2, offsetof(struct PathHistory, initialPosition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FullPositionVector, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "initialPosition" + }, + { ATF_POINTER, 1, offsetof(struct PathHistory, currGNSSstatus), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNSSstatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "currGNSSstatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct PathHistory, crumbData), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PathHistoryPointList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "crumbData" + }, +}; +static const int asn_MAP_PathHistory_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_PathHistory_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PathHistory_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initialPosition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* currGNSSstatus */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* crumbData */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PathHistory_specs_1 = { + sizeof(struct PathHistory), + offsetof(struct PathHistory, _asn_ctx), + asn_MAP_PathHistory_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_PathHistory_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PathHistory = { + "PathHistory", + "PathHistory", + &asn_OP_SEQUENCE, + asn_DEF_PathHistory_tags_1, + sizeof(asn_DEF_PathHistory_tags_1) + /sizeof(asn_DEF_PathHistory_tags_1[0]), /* 1 */ + asn_DEF_PathHistory_tags_1, /* Same as above */ + sizeof(asn_DEF_PathHistory_tags_1) + /sizeof(asn_DEF_PathHistory_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PathHistory_1, + 3, /* Elements count */ + &asn_SPC_PathHistory_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PathHistoryPoint.c b/src/tmx/Asn_J2735/src/r2020/PathHistoryPoint.c new file mode 100644 index 000000000..47d42ee0f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PathHistoryPoint.c @@ -0,0 +1,176 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PathHistoryPoint.h" + +asn_TYPE_member_t asn_MBR_PathHistoryPoint_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PathHistoryPoint, latOffset), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B18, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "latOffset" + }, + { ATF_NOFLAGS, 0, offsetof(struct PathHistoryPoint, lonOffset), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B18, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lonOffset" + }, + { ATF_NOFLAGS, 0, offsetof(struct PathHistoryPoint, elevationOffset), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VertOffset_B12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elevationOffset" + }, + { ATF_NOFLAGS, 0, offsetof(struct PathHistoryPoint, timeOffset), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeOffset, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeOffset" + }, + { ATF_POINTER, 3, offsetof(struct PathHistoryPoint, speed), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Speed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed" + }, + { ATF_POINTER, 2, offsetof(struct PathHistoryPoint, posAccuracy), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PositionalAccuracy, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "posAccuracy" + }, + { ATF_POINTER, 1, offsetof(struct PathHistoryPoint, heading), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CoarseHeading, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "heading" + }, +}; +static const int asn_MAP_PathHistoryPoint_oms_1[] = { 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_PathHistoryPoint_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PathHistoryPoint_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* latOffset */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lonOffset */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* elevationOffset */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* timeOffset */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* speed */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* posAccuracy */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* heading */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PathHistoryPoint_specs_1 = { + sizeof(struct PathHistoryPoint), + offsetof(struct PathHistoryPoint, _asn_ctx), + asn_MAP_PathHistoryPoint_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_PathHistoryPoint_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PathHistoryPoint = { + "PathHistoryPoint", + "PathHistoryPoint", + &asn_OP_SEQUENCE, + asn_DEF_PathHistoryPoint_tags_1, + sizeof(asn_DEF_PathHistoryPoint_tags_1) + /sizeof(asn_DEF_PathHistoryPoint_tags_1[0]), /* 1 */ + asn_DEF_PathHistoryPoint_tags_1, /* Same as above */ + sizeof(asn_DEF_PathHistoryPoint_tags_1) + /sizeof(asn_DEF_PathHistoryPoint_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PathHistoryPoint_1, + 7, /* Elements count */ + &asn_SPC_PathHistoryPoint_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PathHistoryPointList.c b/src/tmx/Asn_J2735/src/r2020/PathHistoryPointList.c new file mode 100644 index 000000000..1de1248c0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PathHistoryPointList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PathHistoryPointList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PathHistoryPointList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..23)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PathHistoryPointList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 23 } /* (SIZE(1..23)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_PathHistoryPointList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PathHistoryPoint, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PathHistoryPointList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_PathHistoryPointList_specs_1 = { + sizeof(struct PathHistoryPointList), + offsetof(struct PathHistoryPointList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PathHistoryPointList = { + "PathHistoryPointList", + "PathHistoryPointList", + &asn_OP_SEQUENCE_OF, + asn_DEF_PathHistoryPointList_tags_1, + sizeof(asn_DEF_PathHistoryPointList_tags_1) + /sizeof(asn_DEF_PathHistoryPointList_tags_1[0]), /* 1 */ + asn_DEF_PathHistoryPointList_tags_1, /* Same as above */ + sizeof(asn_DEF_PathHistoryPointList_tags_1) + /sizeof(asn_DEF_PathHistoryPointList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PathHistoryPointList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PathHistoryPointList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_PathHistoryPointList_1, + 1, /* Single element */ + &asn_SPC_PathHistoryPointList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PathNode.c b/src/tmx/Asn_J2735/src/r2020/PathNode.c new file mode 100644 index 000000000..4e36b9467 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PathNode.c @@ -0,0 +1,214 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "PathNode.h" + +static int +memb_x_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32768 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_y_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32768 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_z_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32768 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_width_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -128 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_x_constr_2 CC_NOTUSED = { + { 2, 0 } /* (-32768..32767) */, + -1}; +static asn_per_constraints_t asn_PER_memb_x_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32768, 32767 } /* (-32768..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_y_constr_3 CC_NOTUSED = { + { 2, 0 } /* (-32768..32767) */, + -1}; +static asn_per_constraints_t asn_PER_memb_y_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32768, 32767 } /* (-32768..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_z_constr_4 CC_NOTUSED = { + { 2, 0 } /* (-32768..32767) */, + -1}; +static asn_per_constraints_t asn_PER_memb_z_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32768, 32767 } /* (-32768..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_width_constr_5 CC_NOTUSED = { + { 1, 0 } /* (-128..127) */, + -1}; +static asn_per_constraints_t asn_PER_memb_width_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -128, 127 } /* (-128..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_PathNode_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PathNode, x), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_x_constr_2, &asn_PER_memb_x_constr_2, memb_x_constraint_1 }, + 0, 0, /* No default value */ + "x" + }, + { ATF_NOFLAGS, 0, offsetof(struct PathNode, y), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_y_constr_3, &asn_PER_memb_y_constr_3, memb_y_constraint_1 }, + 0, 0, /* No default value */ + "y" + }, + { ATF_POINTER, 2, offsetof(struct PathNode, z), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_z_constr_4, &asn_PER_memb_z_constr_4, memb_z_constraint_1 }, + 0, 0, /* No default value */ + "z" + }, + { ATF_POINTER, 1, offsetof(struct PathNode, width), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_width_constr_5, &asn_PER_memb_width_constr_5, memb_width_constraint_1 }, + 0, 0, /* No default value */ + "width" + }, +}; +static const int asn_MAP_PathNode_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_PathNode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PathNode_tag2el_1[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* x */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* y */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* z */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 } /* width */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PathNode_specs_1 = { + sizeof(struct PathNode), + offsetof(struct PathNode, _asn_ctx), + asn_MAP_PathNode_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_PathNode_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PathNode = { + "PathNode", + "PathNode", + &asn_OP_SEQUENCE, + asn_DEF_PathNode_tags_1, + sizeof(asn_DEF_PathNode_tags_1) + /sizeof(asn_DEF_PathNode_tags_1[0]), /* 1 */ + asn_DEF_PathNode_tags_1, /* Same as above */ + sizeof(asn_DEF_PathNode_tags_1) + /sizeof(asn_DEF_PathNode_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PathNode_1, + 4, /* Elements count */ + &asn_SPC_PathNode_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PathPrediction.c b/src/tmx/Asn_J2735/src/r2020/PathPrediction.c new file mode 100644 index 000000000..a5f3b2c66 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PathPrediction.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PathPrediction.h" + +asn_TYPE_member_t asn_MBR_PathPrediction_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PathPrediction, radiusOfCurve), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RadiusOfCurvature, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "radiusOfCurve" + }, + { ATF_NOFLAGS, 0, offsetof(struct PathPrediction, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Confidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_PathPrediction_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PathPrediction_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radiusOfCurve */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* confidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PathPrediction_specs_1 = { + sizeof(struct PathPrediction), + offsetof(struct PathPrediction, _asn_ctx), + asn_MAP_PathPrediction_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PathPrediction = { + "PathPrediction", + "PathPrediction", + &asn_OP_SEQUENCE, + asn_DEF_PathPrediction_tags_1, + sizeof(asn_DEF_PathPrediction_tags_1) + /sizeof(asn_DEF_PathPrediction_tags_1[0]), /* 1 */ + asn_DEF_PathPrediction_tags_1, /* Same as above */ + sizeof(asn_DEF_PathPrediction_tags_1) + /sizeof(asn_DEF_PathPrediction_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PathPrediction_1, + 2, /* Elements count */ + &asn_SPC_PathPrediction_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PayloadData.c b/src/tmx/Asn_J2735/src/r2020/PayloadData.c new file mode 100644 index 000000000..1ef8b1d9a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PayloadData.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PayloadData.h" + +int +PayloadData_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 2048UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PayloadData_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..2048)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_PayloadData_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 11, 11, 1, 2048 } /* (SIZE(1..2048)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PayloadData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PayloadData = { + "PayloadData", + "PayloadData", + &asn_OP_OCTET_STRING, + asn_DEF_PayloadData_tags_1, + sizeof(asn_DEF_PayloadData_tags_1) + /sizeof(asn_DEF_PayloadData_tags_1[0]), /* 1 */ + asn_DEF_PayloadData_tags_1, /* Same as above */ + sizeof(asn_DEF_PayloadData_tags_1) + /sizeof(asn_DEF_PayloadData_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PayloadData_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PayloadData_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PayloadData_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PedestrianBicycleDetect.c b/src/tmx/Asn_J2735/src/r2020/PedestrianBicycleDetect.c new file mode 100644 index 000000000..7101c1c43 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PedestrianBicycleDetect.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PedestrianBicycleDetect.h" + +/* + * This type is implemented using BOOLEAN, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_PedestrianBicycleDetect_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PedestrianBicycleDetect = { + "PedestrianBicycleDetect", + "PedestrianBicycleDetect", + &asn_OP_BOOLEAN, + asn_DEF_PedestrianBicycleDetect_tags_1, + sizeof(asn_DEF_PedestrianBicycleDetect_tags_1) + /sizeof(asn_DEF_PedestrianBicycleDetect_tags_1[0]), /* 1 */ + asn_DEF_PedestrianBicycleDetect_tags_1, /* Same as above */ + sizeof(asn_DEF_PedestrianBicycleDetect_tags_1) + /sizeof(asn_DEF_PedestrianBicycleDetect_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BOOLEAN_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PersonalAssistive.c b/src/tmx/Asn_J2735/src/r2020/PersonalAssistive.c new file mode 100644 index 000000000..8dd1d07fc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PersonalAssistive.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PersonalAssistive.h" + +int +PersonalAssistive_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 6UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PersonalAssistive_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PersonalAssistive_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 6, 6 } /* (SIZE(6..6,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PersonalAssistive_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PersonalAssistive = { + "PersonalAssistive", + "PersonalAssistive", + &asn_OP_BIT_STRING, + asn_DEF_PersonalAssistive_tags_1, + sizeof(asn_DEF_PersonalAssistive_tags_1) + /sizeof(asn_DEF_PersonalAssistive_tags_1[0]), /* 1 */ + asn_DEF_PersonalAssistive_tags_1, /* Same as above */ + sizeof(asn_DEF_PersonalAssistive_tags_1) + /sizeof(asn_DEF_PersonalAssistive_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PersonalAssistive_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PersonalAssistive_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PersonalAssistive_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PersonalClusterRadius.c b/src/tmx/Asn_J2735/src/r2020/PersonalClusterRadius.c new file mode 100644 index 000000000..fc8d514cc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PersonalClusterRadius.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PersonalClusterRadius.h" + +int +PersonalClusterRadius_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 100L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PersonalClusterRadius_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..100) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PersonalClusterRadius_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PersonalClusterRadius_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PersonalClusterRadius = { + "PersonalClusterRadius", + "PersonalClusterRadius", + &asn_OP_NativeInteger, + asn_DEF_PersonalClusterRadius_tags_1, + sizeof(asn_DEF_PersonalClusterRadius_tags_1) + /sizeof(asn_DEF_PersonalClusterRadius_tags_1[0]), /* 1 */ + asn_DEF_PersonalClusterRadius_tags_1, /* Same as above */ + sizeof(asn_DEF_PersonalClusterRadius_tags_1) + /sizeof(asn_DEF_PersonalClusterRadius_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PersonalClusterRadius_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PersonalClusterRadius_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PersonalClusterRadius_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PersonalCrossingInProgress.c b/src/tmx/Asn_J2735/src/r2020/PersonalCrossingInProgress.c new file mode 100644 index 000000000..4ab2aac6e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PersonalCrossingInProgress.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PersonalCrossingInProgress.h" + +/* + * This type is implemented using BOOLEAN, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_PersonalCrossingInProgress_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PersonalCrossingInProgress = { + "PersonalCrossingInProgress", + "PersonalCrossingInProgress", + &asn_OP_BOOLEAN, + asn_DEF_PersonalCrossingInProgress_tags_1, + sizeof(asn_DEF_PersonalCrossingInProgress_tags_1) + /sizeof(asn_DEF_PersonalCrossingInProgress_tags_1[0]), /* 1 */ + asn_DEF_PersonalCrossingInProgress_tags_1, /* Same as above */ + sizeof(asn_DEF_PersonalCrossingInProgress_tags_1) + /sizeof(asn_DEF_PersonalCrossingInProgress_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BOOLEAN_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PersonalCrossingRequest.c b/src/tmx/Asn_J2735/src/r2020/PersonalCrossingRequest.c new file mode 100644 index 000000000..14bbf5e63 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PersonalCrossingRequest.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PersonalCrossingRequest.h" + +/* + * This type is implemented using BOOLEAN, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_PersonalCrossingRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PersonalCrossingRequest = { + "PersonalCrossingRequest", + "PersonalCrossingRequest", + &asn_OP_BOOLEAN, + asn_DEF_PersonalCrossingRequest_tags_1, + sizeof(asn_DEF_PersonalCrossingRequest_tags_1) + /sizeof(asn_DEF_PersonalCrossingRequest_tags_1[0]), /* 1 */ + asn_DEF_PersonalCrossingRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_PersonalCrossingRequest_tags_1) + /sizeof(asn_DEF_PersonalCrossingRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BOOLEAN_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PersonalDeviceUsageState.c b/src/tmx/Asn_J2735/src/r2020/PersonalDeviceUsageState.c new file mode 100644 index 000000000..16782cc50 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PersonalDeviceUsageState.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PersonalDeviceUsageState.h" + +int +PersonalDeviceUsageState_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 9UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PersonalDeviceUsageState_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PersonalDeviceUsageState_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 9, 9 } /* (SIZE(9..9,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PersonalDeviceUsageState_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PersonalDeviceUsageState = { + "PersonalDeviceUsageState", + "PersonalDeviceUsageState", + &asn_OP_BIT_STRING, + asn_DEF_PersonalDeviceUsageState_tags_1, + sizeof(asn_DEF_PersonalDeviceUsageState_tags_1) + /sizeof(asn_DEF_PersonalDeviceUsageState_tags_1[0]), /* 1 */ + asn_DEF_PersonalDeviceUsageState_tags_1, /* Same as above */ + sizeof(asn_DEF_PersonalDeviceUsageState_tags_1) + /sizeof(asn_DEF_PersonalDeviceUsageState_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PersonalDeviceUsageState_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PersonalDeviceUsageState_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PersonalDeviceUsageState_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PersonalDeviceUserType.c b/src/tmx/Asn_J2735/src/r2020/PersonalDeviceUserType.c new file mode 100644 index 000000000..93fc96e33 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PersonalDeviceUserType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PersonalDeviceUserType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PersonalDeviceUserType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PersonalDeviceUserType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_PersonalDeviceUserType_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 11, "aPEDESTRIAN" }, + { 2, 13, "aPEDALCYCLIST" }, + { 3, 19, "aPUBLICSAFETYWORKER" }, + { 4, 8, "anANIMAL" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PersonalDeviceUserType_enum2value_1[] = { + 2, /* aPEDALCYCLIST(2) */ + 1, /* aPEDESTRIAN(1) */ + 3, /* aPUBLICSAFETYWORKER(3) */ + 4, /* anANIMAL(4) */ + 0 /* unavailable(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PersonalDeviceUserType_specs_1 = { + asn_MAP_PersonalDeviceUserType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PersonalDeviceUserType_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PersonalDeviceUserType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PersonalDeviceUserType = { + "PersonalDeviceUserType", + "PersonalDeviceUserType", + &asn_OP_NativeEnumerated, + asn_DEF_PersonalDeviceUserType_tags_1, + sizeof(asn_DEF_PersonalDeviceUserType_tags_1) + /sizeof(asn_DEF_PersonalDeviceUserType_tags_1[0]), /* 1 */ + asn_DEF_PersonalDeviceUserType_tags_1, /* Same as above */ + sizeof(asn_DEF_PersonalDeviceUserType_tags_1) + /sizeof(asn_DEF_PersonalDeviceUserType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PersonalDeviceUserType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PersonalDeviceUserType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PersonalDeviceUserType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PersonalSafetyMessage.c b/src/tmx/Asn_J2735/src/r2020/PersonalSafetyMessage.c new file mode 100644 index 000000000..df6d55396 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PersonalSafetyMessage.c @@ -0,0 +1,621 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PersonalSafetyMessage.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_27 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_27 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_27[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_PersonalSafetyMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_27[] = { + (ASN_TAG_CLASS_CONTEXT | (25 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_27 = { + sizeof(struct PersonalSafetyMessage__regional), + offsetof(struct PersonalSafetyMessage__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_27 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_27, + sizeof(asn_DEF_regional_tags_27) + /sizeof(asn_DEF_regional_tags_27[0]) - 1, /* 1 */ + asn_DEF_regional_tags_27, /* Same as above */ + sizeof(asn_DEF_regional_tags_27) + /sizeof(asn_DEF_regional_tags_27[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_27, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_27, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_27, + 1, /* Single element */ + &asn_SPC_regional_specs_27 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_PersonalSafetyMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PersonalSafetyMessage, basicType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PersonalDeviceUserType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "basicType" + }, + { ATF_NOFLAGS, 0, offsetof(struct PersonalSafetyMessage, secMark), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "secMark" + }, + { ATF_NOFLAGS, 0, offsetof(struct PersonalSafetyMessage, msgCnt), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgCnt" + }, + { ATF_NOFLAGS, 0, offsetof(struct PersonalSafetyMessage, id), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TemporaryID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct PersonalSafetyMessage, position), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Position3D, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "position" + }, + { ATF_NOFLAGS, 0, offsetof(struct PersonalSafetyMessage, accuracy), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PositionalAccuracy, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accuracy" + }, + { ATF_NOFLAGS, 0, offsetof(struct PersonalSafetyMessage, speed), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Velocity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed" + }, + { ATF_NOFLAGS, 0, offsetof(struct PersonalSafetyMessage, heading), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Heading, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "heading" + }, + { ATF_POINTER, 18, offsetof(struct PersonalSafetyMessage, accelSet), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationSet4Way, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accelSet" + }, + { ATF_POINTER, 17, offsetof(struct PersonalSafetyMessage, pathHistory), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PathHistory, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pathHistory" + }, + { ATF_POINTER, 16, offsetof(struct PersonalSafetyMessage, pathPrediction), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PathPrediction, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pathPrediction" + }, + { ATF_POINTER, 15, offsetof(struct PersonalSafetyMessage, propulsion), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_PropelledInformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "propulsion" + }, + { ATF_POINTER, 14, offsetof(struct PersonalSafetyMessage, useState), + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PersonalDeviceUsageState, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "useState" + }, + { ATF_POINTER, 13, offsetof(struct PersonalSafetyMessage, crossRequest), + (ASN_TAG_CLASS_CONTEXT | (13 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PersonalCrossingRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "crossRequest" + }, + { ATF_POINTER, 12, offsetof(struct PersonalSafetyMessage, crossState), + (ASN_TAG_CLASS_CONTEXT | (14 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PersonalCrossingInProgress, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "crossState" + }, + { ATF_POINTER, 11, offsetof(struct PersonalSafetyMessage, clusterSize), + (ASN_TAG_CLASS_CONTEXT | (15 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NumberOfParticipantsInCluster, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "clusterSize" + }, + { ATF_POINTER, 10, offsetof(struct PersonalSafetyMessage, clusterRadius), + (ASN_TAG_CLASS_CONTEXT | (16 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PersonalClusterRadius, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "clusterRadius" + }, + { ATF_POINTER, 9, offsetof(struct PersonalSafetyMessage, eventResponderType), + (ASN_TAG_CLASS_CONTEXT | (17 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PublicSafetyEventResponderWorkerType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eventResponderType" + }, + { ATF_POINTER, 8, offsetof(struct PersonalSafetyMessage, activityType), + (ASN_TAG_CLASS_CONTEXT | (18 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PublicSafetyAndRoadWorkerActivity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "activityType" + }, + { ATF_POINTER, 7, offsetof(struct PersonalSafetyMessage, activitySubType), + (ASN_TAG_CLASS_CONTEXT | (19 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PublicSafetyDirectingTrafficSubType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "activitySubType" + }, + { ATF_POINTER, 6, offsetof(struct PersonalSafetyMessage, assistType), + (ASN_TAG_CLASS_CONTEXT | (20 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PersonalAssistive, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "assistType" + }, + { ATF_POINTER, 5, offsetof(struct PersonalSafetyMessage, sizing), + (ASN_TAG_CLASS_CONTEXT | (21 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UserSizeAndBehaviour, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sizing" + }, + { ATF_POINTER, 4, offsetof(struct PersonalSafetyMessage, attachment), + (ASN_TAG_CLASS_CONTEXT | (22 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Attachment, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "attachment" + }, + { ATF_POINTER, 3, offsetof(struct PersonalSafetyMessage, attachmentRadius), + (ASN_TAG_CLASS_CONTEXT | (23 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AttachmentRadius, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "attachmentRadius" + }, + { ATF_POINTER, 2, offsetof(struct PersonalSafetyMessage, animalType), + (ASN_TAG_CLASS_CONTEXT | (24 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AnimalType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "animalType" + }, + { ATF_POINTER, 1, offsetof(struct PersonalSafetyMessage, regional), + (ASN_TAG_CLASS_CONTEXT | (25 << 2)), + 0, + &asn_DEF_regional_27, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_27, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_27, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_PersonalSafetyMessage_oms_1[] = { 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }; +static const ber_tlv_tag_t asn_DEF_PersonalSafetyMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PersonalSafetyMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* basicType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* secMark */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* msgCnt */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* position */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* accuracy */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* speed */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* heading */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* accelSet */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* pathHistory */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* pathPrediction */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* propulsion */ + { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* useState */ + { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* crossRequest */ + { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* crossState */ + { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* clusterSize */ + { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* clusterRadius */ + { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* eventResponderType */ + { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* activityType */ + { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* activitySubType */ + { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* assistType */ + { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 }, /* sizing */ + { (ASN_TAG_CLASS_CONTEXT | (22 << 2)), 22, 0, 0 }, /* attachment */ + { (ASN_TAG_CLASS_CONTEXT | (23 << 2)), 23, 0, 0 }, /* attachmentRadius */ + { (ASN_TAG_CLASS_CONTEXT | (24 << 2)), 24, 0, 0 }, /* animalType */ + { (ASN_TAG_CLASS_CONTEXT | (25 << 2)), 25, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PersonalSafetyMessage_specs_1 = { + sizeof(struct PersonalSafetyMessage), + offsetof(struct PersonalSafetyMessage, _asn_ctx), + asn_MAP_PersonalSafetyMessage_tag2el_1, + 26, /* Count of tags in the map */ + asn_MAP_PersonalSafetyMessage_oms_1, /* Optional members */ + 18, 0, /* Root/Additions */ + 26, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PersonalSafetyMessage = { + "PersonalSafetyMessage", + "PersonalSafetyMessage", + &asn_OP_SEQUENCE, + asn_DEF_PersonalSafetyMessage_tags_1, + sizeof(asn_DEF_PersonalSafetyMessage_tags_1) + /sizeof(asn_DEF_PersonalSafetyMessage_tags_1[0]), /* 1 */ + asn_DEF_PersonalSafetyMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_PersonalSafetyMessage_tags_1) + /sizeof(asn_DEF_PersonalSafetyMessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PersonalSafetyMessage_1, + 26, /* Elements count */ + &asn_SPC_PersonalSafetyMessage_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PitchDetected.c b/src/tmx/Asn_J2735/src/r2020/PitchDetected.c new file mode 100644 index 000000000..531398fb6 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PitchDetected.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "PitchDetected.h" + +int +PitchDetected_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -7200 && value <= 7200)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_PitchDetected_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-7200..7200) */, + -1}; +asn_per_constraints_t asn_PER_type_PitchDetected_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, -7200, 7200 } /* (-7200..7200) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PitchDetected_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PitchDetected = { + "PitchDetected", + "PitchDetected", + &asn_OP_NativeInteger, + asn_DEF_PitchDetected_tags_1, + sizeof(asn_DEF_PitchDetected_tags_1) + /sizeof(asn_DEF_PitchDetected_tags_1[0]), /* 1 */ + asn_DEF_PitchDetected_tags_1, /* Same as above */ + sizeof(asn_DEF_PitchDetected_tags_1) + /sizeof(asn_DEF_PitchDetected_tags_1[0]), /* 1 */ + { &asn_OER_type_PitchDetected_constr_1, &asn_PER_type_PitchDetected_constr_1, PitchDetected_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PitchRate.c b/src/tmx/Asn_J2735/src/r2020/PitchRate.c new file mode 100644 index 000000000..368ba352d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PitchRate.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "PitchRate.h" + +int +PitchRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32767 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_PitchRate_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-32767..32767) */, + -1}; +asn_per_constraints_t asn_PER_type_PitchRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32767, 32767 } /* (-32767..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PitchRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PitchRate = { + "PitchRate", + "PitchRate", + &asn_OP_NativeInteger, + asn_DEF_PitchRate_tags_1, + sizeof(asn_DEF_PitchRate_tags_1) + /sizeof(asn_DEF_PitchRate_tags_1[0]), /* 1 */ + asn_DEF_PitchRate_tags_1, /* Same as above */ + sizeof(asn_DEF_PitchRate_tags_1) + /sizeof(asn_DEF_PitchRate_tags_1[0]), /* 1 */ + { &asn_OER_type_PitchRate_constr_1, &asn_PER_type_PitchRate_constr_1, PitchRate_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PitchRateConfidence.c b/src/tmx/Asn_J2735/src/r2020/PitchRateConfidence.c new file mode 100644 index 000000000..d510e4c1f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PitchRateConfidence.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "PitchRateConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_PitchRateConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_PitchRateConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_PitchRateConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 13, "degSec-100-00" }, + { 2, 13, "degSec-010-00" }, + { 3, 13, "degSec-005-00" }, + { 4, 13, "degSec-001-00" }, + { 5, 13, "degSec-000-10" }, + { 6, 13, "degSec-000-05" }, + { 7, 13, "degSec-000-01" } +}; +static const unsigned int asn_MAP_PitchRateConfidence_enum2value_1[] = { + 7, /* degSec-000-01(7) */ + 6, /* degSec-000-05(6) */ + 5, /* degSec-000-10(5) */ + 4, /* degSec-001-00(4) */ + 3, /* degSec-005-00(3) */ + 2, /* degSec-010-00(2) */ + 1, /* degSec-100-00(1) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_PitchRateConfidence_specs_1 = { + asn_MAP_PitchRateConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PitchRateConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PitchRateConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PitchRateConfidence = { + "PitchRateConfidence", + "PitchRateConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_PitchRateConfidence_tags_1, + sizeof(asn_DEF_PitchRateConfidence_tags_1) + /sizeof(asn_DEF_PitchRateConfidence_tags_1[0]), /* 1 */ + asn_DEF_PitchRateConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_PitchRateConfidence_tags_1) + /sizeof(asn_DEF_PitchRateConfidence_tags_1[0]), /* 1 */ + { &asn_OER_type_PitchRateConfidence_constr_1, &asn_PER_type_PitchRateConfidence_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PitchRateConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PivotPointDescription.c b/src/tmx/Asn_J2735/src/r2020/PivotPointDescription.c new file mode 100644 index 000000000..c5692672b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PivotPointDescription.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PivotPointDescription.h" + +asn_TYPE_member_t asn_MBR_PivotPointDescription_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PivotPointDescription, pivotOffset), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pivotOffset" + }, + { ATF_NOFLAGS, 0, offsetof(struct PivotPointDescription, pivotAngle), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_Angle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pivotAngle" + }, + { ATF_NOFLAGS, 0, offsetof(struct PivotPointDescription, pivots), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PivotingAllowed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pivots" + }, +}; +static const ber_tlv_tag_t asn_DEF_PivotPointDescription_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PivotPointDescription_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pivotOffset */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pivotAngle */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pivots */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PivotPointDescription_specs_1 = { + sizeof(struct PivotPointDescription), + offsetof(struct PivotPointDescription, _asn_ctx), + asn_MAP_PivotPointDescription_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PivotPointDescription = { + "PivotPointDescription", + "PivotPointDescription", + &asn_OP_SEQUENCE, + asn_DEF_PivotPointDescription_tags_1, + sizeof(asn_DEF_PivotPointDescription_tags_1) + /sizeof(asn_DEF_PivotPointDescription_tags_1[0]), /* 1 */ + asn_DEF_PivotPointDescription_tags_1, /* Same as above */ + sizeof(asn_DEF_PivotPointDescription_tags_1) + /sizeof(asn_DEF_PivotPointDescription_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PivotPointDescription_1, + 3, /* Elements count */ + &asn_SPC_PivotPointDescription_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PivotingAllowed.c b/src/tmx/Asn_J2735/src/r2020/PivotingAllowed.c new file mode 100644 index 000000000..35c0c4dee --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PivotingAllowed.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PivotingAllowed.h" + +/* + * This type is implemented using BOOLEAN, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_PivotingAllowed_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PivotingAllowed = { + "PivotingAllowed", + "PivotingAllowed", + &asn_OP_BOOLEAN, + asn_DEF_PivotingAllowed_tags_1, + sizeof(asn_DEF_PivotingAllowed_tags_1) + /sizeof(asn_DEF_PivotingAllowed_tags_1[0]), /* 1 */ + asn_DEF_PivotingAllowed_tags_1, /* Same as above */ + sizeof(asn_DEF_PivotingAllowed_tags_1) + /sizeof(asn_DEF_PivotingAllowed_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BOOLEAN_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Point.c b/src/tmx/Asn_J2735/src/r2020/Point.c new file mode 100644 index 000000000..3b58c196d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Point.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "Point.h" + +asn_TYPE_member_t asn_MBR_Point_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Point, x), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "x" + }, + { ATF_NOFLAGS, 0, offsetof(struct Point, y), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "y" + }, + { ATF_POINTER, 1, offsetof(struct Point, z), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "z" + }, + { ATF_NOFLAGS, 0, offsetof(struct Point, width), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "width" + }, +}; +static const int asn_MAP_Point_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Point_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Point_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* x */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* y */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* z */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* width */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Point_specs_1 = { + sizeof(struct Point), + offsetof(struct Point, _asn_ctx), + asn_MAP_Point_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_Point_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Point = { + "Point", + "Point", + &asn_OP_SEQUENCE, + asn_DEF_Point_tags_1, + sizeof(asn_DEF_Point_tags_1) + /sizeof(asn_DEF_Point_tags_1[0]), /* 1 */ + asn_DEF_Point_tags_1, /* Same as above */ + sizeof(asn_DEF_Point_tags_1) + /sizeof(asn_DEF_Point_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Point_1, + 4, /* Elements count */ + &asn_SPC_Point_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Position3D-addGrpB.c b/src/tmx/Asn_J2735/src/r2020/Position3D-addGrpB.c new file mode 100644 index 000000000..d54f7cd15 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Position3D-addGrpB.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Position3D-addGrpB.h" + +asn_TYPE_member_t asn_MBR_Position3D_addGrpB_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Position3D_addGrpB, latitude), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LatitudeDMS2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "latitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct Position3D_addGrpB, longitude), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LongitudeDMS2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "longitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct Position3D_addGrpB, elevation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AddGrpB_Elevation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elevation" + }, +}; +static const ber_tlv_tag_t asn_DEF_Position3D_addGrpB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Position3D_addGrpB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* latitude */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* longitude */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* elevation */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Position3D_addGrpB_specs_1 = { + sizeof(struct Position3D_addGrpB), + offsetof(struct Position3D_addGrpB, _asn_ctx), + asn_MAP_Position3D_addGrpB_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Position3D_addGrpB = { + "Position3D-addGrpB", + "Position3D-addGrpB", + &asn_OP_SEQUENCE, + asn_DEF_Position3D_addGrpB_tags_1, + sizeof(asn_DEF_Position3D_addGrpB_tags_1) + /sizeof(asn_DEF_Position3D_addGrpB_tags_1[0]), /* 1 */ + asn_DEF_Position3D_addGrpB_tags_1, /* Same as above */ + sizeof(asn_DEF_Position3D_addGrpB_tags_1) + /sizeof(asn_DEF_Position3D_addGrpB_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Position3D_addGrpB_1, + 3, /* Elements count */ + &asn_SPC_Position3D_addGrpB_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Position3D-addGrpC.c b/src/tmx/Asn_J2735/src/r2020/Position3D-addGrpC.c new file mode 100644 index 000000000..c2fd63a9c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Position3D-addGrpC.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Position3D-addGrpC.h" + +asn_TYPE_member_t asn_MBR_Position3D_addGrpC_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Position3D_addGrpC, altitude), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Altitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "altitude" + }, +}; +static const ber_tlv_tag_t asn_DEF_Position3D_addGrpC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Position3D_addGrpC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* altitude */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Position3D_addGrpC_specs_1 = { + sizeof(struct Position3D_addGrpC), + offsetof(struct Position3D_addGrpC, _asn_ctx), + asn_MAP_Position3D_addGrpC_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Position3D_addGrpC = { + "Position3D-addGrpC", + "Position3D-addGrpC", + &asn_OP_SEQUENCE, + asn_DEF_Position3D_addGrpC_tags_1, + sizeof(asn_DEF_Position3D_addGrpC_tags_1) + /sizeof(asn_DEF_Position3D_addGrpC_tags_1[0]), /* 1 */ + asn_DEF_Position3D_addGrpC_tags_1, /* Same as above */ + sizeof(asn_DEF_Position3D_addGrpC_tags_1) + /sizeof(asn_DEF_Position3D_addGrpC_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Position3D_addGrpC_1, + 1, /* Elements count */ + &asn_SPC_Position3D_addGrpC_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Position3D-addGrpCarma.c b/src/tmx/Asn_J2735/src/r2020/Position3D-addGrpCarma.c new file mode 100644 index 000000000..6fceca342 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Position3D-addGrpCarma.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpCarma" + * found in "J2735_201603_2022-11-21.asn" + * `asn1c -fcompound-names -D ../include/generated/` + */ + +#include "Position3D-addGrpCarma.h" + +asn_TYPE_member_t asn_MBR_Position3D_addGrpCarma_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Position3D_addGrpCarma, lat), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, + { ATF_NOFLAGS, 0, offsetof(struct Position3D_addGrpCarma, Long), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "long" + }, + { ATF_POINTER, 1, offsetof(struct Position3D_addGrpCarma, elevation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_Elevation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elevation" + }, +}; +static const int asn_MAP_Position3D_addGrpCarma_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Position3D_addGrpCarma_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Position3D_addGrpCarma_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lat */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* long */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* elevation */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Position3D_addGrpCarma_specs_1 = { + sizeof(struct Position3D_addGrpCarma), + offsetof(struct Position3D_addGrpCarma, _asn_ctx), + asn_MAP_Position3D_addGrpCarma_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_Position3D_addGrpCarma_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Position3D_addGrpCarma = { + "Position3D-addGrpCarma", + "Position3D-addGrpCarma", + &asn_OP_SEQUENCE, + asn_DEF_Position3D_addGrpCarma_tags_1, + sizeof(asn_DEF_Position3D_addGrpCarma_tags_1) + /sizeof(asn_DEF_Position3D_addGrpCarma_tags_1[0]), /* 1 */ + asn_DEF_Position3D_addGrpCarma_tags_1, /* Same as above */ + sizeof(asn_DEF_Position3D_addGrpCarma_tags_1) + /sizeof(asn_DEF_Position3D_addGrpCarma_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Position3D_addGrpCarma_1, + 3, /* Elements count */ + &asn_SPC_Position3D_addGrpCarma_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Position3D.c b/src/tmx/Asn_J2735/src/r2020/Position3D.c new file mode 100644 index 000000000..42c5406f9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Position3D.c @@ -0,0 +1,225 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Position3D.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_Position3D, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_5 = { + sizeof(struct Position3D__regional), + offsetof(struct Position3D__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_5 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_5, + sizeof(asn_DEF_regional_tags_5) + /sizeof(asn_DEF_regional_tags_5[0]) - 1, /* 1 */ + asn_DEF_regional_tags_5, /* Same as above */ + sizeof(asn_DEF_regional_tags_5) + /sizeof(asn_DEF_regional_tags_5[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_5, + 1, /* Single element */ + &asn_SPC_regional_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Position3D_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Position3D, lat), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lat" + }, + { ATF_NOFLAGS, 0, offsetof(struct Position3D, Long), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "long" + }, + { ATF_POINTER, 2, offsetof(struct Position3D, elevation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_Elevation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elevation" + }, + { ATF_POINTER, 1, offsetof(struct Position3D, regional), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_regional_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_Position3D_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_Position3D_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Position3D_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lat */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* long */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* elevation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Position3D_specs_1 = { + sizeof(struct Position3D), + offsetof(struct Position3D, _asn_ctx), + asn_MAP_Position3D_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_Position3D_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Position3D = { + "Position3D", + "Position3D", + &asn_OP_SEQUENCE, + asn_DEF_Position3D_tags_1, + sizeof(asn_DEF_Position3D_tags_1) + /sizeof(asn_DEF_Position3D_tags_1[0]), /* 1 */ + asn_DEF_Position3D_tags_1, /* Same as above */ + sizeof(asn_DEF_Position3D_tags_1) + /sizeof(asn_DEF_Position3D_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Position3D_1, + 4, /* Elements count */ + &asn_SPC_Position3D_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PositionConfidence.c b/src/tmx/Asn_J2735/src/r2020/PositionConfidence.c new file mode 100644 index 000000000..d4aee42c0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PositionConfidence.c @@ -0,0 +1,96 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PositionConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PositionConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PositionConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_PositionConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 5, "a500m" }, + { 2, 5, "a200m" }, + { 3, 5, "a100m" }, + { 4, 4, "a50m" }, + { 5, 4, "a20m" }, + { 6, 4, "a10m" }, + { 7, 3, "a5m" }, + { 8, 3, "a2m" }, + { 9, 3, "a1m" }, + { 10, 5, "a50cm" }, + { 11, 5, "a20cm" }, + { 12, 5, "a10cm" }, + { 13, 4, "a5cm" }, + { 14, 4, "a2cm" }, + { 15, 4, "a1cm" } +}; +static const unsigned int asn_MAP_PositionConfidence_enum2value_1[] = { + 3, /* a100m(3) */ + 12, /* a10cm(12) */ + 6, /* a10m(6) */ + 15, /* a1cm(15) */ + 9, /* a1m(9) */ + 2, /* a200m(2) */ + 11, /* a20cm(11) */ + 5, /* a20m(5) */ + 14, /* a2cm(14) */ + 8, /* a2m(8) */ + 1, /* a500m(1) */ + 10, /* a50cm(10) */ + 4, /* a50m(4) */ + 13, /* a5cm(13) */ + 7, /* a5m(7) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_PositionConfidence_specs_1 = { + asn_MAP_PositionConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PositionConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PositionConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PositionConfidence = { + "PositionConfidence", + "PositionConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_PositionConfidence_tags_1, + sizeof(asn_DEF_PositionConfidence_tags_1) + /sizeof(asn_DEF_PositionConfidence_tags_1[0]), /* 1 */ + asn_DEF_PositionConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_PositionConfidence_tags_1) + /sizeof(asn_DEF_PositionConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PositionConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PositionConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PositionConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PositionConfidenceSet.c b/src/tmx/Asn_J2735/src/r2020/PositionConfidenceSet.c new file mode 100644 index 000000000..9b7b681e2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PositionConfidenceSet.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PositionConfidenceSet.h" + +asn_TYPE_member_t asn_MBR_PositionConfidenceSet_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PositionConfidenceSet, pos), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PositionConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pos" + }, + { ATF_NOFLAGS, 0, offsetof(struct PositionConfidenceSet, elevation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ElevationConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elevation" + }, +}; +static const ber_tlv_tag_t asn_DEF_PositionConfidenceSet_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PositionConfidenceSet_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pos */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* elevation */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PositionConfidenceSet_specs_1 = { + sizeof(struct PositionConfidenceSet), + offsetof(struct PositionConfidenceSet, _asn_ctx), + asn_MAP_PositionConfidenceSet_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PositionConfidenceSet = { + "PositionConfidenceSet", + "PositionConfidenceSet", + &asn_OP_SEQUENCE, + asn_DEF_PositionConfidenceSet_tags_1, + sizeof(asn_DEF_PositionConfidenceSet_tags_1) + /sizeof(asn_DEF_PositionConfidenceSet_tags_1[0]), /* 1 */ + asn_DEF_PositionConfidenceSet_tags_1, /* Same as above */ + sizeof(asn_DEF_PositionConfidenceSet_tags_1) + /sizeof(asn_DEF_PositionConfidenceSet_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PositionConfidenceSet_1, + 2, /* Elements count */ + &asn_SPC_PositionConfidenceSet_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PositionOffsetXYZ.c b/src/tmx/Asn_J2735/src/r2020/PositionOffsetXYZ.c new file mode 100644 index 000000000..fd2d344d1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PositionOffsetXYZ.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "PositionOffsetXYZ.h" + +asn_TYPE_member_t asn_MBR_PositionOffsetXYZ_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PositionOffsetXYZ, offsetX), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectDistance, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "offsetX" + }, + { ATF_NOFLAGS, 0, offsetof(struct PositionOffsetXYZ, offsetY), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectDistance, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "offsetY" + }, + { ATF_POINTER, 1, offsetof(struct PositionOffsetXYZ, offsetZ), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectDistance, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "offsetZ" + }, +}; +static const int asn_MAP_PositionOffsetXYZ_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_PositionOffsetXYZ_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PositionOffsetXYZ_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* offsetX */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* offsetY */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* offsetZ */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PositionOffsetXYZ_specs_1 = { + sizeof(struct PositionOffsetXYZ), + offsetof(struct PositionOffsetXYZ, _asn_ctx), + asn_MAP_PositionOffsetXYZ_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_PositionOffsetXYZ_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PositionOffsetXYZ = { + "PositionOffsetXYZ", + "PositionOffsetXYZ", + &asn_OP_SEQUENCE, + asn_DEF_PositionOffsetXYZ_tags_1, + sizeof(asn_DEF_PositionOffsetXYZ_tags_1) + /sizeof(asn_DEF_PositionOffsetXYZ_tags_1[0]), /* 1 */ + asn_DEF_PositionOffsetXYZ_tags_1, /* Same as above */ + sizeof(asn_DEF_PositionOffsetXYZ_tags_1) + /sizeof(asn_DEF_PositionOffsetXYZ_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PositionOffsetXYZ_1, + 3, /* Elements count */ + &asn_SPC_PositionOffsetXYZ_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PositionalAccuracy.c b/src/tmx/Asn_J2735/src/r2020/PositionalAccuracy.c new file mode 100644 index 000000000..fd18450ab --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PositionalAccuracy.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PositionalAccuracy.h" + +asn_TYPE_member_t asn_MBR_PositionalAccuracy_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PositionalAccuracy, semiMajor), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SemiMajorAxisAccuracy, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiMajor" + }, + { ATF_NOFLAGS, 0, offsetof(struct PositionalAccuracy, semiMinor), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SemiMinorAxisAccuracy, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiMinor" + }, + { ATF_NOFLAGS, 0, offsetof(struct PositionalAccuracy, orientation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SemiMajorAxisOrientation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "orientation" + }, +}; +static const ber_tlv_tag_t asn_DEF_PositionalAccuracy_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PositionalAccuracy_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* semiMajor */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* semiMinor */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* orientation */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PositionalAccuracy_specs_1 = { + sizeof(struct PositionalAccuracy), + offsetof(struct PositionalAccuracy, _asn_ctx), + asn_MAP_PositionalAccuracy_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PositionalAccuracy = { + "PositionalAccuracy", + "PositionalAccuracy", + &asn_OP_SEQUENCE, + asn_DEF_PositionalAccuracy_tags_1, + sizeof(asn_DEF_PositionalAccuracy_tags_1) + /sizeof(asn_DEF_PositionalAccuracy_tags_1[0]), /* 1 */ + asn_DEF_PositionalAccuracy_tags_1, /* Same as above */ + sizeof(asn_DEF_PositionalAccuracy_tags_1) + /sizeof(asn_DEF_PositionalAccuracy_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PositionalAccuracy_1, + 3, /* Elements count */ + &asn_SPC_PositionalAccuracy_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PreemptPriorityList.c b/src/tmx/Asn_J2735/src/r2020/PreemptPriorityList.c new file mode 100644 index 000000000..bb8044c53 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PreemptPriorityList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PreemptPriorityList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PreemptPriorityList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PreemptPriorityList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_PreemptPriorityList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SignalControlZone, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PreemptPriorityList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_PreemptPriorityList_specs_1 = { + sizeof(struct PreemptPriorityList), + offsetof(struct PreemptPriorityList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PreemptPriorityList = { + "PreemptPriorityList", + "PreemptPriorityList", + &asn_OP_SEQUENCE_OF, + asn_DEF_PreemptPriorityList_tags_1, + sizeof(asn_DEF_PreemptPriorityList_tags_1) + /sizeof(asn_DEF_PreemptPriorityList_tags_1[0]), /* 1 */ + asn_DEF_PreemptPriorityList_tags_1, /* Same as above */ + sizeof(asn_DEF_PreemptPriorityList_tags_1) + /sizeof(asn_DEF_PreemptPriorityList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PreemptPriorityList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PreemptPriorityList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_PreemptPriorityList_1, + 1, /* Single element */ + &asn_SPC_PreemptPriorityList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PrioritizationResponse.c b/src/tmx/Asn_J2735/src/r2020/PrioritizationResponse.c new file mode 100644 index 000000000..486705330 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PrioritizationResponse.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PrioritizationResponse.h" + +asn_TYPE_member_t asn_MBR_PrioritizationResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PrioritizationResponse, stationID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StationID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "stationID" + }, + { ATF_NOFLAGS, 0, offsetof(struct PrioritizationResponse, priorState), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrioritizationResponseStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "priorState" + }, + { ATF_NOFLAGS, 0, offsetof(struct PrioritizationResponse, signalGroup), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignalGroupID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "signalGroup" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrioritizationResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PrioritizationResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* stationID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* priorState */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* signalGroup */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PrioritizationResponse_specs_1 = { + sizeof(struct PrioritizationResponse), + offsetof(struct PrioritizationResponse, _asn_ctx), + asn_MAP_PrioritizationResponse_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PrioritizationResponse = { + "PrioritizationResponse", + "PrioritizationResponse", + &asn_OP_SEQUENCE, + asn_DEF_PrioritizationResponse_tags_1, + sizeof(asn_DEF_PrioritizationResponse_tags_1) + /sizeof(asn_DEF_PrioritizationResponse_tags_1[0]), /* 1 */ + asn_DEF_PrioritizationResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_PrioritizationResponse_tags_1) + /sizeof(asn_DEF_PrioritizationResponse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PrioritizationResponse_1, + 3, /* Elements count */ + &asn_SPC_PrioritizationResponse_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PrioritizationResponseList.c b/src/tmx/Asn_J2735/src/r2020/PrioritizationResponseList.c new file mode 100644 index 000000000..9c11bc103 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PrioritizationResponseList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PrioritizationResponseList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PrioritizationResponseList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..10)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PrioritizationResponseList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 10 } /* (SIZE(1..10)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_PrioritizationResponseList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PrioritizationResponse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrioritizationResponseList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_PrioritizationResponseList_specs_1 = { + sizeof(struct PrioritizationResponseList), + offsetof(struct PrioritizationResponseList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PrioritizationResponseList = { + "PrioritizationResponseList", + "PrioritizationResponseList", + &asn_OP_SEQUENCE_OF, + asn_DEF_PrioritizationResponseList_tags_1, + sizeof(asn_DEF_PrioritizationResponseList_tags_1) + /sizeof(asn_DEF_PrioritizationResponseList_tags_1[0]), /* 1 */ + asn_DEF_PrioritizationResponseList_tags_1, /* Same as above */ + sizeof(asn_DEF_PrioritizationResponseList_tags_1) + /sizeof(asn_DEF_PrioritizationResponseList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PrioritizationResponseList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PrioritizationResponseList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_PrioritizationResponseList_1, + 1, /* Single element */ + &asn_SPC_PrioritizationResponseList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PrioritizationResponseStatus.c b/src/tmx/Asn_J2735/src/r2020/PrioritizationResponseStatus.c new file mode 100644 index 000000000..a6f227eab --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PrioritizationResponseStatus.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PrioritizationResponseStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PrioritizationResponseStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PrioritizationResponseStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_PrioritizationResponseStatus_value2enum_1[] = { + { 0, 7, "unknown" }, + { 1, 9, "requested" }, + { 2, 10, "processing" }, + { 3, 17, "watchOtherTraffic" }, + { 4, 7, "granted" }, + { 5, 8, "rejected" }, + { 6, 11, "maxPresence" }, + { 7, 15, "reserviceLocked" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PrioritizationResponseStatus_enum2value_1[] = { + 4, /* granted(4) */ + 6, /* maxPresence(6) */ + 2, /* processing(2) */ + 5, /* rejected(5) */ + 1, /* requested(1) */ + 7, /* reserviceLocked(7) */ + 0, /* unknown(0) */ + 3 /* watchOtherTraffic(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PrioritizationResponseStatus_specs_1 = { + asn_MAP_PrioritizationResponseStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PrioritizationResponseStatus_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 9, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PrioritizationResponseStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PrioritizationResponseStatus = { + "PrioritizationResponseStatus", + "PrioritizationResponseStatus", + &asn_OP_NativeEnumerated, + asn_DEF_PrioritizationResponseStatus_tags_1, + sizeof(asn_DEF_PrioritizationResponseStatus_tags_1) + /sizeof(asn_DEF_PrioritizationResponseStatus_tags_1[0]), /* 1 */ + asn_DEF_PrioritizationResponseStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_PrioritizationResponseStatus_tags_1) + /sizeof(asn_DEF_PrioritizationResponseStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PrioritizationResponseStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PrioritizationResponseStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PrioritizationResponseStatus_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Priority.c b/src/tmx/Asn_J2735/src/r2020/Priority.c new file mode 100644 index 000000000..184afb7ba --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Priority.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Priority.h" + +int +Priority_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 1UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Priority_constr_1 CC_NOTUSED = { + { 0, 0 }, + 1 /* (SIZE(1..1)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Priority_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Priority_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Priority = { + "Priority", + "Priority", + &asn_OP_OCTET_STRING, + asn_DEF_Priority_tags_1, + sizeof(asn_DEF_Priority_tags_1) + /sizeof(asn_DEF_Priority_tags_1[0]), /* 1 */ + asn_DEF_Priority_tags_1, /* Same as above */ + sizeof(asn_DEF_Priority_tags_1) + /sizeof(asn_DEF_Priority_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Priority_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Priority_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Priority_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PriorityRequestType.c b/src/tmx/Asn_J2735/src/r2020/PriorityRequestType.c new file mode 100644 index 000000000..d1c9f4575 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PriorityRequestType.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PriorityRequestType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PriorityRequestType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PriorityRequestType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_PriorityRequestType_value2enum_1[] = { + { 0, 27, "priorityRequestTypeReserved" }, + { 1, 15, "priorityRequest" }, + { 2, 21, "priorityRequestUpdate" }, + { 3, 20, "priorityCancellation" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PriorityRequestType_enum2value_1[] = { + 3, /* priorityCancellation(3) */ + 1, /* priorityRequest(1) */ + 0, /* priorityRequestTypeReserved(0) */ + 2 /* priorityRequestUpdate(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PriorityRequestType_specs_1 = { + asn_MAP_PriorityRequestType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PriorityRequestType_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PriorityRequestType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PriorityRequestType = { + "PriorityRequestType", + "PriorityRequestType", + &asn_OP_NativeEnumerated, + asn_DEF_PriorityRequestType_tags_1, + sizeof(asn_DEF_PriorityRequestType_tags_1) + /sizeof(asn_DEF_PriorityRequestType_tags_1[0]), /* 1 */ + asn_DEF_PriorityRequestType_tags_1, /* Same as above */ + sizeof(asn_DEF_PriorityRequestType_tags_1) + /sizeof(asn_DEF_PriorityRequestType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PriorityRequestType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PriorityRequestType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PriorityRequestType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PrivilegedEventFlags.c b/src/tmx/Asn_J2735/src/r2020/PrivilegedEventFlags.c new file mode 100644 index 000000000..432937bd5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PrivilegedEventFlags.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PrivilegedEventFlags.h" + +int +PrivilegedEventFlags_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PrivilegedEventFlags_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PrivilegedEventFlags_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PrivilegedEventFlags_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PrivilegedEventFlags = { + "PrivilegedEventFlags", + "PrivilegedEventFlags", + &asn_OP_BIT_STRING, + asn_DEF_PrivilegedEventFlags_tags_1, + sizeof(asn_DEF_PrivilegedEventFlags_tags_1) + /sizeof(asn_DEF_PrivilegedEventFlags_tags_1[0]), /* 1 */ + asn_DEF_PrivilegedEventFlags_tags_1, /* Same as above */ + sizeof(asn_DEF_PrivilegedEventFlags_tags_1) + /sizeof(asn_DEF_PrivilegedEventFlags_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PrivilegedEventFlags_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PrivilegedEventFlags_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PrivilegedEventFlags_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PrivilegedEvents.c b/src/tmx/Asn_J2735/src/r2020/PrivilegedEvents.c new file mode 100644 index 000000000..b1281fe97 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PrivilegedEvents.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PrivilegedEvents.h" + +asn_TYPE_member_t asn_MBR_PrivilegedEvents_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PrivilegedEvents, notUsed), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SSPindex, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "notUsed" + }, + { ATF_NOFLAGS, 0, offsetof(struct PrivilegedEvents, event), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrivilegedEventFlags, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "event" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrivilegedEvents_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PrivilegedEvents_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* notUsed */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* event */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PrivilegedEvents_specs_1 = { + sizeof(struct PrivilegedEvents), + offsetof(struct PrivilegedEvents, _asn_ctx), + asn_MAP_PrivilegedEvents_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivilegedEvents = { + "PrivilegedEvents", + "PrivilegedEvents", + &asn_OP_SEQUENCE, + asn_DEF_PrivilegedEvents_tags_1, + sizeof(asn_DEF_PrivilegedEvents_tags_1) + /sizeof(asn_DEF_PrivilegedEvents_tags_1[0]), /* 1 */ + asn_DEF_PrivilegedEvents_tags_1, /* Same as above */ + sizeof(asn_DEF_PrivilegedEvents_tags_1) + /sizeof(asn_DEF_PrivilegedEvents_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PrivilegedEvents_1, + 2, /* Elements count */ + &asn_SPC_PrivilegedEvents_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ProbeDataManagement.c b/src/tmx/Asn_J2735/src/r2020/ProbeDataManagement.c new file mode 100644 index 000000000..11ba03de3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ProbeDataManagement.c @@ -0,0 +1,467 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ProbeDataManagement.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_term_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_term_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_snapshot_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_snapshot_constr_8 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_13 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_13 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_term_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProbeDataManagement__term, choice.termtime), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TermTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "termtime" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProbeDataManagement__term, choice.termDistance), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TermDistance, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "termDistance" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_term_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* termtime */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* termDistance */ +}; +static asn_CHOICE_specifics_t asn_SPC_term_specs_5 = { + sizeof(struct ProbeDataManagement__term), + offsetof(struct ProbeDataManagement__term, _asn_ctx), + offsetof(struct ProbeDataManagement__term, present), + sizeof(((struct ProbeDataManagement__term *)0)->present), + asn_MAP_term_tag2el_5, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_term_5 = { + "term", + "term", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_term_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_term_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_term_5, + 2, /* Elements count */ + &asn_SPC_term_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_snapshot_8[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProbeDataManagement__snapshot, choice.snapshotTime), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SnapshotTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "snapshotTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProbeDataManagement__snapshot, choice.snapshotDistance), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SnapshotDistance, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "snapshotDistance" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_snapshot_tag2el_8[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* snapshotTime */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* snapshotDistance */ +}; +static asn_CHOICE_specifics_t asn_SPC_snapshot_specs_8 = { + sizeof(struct ProbeDataManagement__snapshot), + offsetof(struct ProbeDataManagement__snapshot, _asn_ctx), + offsetof(struct ProbeDataManagement__snapshot, present), + sizeof(((struct ProbeDataManagement__snapshot *)0)->present), + asn_MAP_snapshot_tag2el_8, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_snapshot_8 = { + "snapshot", + "snapshot", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_snapshot_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_snapshot_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_snapshot_8, + 2, /* Elements count */ + &asn_SPC_snapshot_specs_8 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regional_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_ProbeDataManagement, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_13[] = { + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_13 = { + sizeof(struct ProbeDataManagement__regional), + offsetof(struct ProbeDataManagement__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_13 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_13, + sizeof(asn_DEF_regional_tags_13) + /sizeof(asn_DEF_regional_tags_13[0]) - 1, /* 1 */ + asn_DEF_regional_tags_13, /* Same as above */ + sizeof(asn_DEF_regional_tags_13) + /sizeof(asn_DEF_regional_tags_13[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_13, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_13, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_13, + 1, /* Single element */ + &asn_SPC_regional_specs_13 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProbeDataManagement_1[] = { + { ATF_POINTER, 1, offsetof(struct ProbeDataManagement, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProbeDataManagement, sample), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Sample, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sample" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProbeDataManagement, directions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingSlice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "directions" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProbeDataManagement, term), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_term_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "term" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProbeDataManagement, snapshot), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_snapshot_8, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "snapshot" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProbeDataManagement, txInterval), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SecondOfTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "txInterval" + }, + { ATF_POINTER, 2, offsetof(struct ProbeDataManagement, dataElements), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleStatusRequestList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dataElements" + }, + { ATF_POINTER, 1, offsetof(struct ProbeDataManagement, regional), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + 0, + &asn_DEF_regional_13, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_13, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_13, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_ProbeDataManagement_oms_1[] = { 0, 6, 7 }; +static const ber_tlv_tag_t asn_DEF_ProbeDataManagement_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProbeDataManagement_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sample */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* directions */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* term */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* snapshot */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* txInterval */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* dataElements */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProbeDataManagement_specs_1 = { + sizeof(struct ProbeDataManagement), + offsetof(struct ProbeDataManagement, _asn_ctx), + asn_MAP_ProbeDataManagement_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_ProbeDataManagement_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 8, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProbeDataManagement = { + "ProbeDataManagement", + "ProbeDataManagement", + &asn_OP_SEQUENCE, + asn_DEF_ProbeDataManagement_tags_1, + sizeof(asn_DEF_ProbeDataManagement_tags_1) + /sizeof(asn_DEF_ProbeDataManagement_tags_1[0]), /* 1 */ + asn_DEF_ProbeDataManagement_tags_1, /* Same as above */ + sizeof(asn_DEF_ProbeDataManagement_tags_1) + /sizeof(asn_DEF_ProbeDataManagement_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ProbeDataManagement_1, + 8, /* Elements count */ + &asn_SPC_ProbeDataManagement_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ProbeSegmentNumber.c b/src/tmx/Asn_J2735/src/r2020/ProbeSegmentNumber.c new file mode 100644 index 000000000..ff05f024c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ProbeSegmentNumber.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ProbeSegmentNumber.h" + +int +ProbeSegmentNumber_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ProbeSegmentNumber_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProbeSegmentNumber_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32767 } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ProbeSegmentNumber_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProbeSegmentNumber = { + "ProbeSegmentNumber", + "ProbeSegmentNumber", + &asn_OP_NativeInteger, + asn_DEF_ProbeSegmentNumber_tags_1, + sizeof(asn_DEF_ProbeSegmentNumber_tags_1) + /sizeof(asn_DEF_ProbeSegmentNumber_tags_1[0]), /* 1 */ + asn_DEF_ProbeSegmentNumber_tags_1, /* Same as above */ + sizeof(asn_DEF_ProbeSegmentNumber_tags_1) + /sizeof(asn_DEF_ProbeSegmentNumber_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ProbeSegmentNumber_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProbeSegmentNumber_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ProbeSegmentNumber_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ProbeVehicleData.c b/src/tmx/Asn_J2735/src/r2020/ProbeVehicleData.c new file mode 100644 index 000000000..f256c98ef --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ProbeVehicleData.c @@ -0,0 +1,382 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ProbeVehicleData.h" + +static int +memb_snapshots_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 32UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_snapshots_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_snapshots_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_snapshots_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_snapshots_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_snapshots_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Snapshot, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_snapshots_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_snapshots_specs_7 = { + sizeof(struct ProbeVehicleData__snapshots), + offsetof(struct ProbeVehicleData__snapshots, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_snapshots_7 = { + "snapshots", + "snapshots", + &asn_OP_SEQUENCE_OF, + asn_DEF_snapshots_tags_7, + sizeof(asn_DEF_snapshots_tags_7) + /sizeof(asn_DEF_snapshots_tags_7[0]) - 1, /* 1 */ + asn_DEF_snapshots_tags_7, /* Same as above */ + sizeof(asn_DEF_snapshots_tags_7) + /sizeof(asn_DEF_snapshots_tags_7[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_snapshots_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_snapshots_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_snapshots_7, + 1, /* Single element */ + &asn_SPC_snapshots_specs_7 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regional_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_ProbeVehicleData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_9[] = { + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_9 = { + sizeof(struct ProbeVehicleData__regional), + offsetof(struct ProbeVehicleData__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_9 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_9, + sizeof(asn_DEF_regional_tags_9) + /sizeof(asn_DEF_regional_tags_9[0]) - 1, /* 1 */ + asn_DEF_regional_tags_9, /* Same as above */ + sizeof(asn_DEF_regional_tags_9) + /sizeof(asn_DEF_regional_tags_9[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_9, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_9, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_9, + 1, /* Single element */ + &asn_SPC_regional_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProbeVehicleData_1[] = { + { ATF_POINTER, 3, offsetof(struct ProbeVehicleData, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_POINTER, 2, offsetof(struct ProbeVehicleData, segNum), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProbeSegmentNumber, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "segNum" + }, + { ATF_POINTER, 1, offsetof(struct ProbeVehicleData, probeID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleIdent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "probeID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProbeVehicleData, startVector), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FullPositionVector, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "startVector" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProbeVehicleData, vehicleType), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleClassification, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleType" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProbeVehicleData, snapshots), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + 0, + &asn_DEF_snapshots_7, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_snapshots_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_snapshots_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_snapshots_constraint_1 + }, + 0, 0, /* No default value */ + "snapshots" + }, + { ATF_POINTER, 1, offsetof(struct ProbeVehicleData, regional), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + 0, + &asn_DEF_regional_9, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_9, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_9, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_ProbeVehicleData_oms_1[] = { 0, 1, 2, 6 }; +static const ber_tlv_tag_t asn_DEF_ProbeVehicleData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProbeVehicleData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* segNum */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* probeID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* startVector */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* vehicleType */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* snapshots */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProbeVehicleData_specs_1 = { + sizeof(struct ProbeVehicleData), + offsetof(struct ProbeVehicleData, _asn_ctx), + asn_MAP_ProbeVehicleData_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_ProbeVehicleData_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProbeVehicleData = { + "ProbeVehicleData", + "ProbeVehicleData", + &asn_OP_SEQUENCE, + asn_DEF_ProbeVehicleData_tags_1, + sizeof(asn_DEF_ProbeVehicleData_tags_1) + /sizeof(asn_DEF_ProbeVehicleData_tags_1[0]), /* 1 */ + asn_DEF_ProbeVehicleData_tags_1, /* Same as above */ + sizeof(asn_DEF_ProbeVehicleData_tags_1) + /sizeof(asn_DEF_ProbeVehicleData_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ProbeVehicleData_1, + 7, /* Elements count */ + &asn_SPC_ProbeVehicleData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PropelledInformation.c b/src/tmx/Asn_J2735/src/r2020/PropelledInformation.c new file mode 100644 index 000000000..9a6135a9f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PropelledInformation.c @@ -0,0 +1,111 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PropelledInformation.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PropelledInformation_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PropelledInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_PropelledInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PropelledInformation, choice.human), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HumanPropelledType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "human" + }, + { ATF_NOFLAGS, 0, offsetof(struct PropelledInformation, choice.animal), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AnimalPropelledType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "animal" + }, + { ATF_NOFLAGS, 0, offsetof(struct PropelledInformation, choice.motor), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MotorizedPropelledType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "motor" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_PropelledInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* human */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* animal */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* motor */ +}; +asn_CHOICE_specifics_t asn_SPC_PropelledInformation_specs_1 = { + sizeof(struct PropelledInformation), + offsetof(struct PropelledInformation, _asn_ctx), + offsetof(struct PropelledInformation, present), + sizeof(((struct PropelledInformation *)0)->present), + asn_MAP_PropelledInformation_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_PropelledInformation = { + "PropelledInformation", + "PropelledInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PropelledInformation_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PropelledInformation_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_PropelledInformation_1, + 3, /* Elements count */ + &asn_SPC_PropelledInformation_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PublicSafetyAndRoadWorkerActivity.c b/src/tmx/Asn_J2735/src/r2020/PublicSafetyAndRoadWorkerActivity.c new file mode 100644 index 000000000..200f22534 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PublicSafetyAndRoadWorkerActivity.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PublicSafetyAndRoadWorkerActivity.h" + +int +PublicSafetyAndRoadWorkerActivity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 6UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PublicSafetyAndRoadWorkerActivity_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PublicSafetyAndRoadWorkerActivity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 6, 6 } /* (SIZE(6..6,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PublicSafetyAndRoadWorkerActivity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PublicSafetyAndRoadWorkerActivity = { + "PublicSafetyAndRoadWorkerActivity", + "PublicSafetyAndRoadWorkerActivity", + &asn_OP_BIT_STRING, + asn_DEF_PublicSafetyAndRoadWorkerActivity_tags_1, + sizeof(asn_DEF_PublicSafetyAndRoadWorkerActivity_tags_1) + /sizeof(asn_DEF_PublicSafetyAndRoadWorkerActivity_tags_1[0]), /* 1 */ + asn_DEF_PublicSafetyAndRoadWorkerActivity_tags_1, /* Same as above */ + sizeof(asn_DEF_PublicSafetyAndRoadWorkerActivity_tags_1) + /sizeof(asn_DEF_PublicSafetyAndRoadWorkerActivity_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PublicSafetyAndRoadWorkerActivity_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PublicSafetyAndRoadWorkerActivity_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PublicSafetyAndRoadWorkerActivity_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PublicSafetyDirectingTrafficSubType.c b/src/tmx/Asn_J2735/src/r2020/PublicSafetyDirectingTrafficSubType.c new file mode 100644 index 000000000..124648afb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PublicSafetyDirectingTrafficSubType.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PublicSafetyDirectingTrafficSubType.h" + +int +PublicSafetyDirectingTrafficSubType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 7UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PublicSafetyDirectingTrafficSubType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PublicSafetyDirectingTrafficSubType_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 7, 7 } /* (SIZE(7..7,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PublicSafetyDirectingTrafficSubType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PublicSafetyDirectingTrafficSubType = { + "PublicSafetyDirectingTrafficSubType", + "PublicSafetyDirectingTrafficSubType", + &asn_OP_BIT_STRING, + asn_DEF_PublicSafetyDirectingTrafficSubType_tags_1, + sizeof(asn_DEF_PublicSafetyDirectingTrafficSubType_tags_1) + /sizeof(asn_DEF_PublicSafetyDirectingTrafficSubType_tags_1[0]), /* 1 */ + asn_DEF_PublicSafetyDirectingTrafficSubType_tags_1, /* Same as above */ + sizeof(asn_DEF_PublicSafetyDirectingTrafficSubType_tags_1) + /sizeof(asn_DEF_PublicSafetyDirectingTrafficSubType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PublicSafetyDirectingTrafficSubType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PublicSafetyDirectingTrafficSubType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PublicSafetyDirectingTrafficSubType_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/PublicSafetyEventResponderWorkerType.c b/src/tmx/Asn_J2735/src/r2020/PublicSafetyEventResponderWorkerType.c new file mode 100644 index 000000000..0e92ef298 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/PublicSafetyEventResponderWorkerType.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "PublicSafetyEventResponderWorkerType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PublicSafetyEventResponderWorkerType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PublicSafetyEventResponderWorkerType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_PublicSafetyEventResponderWorkerType_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 11, "towOperater" }, + { 2, 16, "fireAndEMSWorker" }, + { 3, 10, "aDOTWorker" }, + { 4, 14, "lawEnforcement" }, + { 5, 15, "hazmatResponder" }, + { 6, 19, "animalControlWorker" }, + { 7, 14, "otherPersonnel" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PublicSafetyEventResponderWorkerType_enum2value_1[] = { + 3, /* aDOTWorker(3) */ + 6, /* animalControlWorker(6) */ + 2, /* fireAndEMSWorker(2) */ + 5, /* hazmatResponder(5) */ + 4, /* lawEnforcement(4) */ + 7, /* otherPersonnel(7) */ + 1, /* towOperater(1) */ + 0 /* unavailable(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PublicSafetyEventResponderWorkerType_specs_1 = { + asn_MAP_PublicSafetyEventResponderWorkerType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PublicSafetyEventResponderWorkerType_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 9, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PublicSafetyEventResponderWorkerType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PublicSafetyEventResponderWorkerType = { + "PublicSafetyEventResponderWorkerType", + "PublicSafetyEventResponderWorkerType", + &asn_OP_NativeEnumerated, + asn_DEF_PublicSafetyEventResponderWorkerType_tags_1, + sizeof(asn_DEF_PublicSafetyEventResponderWorkerType_tags_1) + /sizeof(asn_DEF_PublicSafetyEventResponderWorkerType_tags_1[0]), /* 1 */ + asn_DEF_PublicSafetyEventResponderWorkerType_tags_1, /* Same as above */ + sizeof(asn_DEF_PublicSafetyEventResponderWorkerType_tags_1) + /sizeof(asn_DEF_PublicSafetyEventResponderWorkerType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PublicSafetyEventResponderWorkerType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PublicSafetyEventResponderWorkerType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PublicSafetyEventResponderWorkerType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RTCM-Revision.c b/src/tmx/Asn_J2735/src/r2020/RTCM-Revision.c new file mode 100644 index 000000000..f48367a51 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RTCM-Revision.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "RTCMcorrections" + * found in "J2735-RTCMcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RTCM-Revision.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RTCM_Revision_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RTCM_Revision_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RTCM_Revision_value2enum_1[] = { + { 0, 7, "unknown" }, + { 1, 8, "rtcmRev2" }, + { 2, 8, "rtcmRev3" }, + { 3, 8, "reserved" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RTCM_Revision_enum2value_1[] = { + 3, /* reserved(3) */ + 1, /* rtcmRev2(1) */ + 2, /* rtcmRev3(2) */ + 0 /* unknown(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RTCM_Revision_specs_1 = { + asn_MAP_RTCM_Revision_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RTCM_Revision_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RTCM_Revision_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RTCM_Revision = { + "RTCM-Revision", + "RTCM-Revision", + &asn_OP_NativeEnumerated, + asn_DEF_RTCM_Revision_tags_1, + sizeof(asn_DEF_RTCM_Revision_tags_1) + /sizeof(asn_DEF_RTCM_Revision_tags_1[0]), /* 1 */ + asn_DEF_RTCM_Revision_tags_1, /* Same as above */ + sizeof(asn_DEF_RTCM_Revision_tags_1) + /sizeof(asn_DEF_RTCM_Revision_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RTCM_Revision_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RTCM_Revision_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RTCM_Revision_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RTCMPackage.c b/src/tmx/Asn_J2735/src/r2020/RTCMPackage.c new file mode 100644 index 000000000..dc3e4971d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RTCMPackage.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RTCMPackage.h" + +asn_TYPE_member_t asn_MBR_RTCMPackage_1[] = { + { ATF_POINTER, 1, offsetof(struct RTCMPackage, rtcmHeader), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RTCMheader, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rtcmHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RTCMPackage, msgs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RTCMmessageList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgs" + }, +}; +static const int asn_MAP_RTCMPackage_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_RTCMPackage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RTCMPackage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rtcmHeader */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* msgs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RTCMPackage_specs_1 = { + sizeof(struct RTCMPackage), + offsetof(struct RTCMPackage, _asn_ctx), + asn_MAP_RTCMPackage_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_RTCMPackage_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RTCMPackage = { + "RTCMPackage", + "RTCMPackage", + &asn_OP_SEQUENCE, + asn_DEF_RTCMPackage_tags_1, + sizeof(asn_DEF_RTCMPackage_tags_1) + /sizeof(asn_DEF_RTCMPackage_tags_1[0]), /* 1 */ + asn_DEF_RTCMPackage_tags_1, /* Same as above */ + sizeof(asn_DEF_RTCMPackage_tags_1) + /sizeof(asn_DEF_RTCMPackage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RTCMPackage_1, + 2, /* Elements count */ + &asn_SPC_RTCMPackage_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RTCMcorrections.c b/src/tmx/Asn_J2735/src/r2020/RTCMcorrections.c new file mode 100644 index 000000000..17eb8518d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RTCMcorrections.c @@ -0,0 +1,279 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "RTCMcorrections" + * found in "J2735-RTCMcorrections.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RTCMcorrections.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_8[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_RTCMcorrections, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_8[] = { + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_8 = { + sizeof(struct RTCMcorrections__regional), + offsetof(struct RTCMcorrections__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_8 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_8, + sizeof(asn_DEF_regional_tags_8) + /sizeof(asn_DEF_regional_tags_8[0]) - 1, /* 1 */ + asn_DEF_regional_tags_8, /* Same as above */ + sizeof(asn_DEF_regional_tags_8) + /sizeof(asn_DEF_regional_tags_8[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_8, + 1, /* Single element */ + &asn_SPC_regional_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RTCMcorrections_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RTCMcorrections, msgCnt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgCnt" + }, + { ATF_NOFLAGS, 0, offsetof(struct RTCMcorrections, rev), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RTCM_Revision, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rev" + }, + { ATF_POINTER, 3, offsetof(struct RTCMcorrections, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_POINTER, 2, offsetof(struct RTCMcorrections, anchorPoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FullPositionVector, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "anchorPoint" + }, + { ATF_POINTER, 1, offsetof(struct RTCMcorrections, rtcmHeader), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RTCMheader, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rtcmHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RTCMcorrections, msgs), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RTCMmessageList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgs" + }, + { ATF_POINTER, 1, offsetof(struct RTCMcorrections, regional), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + 0, + &asn_DEF_regional_8, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_RTCMcorrections_oms_1[] = { 2, 3, 4, 6 }; +static const ber_tlv_tag_t asn_DEF_RTCMcorrections_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RTCMcorrections_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* msgCnt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rev */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* anchorPoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* rtcmHeader */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* msgs */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RTCMcorrections_specs_1 = { + sizeof(struct RTCMcorrections), + offsetof(struct RTCMcorrections, _asn_ctx), + asn_MAP_RTCMcorrections_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_RTCMcorrections_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RTCMcorrections = { + "RTCMcorrections", + "RTCMcorrections", + &asn_OP_SEQUENCE, + asn_DEF_RTCMcorrections_tags_1, + sizeof(asn_DEF_RTCMcorrections_tags_1) + /sizeof(asn_DEF_RTCMcorrections_tags_1[0]), /* 1 */ + asn_DEF_RTCMcorrections_tags_1, /* Same as above */ + sizeof(asn_DEF_RTCMcorrections_tags_1) + /sizeof(asn_DEF_RTCMcorrections_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RTCMcorrections_1, + 7, /* Elements count */ + &asn_SPC_RTCMcorrections_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RTCMheader.c b/src/tmx/Asn_J2735/src/r2020/RTCMheader.c new file mode 100644 index 000000000..cfe1e5ca4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RTCMheader.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RTCMheader.h" + +asn_TYPE_member_t asn_MBR_RTCMheader_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RTCMheader, status), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNSSstatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "status" + }, + { ATF_NOFLAGS, 0, offsetof(struct RTCMheader, offsetSet), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AntennaOffsetSet, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offsetSet" + }, +}; +static const ber_tlv_tag_t asn_DEF_RTCMheader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RTCMheader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* status */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* offsetSet */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RTCMheader_specs_1 = { + sizeof(struct RTCMheader), + offsetof(struct RTCMheader, _asn_ctx), + asn_MAP_RTCMheader_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RTCMheader = { + "RTCMheader", + "RTCMheader", + &asn_OP_SEQUENCE, + asn_DEF_RTCMheader_tags_1, + sizeof(asn_DEF_RTCMheader_tags_1) + /sizeof(asn_DEF_RTCMheader_tags_1[0]), /* 1 */ + asn_DEF_RTCMheader_tags_1, /* Same as above */ + sizeof(asn_DEF_RTCMheader_tags_1) + /sizeof(asn_DEF_RTCMheader_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RTCMheader_1, + 2, /* Elements count */ + &asn_SPC_RTCMheader_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RTCMmessage.c b/src/tmx/Asn_J2735/src/r2020/RTCMmessage.c new file mode 100644 index 000000000..08df22bde --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RTCMmessage.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RTCMmessage.h" + +int +RTCMmessage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 1023UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RTCMmessage_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..1023)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RTCMmessage_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1023 } /* (SIZE(1..1023)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RTCMmessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RTCMmessage = { + "RTCMmessage", + "RTCMmessage", + &asn_OP_OCTET_STRING, + asn_DEF_RTCMmessage_tags_1, + sizeof(asn_DEF_RTCMmessage_tags_1) + /sizeof(asn_DEF_RTCMmessage_tags_1[0]), /* 1 */ + asn_DEF_RTCMmessage_tags_1, /* Same as above */ + sizeof(asn_DEF_RTCMmessage_tags_1) + /sizeof(asn_DEF_RTCMmessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RTCMmessage_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RTCMmessage_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RTCMmessage_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RTCMmessageList.c b/src/tmx/Asn_J2735/src/r2020/RTCMmessageList.c new file mode 100644 index 000000000..3baa4cb68 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RTCMmessageList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RTCMmessageList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RTCMmessageList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..5)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RTCMmessageList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 5 } /* (SIZE(1..5)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RTCMmessageList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RTCMmessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RTCMmessageList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RTCMmessageList_specs_1 = { + sizeof(struct RTCMmessageList), + offsetof(struct RTCMmessageList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RTCMmessageList = { + "RTCMmessageList", + "RTCMmessageList", + &asn_OP_SEQUENCE_OF, + asn_DEF_RTCMmessageList_tags_1, + sizeof(asn_DEF_RTCMmessageList_tags_1) + /sizeof(asn_DEF_RTCMmessageList_tags_1[0]), /* 1 */ + asn_DEF_RTCMmessageList_tags_1, /* Same as above */ + sizeof(asn_DEF_RTCMmessageList_tags_1) + /sizeof(asn_DEF_RTCMmessageList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RTCMmessageList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RTCMmessageList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RTCMmessageList_1, + 1, /* Single element */ + &asn_SPC_RTCMmessageList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Radius-B12.c b/src/tmx/Asn_J2735/src/r2020/Radius-B12.c new file mode 100644 index 000000000..6b505da18 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Radius-B12.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Radius-B12.h" + +int +Radius_B12_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 4095L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Radius_B12_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..4095) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Radius_B12_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Radius_B12_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Radius_B12 = { + "Radius-B12", + "Radius-B12", + &asn_OP_NativeInteger, + asn_DEF_Radius_B12_tags_1, + sizeof(asn_DEF_Radius_B12_tags_1) + /sizeof(asn_DEF_Radius_B12_tags_1[0]), /* 1 */ + asn_DEF_Radius_B12_tags_1, /* Same as above */ + sizeof(asn_DEF_Radius_B12_tags_1) + /sizeof(asn_DEF_Radius_B12_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Radius_B12_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Radius_B12_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Radius_B12_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RadiusOfCurvature.c b/src/tmx/Asn_J2735/src/r2020/RadiusOfCurvature.c new file mode 100644 index 000000000..e199746ae --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RadiusOfCurvature.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RadiusOfCurvature.h" + +int +RadiusOfCurvature_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32767L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RadiusOfCurvature_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-32767..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RadiusOfCurvature_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32767, 32767 } /* (-32767..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RadiusOfCurvature_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RadiusOfCurvature = { + "RadiusOfCurvature", + "RadiusOfCurvature", + &asn_OP_NativeInteger, + asn_DEF_RadiusOfCurvature_tags_1, + sizeof(asn_DEF_RadiusOfCurvature_tags_1) + /sizeof(asn_DEF_RadiusOfCurvature_tags_1[0]), /* 1 */ + asn_DEF_RadiusOfCurvature_tags_1, /* Same as above */ + sizeof(asn_DEF_RadiusOfCurvature_tags_1) + /sizeof(asn_DEF_RadiusOfCurvature_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RadiusOfCurvature_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RadiusOfCurvature_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RadiusOfCurvature_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RainSensor.c b/src/tmx/Asn_J2735/src/r2020/RainSensor.c new file mode 100644 index 000000000..065d1470a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RainSensor.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RainSensor.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RainSensor_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RainSensor_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RainSensor_value2enum_1[] = { + { 0, 4, "none" }, + { 1, 9, "lightMist" }, + { 2, 9, "heavyMist" }, + { 3, 18, "lightRainOrDrizzle" }, + { 4, 4, "rain" }, + { 5, 12, "moderateRain" }, + { 6, 9, "heavyRain" }, + { 7, 13, "heavyDownpour" } +}; +static const unsigned int asn_MAP_RainSensor_enum2value_1[] = { + 7, /* heavyDownpour(7) */ + 2, /* heavyMist(2) */ + 6, /* heavyRain(6) */ + 1, /* lightMist(1) */ + 3, /* lightRainOrDrizzle(3) */ + 5, /* moderateRain(5) */ + 0, /* none(0) */ + 4 /* rain(4) */ +}; +const asn_INTEGER_specifics_t asn_SPC_RainSensor_specs_1 = { + asn_MAP_RainSensor_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RainSensor_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RainSensor_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RainSensor = { + "RainSensor", + "RainSensor", + &asn_OP_NativeEnumerated, + asn_DEF_RainSensor_tags_1, + sizeof(asn_DEF_RainSensor_tags_1) + /sizeof(asn_DEF_RainSensor_tags_1[0]), /* 1 */ + asn_DEF_RainSensor_tags_1, /* Same as above */ + sizeof(asn_DEF_RainSensor_tags_1) + /sizeof(asn_DEF_RainSensor_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RainSensor_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RainSensor_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RainSensor_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RegionId.c b/src/tmx/Asn_J2735/src/r2020/RegionId.c new file mode 100644 index 000000000..7f2729f44 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RegionId.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RegionId.h" + +int +RegionId_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RegionId_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RegionId_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RegionId_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RegionId = { + "RegionId", + "RegionId", + &asn_OP_NativeInteger, + asn_DEF_RegionId_tags_1, + sizeof(asn_DEF_RegionId_tags_1) + /sizeof(asn_DEF_RegionId_tags_1[0]), /* 1 */ + asn_DEF_RegionId_tags_1, /* Same as above */ + sizeof(asn_DEF_RegionId_tags_1) + /sizeof(asn_DEF_RegionId_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RegionId_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RegionId_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RegionId_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RegionList.c b/src/tmx/Asn_J2735/src/r2020/RegionList.c new file mode 100644 index 000000000..fceb75bd9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RegionList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RegionList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RegionList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..64)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RegionList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 64 } /* (SIZE(1..64)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RegionList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RegionOffsets, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RegionList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RegionList_specs_1 = { + sizeof(struct RegionList), + offsetof(struct RegionList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RegionList = { + "RegionList", + "RegionList", + &asn_OP_SEQUENCE_OF, + asn_DEF_RegionList_tags_1, + sizeof(asn_DEF_RegionList_tags_1) + /sizeof(asn_DEF_RegionList_tags_1[0]), /* 1 */ + asn_DEF_RegionList_tags_1, /* Same as above */ + sizeof(asn_DEF_RegionList_tags_1) + /sizeof(asn_DEF_RegionList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RegionList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RegionList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RegionList_1, + 1, /* Single element */ + &asn_SPC_RegionList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RegionOffsets.c b/src/tmx/Asn_J2735/src/r2020/RegionOffsets.c new file mode 100644 index 000000000..699efb0c6 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RegionOffsets.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RegionOffsets.h" + +asn_TYPE_member_t asn_MBR_RegionOffsets_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RegionOffsets, xOffset), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B16, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "xOffset" + }, + { ATF_NOFLAGS, 0, offsetof(struct RegionOffsets, yOffset), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B16, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yOffset" + }, + { ATF_POINTER, 1, offsetof(struct RegionOffsets, zOffset), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OffsetLL_B16, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zOffset" + }, +}; +static const int asn_MAP_RegionOffsets_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_RegionOffsets_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RegionOffsets_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* xOffset */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* yOffset */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* zOffset */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RegionOffsets_specs_1 = { + sizeof(struct RegionOffsets), + offsetof(struct RegionOffsets, _asn_ctx), + asn_MAP_RegionOffsets_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_RegionOffsets_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RegionOffsets = { + "RegionOffsets", + "RegionOffsets", + &asn_OP_SEQUENCE, + asn_DEF_RegionOffsets_tags_1, + sizeof(asn_DEF_RegionOffsets_tags_1) + /sizeof(asn_DEF_RegionOffsets_tags_1[0]), /* 1 */ + asn_DEF_RegionOffsets_tags_1, /* Same as above */ + sizeof(asn_DEF_RegionOffsets_tags_1) + /sizeof(asn_DEF_RegionOffsets_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RegionOffsets_1, + 3, /* Elements count */ + &asn_SPC_RegionOffsets_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RegionPointSet.c b/src/tmx/Asn_J2735/src/r2020/RegionPointSet.c new file mode 100644 index 000000000..bf087aac3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RegionPointSet.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RegionPointSet.h" + +asn_TYPE_member_t asn_MBR_RegionPointSet_1[] = { + { ATF_POINTER, 2, offsetof(struct RegionPointSet, anchor), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Position3D, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "anchor" + }, + { ATF_POINTER, 1, offsetof(struct RegionPointSet, scale), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Zoom, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "scale" + }, + { ATF_NOFLAGS, 0, offsetof(struct RegionPointSet, nodeList), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nodeList" + }, +}; +static const int asn_MAP_RegionPointSet_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_RegionPointSet_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RegionPointSet_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* anchor */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scale */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nodeList */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RegionPointSet_specs_1 = { + sizeof(struct RegionPointSet), + offsetof(struct RegionPointSet, _asn_ctx), + asn_MAP_RegionPointSet_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_RegionPointSet_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RegionPointSet = { + "RegionPointSet", + "RegionPointSet", + &asn_OP_SEQUENCE, + asn_DEF_RegionPointSet_tags_1, + sizeof(asn_DEF_RegionPointSet_tags_1) + /sizeof(asn_DEF_RegionPointSet_tags_1[0]), /* 1 */ + asn_DEF_RegionPointSet_tags_1, /* Same as above */ + sizeof(asn_DEF_RegionPointSet_tags_1) + /sizeof(asn_DEF_RegionPointSet_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RegionPointSet_1, + 3, /* Elements count */ + &asn_SPC_RegionPointSet_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RegionalExtension.c b/src/tmx/Asn_J2735/src/r2020/RegionalExtension.c new file mode 100644 index 000000000..3ba5a6a6b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RegionalExtension.c @@ -0,0 +1,11179 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RegionalExtension.h" + +static const long asn_VAL_3_addGrpB = 2; +static const asn_ioc_cell_t asn_IOS_Reg_LaneDataAttribute_1_rows[] = { + { "&id", aioc__value, &asn_DEF_RegionId, &asn_VAL_3_addGrpB }, + { "&Type", aioc__type, &asn_DEF_LaneDataAttribute_addGrpB } +}; +static const asn_ioc_set_t asn_IOS_Reg_LaneDataAttribute_1[] = { + { 1, 2, asn_IOS_Reg_LaneDataAttribute_1_rows } +}; +static const long asn_VAL_5_addGrpB = 2; +static const asn_ioc_cell_t asn_IOS_Reg_NodeOffsetPointXY_1_rows[] = { + { "&id", aioc__value, &asn_DEF_RegionId, &asn_VAL_5_addGrpB }, + { "&Type", aioc__type, &asn_DEF_NodeOffsetPointXY_addGrpB } +}; +static const asn_ioc_set_t asn_IOS_Reg_NodeOffsetPointXY_1[] = { + { 1, 2, asn_IOS_Reg_NodeOffsetPointXY_1_rows } +}; +static const long asn_VAL_6_addGrpB = 2; +static const long asn_VAL_7_addGrpC = 3; +static const asn_ioc_cell_t asn_IOS_Reg_Position3D_1_rows[] = { + { "&id", aioc__value, &asn_DEF_RegionId, &asn_VAL_6_addGrpB }, + { "&Type", aioc__type, &asn_DEF_Position3D_addGrpB }, + { "&id", aioc__value, &asn_DEF_RegionId, &asn_VAL_7_addGrpC }, + { "&Type", aioc__type, &asn_DEF_Position3D_addGrpC } +}; +static const asn_ioc_set_t asn_IOS_Reg_Position3D_1[] = { + { 2, 2, asn_IOS_Reg_Position3D_1_rows } +}; +static const long asn_VAL_9_addGrpC = 3; +static const asn_ioc_cell_t asn_IOS_Reg_MapData_1_rows[] = { + { "&id", aioc__value, &asn_DEF_RegionId, &asn_VAL_9_addGrpC }, + { "&Type", aioc__type, &asn_DEF_MapData_addGrpC } +}; +static const asn_ioc_set_t asn_IOS_Reg_MapData_1[] = { + { 1, 2, asn_IOS_Reg_MapData_1_rows } +}; +static const long asn_VAL_8_addGrpC = 3; +static const asn_ioc_cell_t asn_IOS_Reg_RestrictionUserType_1_rows[] = { + { "&id", aioc__value, &asn_DEF_RegionId, &asn_VAL_8_addGrpC }, + { "&Type", aioc__type, &asn_DEF_RestrictionUserType_addGrpC } +}; +static const asn_ioc_set_t asn_IOS_Reg_RestrictionUserType_1[] = { + { 1, 2, asn_IOS_Reg_RestrictionUserType_1_rows } +}; +static const long asn_VAL_1_addGrpC = 3; +static const asn_ioc_cell_t asn_IOS_Reg_ConnectionManeuverAssist_1_rows[] = { + { "&id", aioc__value, &asn_DEF_RegionId, &asn_VAL_1_addGrpC }, + { "&Type", aioc__type, &asn_DEF_ConnectionManeuverAssist_addGrpC } +}; +static const asn_ioc_set_t asn_IOS_Reg_ConnectionManeuverAssist_1[] = { + { 1, 2, asn_IOS_Reg_ConnectionManeuverAssist_1_rows } +}; +static const long asn_VAL_2_addGrpC = 3; +static const asn_ioc_cell_t asn_IOS_Reg_IntersectionState_1_rows[] = { + { "&id", aioc__value, &asn_DEF_RegionId, &asn_VAL_2_addGrpC }, + { "&Type", aioc__type, &asn_DEF_IntersectionState_addGrpC } +}; +static const asn_ioc_set_t asn_IOS_Reg_IntersectionState_1[] = { + { 1, 2, asn_IOS_Reg_IntersectionState_1_rows } +}; +static const long asn_VAL_4_addGrpB = 2; +static const asn_ioc_cell_t asn_IOS_Reg_MovementEvent_1_rows[] = { + { "&id", aioc__value, &asn_DEF_RegionId, &asn_VAL_4_addGrpB }, + { "&Type", aioc__type, &asn_DEF_MovementEvent_addGrpB } +}; +static const asn_ioc_set_t asn_IOS_Reg_MovementEvent_1[] = { + { 1, 2, asn_IOS_Reg_MovementEvent_1_rows } +}; +static const long asn_VAL_10_DSRC_addGrpCarma = 128; +static const asn_ioc_cell_t asn_IOS_Reg_BasicSafetyMessage_1_rows[] = { + { "&id", aioc__value, &asn_DEF_RegionId, &asn_VAL_10_DSRC_addGrpCarma }, + { "&Type", aioc__type, &asn_DEF_BasicSafetyMessage_addGrpCarma } +}; +static const asn_ioc_set_t asn_IOS_Reg_BasicSafetyMessage_1[] = { + { 1, 2, asn_IOS_Reg_BasicSafetyMessage_1_rows } +}; + +static int +memb_regionId_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_4(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_4(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_7(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_7(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Reg_BasicSafetyMessage_regExtValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Reg_BasicSafetyMessage_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Reg_BasicSafetyMessage, regionId)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static asn_type_selector_result_t +select_Reg_LaneDataAttribute_regExtValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Reg_LaneDataAttribute_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Reg_LaneDataAttribute, regionId)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_regExtValue_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_16(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_16(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_19(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Reg_NodeOffsetPointXY_regExtValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Reg_NodeOffsetPointXY_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Reg_NodeOffsetPointXY, regionId)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_regExtValue_constraint_19(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_22(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Reg_Position3D_regExtValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Reg_Position3D_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Reg_Position3D, regionId)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_regExtValue_constraint_22(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_28(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_28(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_31(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_31(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_34(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_34(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_40(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_40(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_43(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Reg_MapData_regExtValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Reg_MapData_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Reg_MapData, regionId)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_regExtValue_constraint_43(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_46(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_46(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_52(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_52(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_55(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_55(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_58(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Reg_RestrictionUserType_regExtValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Reg_RestrictionUserType_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Reg_RestrictionUserType, regionId)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_regExtValue_constraint_58(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_64(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_64(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_67(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_67(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_70(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_70(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_76(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_76(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_79(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_79(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_82(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_82(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_88(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_88(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_91(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_91(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_94(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_94(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_100(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_100(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_103(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_103(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_106(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_106(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Reg_ConnectionManeuverAssist_regExtValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Reg_ConnectionManeuverAssist_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Reg_ConnectionManeuverAssist, regionId)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_regExtValue_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_112(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Reg_IntersectionState_regExtValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Reg_IntersectionState_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Reg_IntersectionState, regionId)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_regExtValue_constraint_112(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_115(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Reg_MovementEvent_regExtValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Reg_MovementEvent_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Reg_MovementEvent, regionId)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_regExtValue_constraint_115(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_118(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_118(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_124(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_124(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_127(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_127(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_130(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_130(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_136(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_136(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_139(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_139(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_142(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_142(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_148(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_148(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_151(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_151(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_154(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_154(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_160(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_160(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_163(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_163(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_166(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_166(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_172(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_172(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_175(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_175(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_178(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_178(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_regionId_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regExtValue_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_2 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regExtValue_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_BasicSafetyMessage__regExtValue, choice.BasicSafetyMessage_addGrpCarma), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BasicSafetyMessage_addGrpCarma, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "BasicSafetyMessage-addGrpCarma" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_regExtValue_tag2el_3[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* BasicSafetyMessage-addGrpCarma */ +}; +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_5 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_8 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_8 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_11 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_11 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_12 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_14 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_15 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_15 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_17 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_17 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_18 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_18 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_20 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_20 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_21 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_21 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_23 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_23 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_24 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_26 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_26 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_27 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_29 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_29 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_30 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_30 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_32 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_32 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_33 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_33 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_35 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_36 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_36 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_38 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_38 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_39 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_39 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_41 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_41 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_42 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_42 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_44 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_44 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_45 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_45 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_47 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_47 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_48 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_48 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_50 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_50 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_51 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_51 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_53 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_53 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_54 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_54 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_56 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_56 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_57 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_57 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_59 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_59 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_60 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_60 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_62 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_62 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_63 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_63 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_65 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_65 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_66 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_66 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_68 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_68 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_69 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_69 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_71 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_71 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_72 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_72 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_74 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_74 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_75 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_75 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_77 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_77 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_78 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_78 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_80 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_80 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_81 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_81 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_83 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_83 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_84 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_84 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_86 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_86 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_87 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_87 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_89 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_89 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_90 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_90 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_92 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_92 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_93 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_93 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_95 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_95 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_96 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_96 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_98 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_98 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_99 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_99 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_101 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_101 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_102 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_102 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_104 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_104 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_105 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_105 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_107 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_107 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_108 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_108 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_110 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_110 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_111 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_111 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_113 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_113 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_114 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_114 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_116 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_116 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_117 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_117 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_119 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_119 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_120 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_120 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_122 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_122 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_123 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_123 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_125 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_125 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_126 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_126 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_128 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_128 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_129 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_129 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_131 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_131 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_132 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_132 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_134 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_134 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_135 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_135 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_137 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_137 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_138 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_138 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_140 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_140 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_141 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_141 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_143 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_143 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_144 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_144 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_146 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_146 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_147 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_147 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_149 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_149 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_150 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_150 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_152 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_152 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_153 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_153 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_155 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_155 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_156 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_156 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_158 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_158 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_159 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_159 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_161 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_161 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_162 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_162 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_164 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_164 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_165 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_165 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_167 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_167 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_168 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_168 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_170 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_170 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_171 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_171 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_173 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_173 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_174 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_174 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_176 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_176 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_177 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_177 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_179 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_179 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_180 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_180 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regionId_constr_182 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regionId_constr_182 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regExtValue_constr_183 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regExtValue_constr_183 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_3 = { + sizeof(struct Reg_BasicSafetyMessage__regExtValue), + offsetof(struct Reg_BasicSafetyMessage__regExtValue, _asn_ctx), + offsetof(struct Reg_BasicSafetyMessage__regExtValue, present), + sizeof(((struct Reg_BasicSafetyMessage__regExtValue *)0)->present), + asn_MAP_regExtValue_tag2el_3, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_3 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_regExtValue_3, + 1, /* Elements count */ + &asn_SPC_regExtValue_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_BasicSafetyMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_BasicSafetyMessage, regionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_1 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_BasicSafetyMessage, regExtValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_regExtValue_3, + select_Reg_BasicSafetyMessage_regExtValue_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_1 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_BasicSafetyMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_BasicSafetyMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* regionId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regExtValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_BasicSafetyMessage_specs_1 = { + sizeof(struct Reg_BasicSafetyMessage), + offsetof(struct Reg_BasicSafetyMessage, _asn_ctx), + asn_MAP_Reg_BasicSafetyMessage_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_BasicSafetyMessage = { + "Reg-BasicSafetyMessage", + "Reg-BasicSafetyMessage", + &asn_OP_SEQUENCE, + asn_DEF_Reg_BasicSafetyMessage_tags_1, + sizeof(asn_DEF_Reg_BasicSafetyMessage_tags_1) + /sizeof(asn_DEF_Reg_BasicSafetyMessage_tags_1[0]), /* 1 */ + asn_DEF_Reg_BasicSafetyMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_Reg_BasicSafetyMessage_tags_1) + /sizeof(asn_DEF_Reg_BasicSafetyMessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_BasicSafetyMessage_1, + 2, /* Elements count */ + &asn_SPC_Reg_BasicSafetyMessage_specs_1 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_6 = { + sizeof(struct Reg_EventDescription__regExtValue), + offsetof(struct Reg_EventDescription__regExtValue, _asn_ctx), + offsetof(struct Reg_EventDescription__regExtValue, present), + sizeof(((struct Reg_EventDescription__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_6 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_6 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_EventDescription_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_EventDescription, regionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_4 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_EventDescription, regExtValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_regExtValue_6, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_4 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_EventDescription_tags_4[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_EventDescription_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* regionId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regExtValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_EventDescription_specs_4 = { + sizeof(struct Reg_EventDescription), + offsetof(struct Reg_EventDescription, _asn_ctx), + asn_MAP_Reg_EventDescription_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_EventDescription = { + "Reg-EventDescription", + "Reg-EventDescription", + &asn_OP_SEQUENCE, + asn_DEF_Reg_EventDescription_tags_4, + sizeof(asn_DEF_Reg_EventDescription_tags_4) + /sizeof(asn_DEF_Reg_EventDescription_tags_4[0]), /* 1 */ + asn_DEF_Reg_EventDescription_tags_4, /* Same as above */ + sizeof(asn_DEF_Reg_EventDescription_tags_4) + /sizeof(asn_DEF_Reg_EventDescription_tags_4[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_EventDescription_4, + 2, /* Elements count */ + &asn_SPC_Reg_EventDescription_specs_4 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_9 = { + sizeof(struct Reg_SupplementalVehicleExtensions__regExtValue), + offsetof(struct Reg_SupplementalVehicleExtensions__regExtValue, _asn_ctx), + offsetof(struct Reg_SupplementalVehicleExtensions__regExtValue, present), + sizeof(((struct Reg_SupplementalVehicleExtensions__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_9 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_SupplementalVehicleExtensions_7[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_SupplementalVehicleExtensions, regionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_8, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_7 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_SupplementalVehicleExtensions, regExtValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_regExtValue_9, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_9, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_9, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_7 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_SupplementalVehicleExtensions_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_SupplementalVehicleExtensions_tag2el_7[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* regionId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regExtValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_SupplementalVehicleExtensions_specs_7 = { + sizeof(struct Reg_SupplementalVehicleExtensions), + offsetof(struct Reg_SupplementalVehicleExtensions, _asn_ctx), + asn_MAP_Reg_SupplementalVehicleExtensions_tag2el_7, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_SupplementalVehicleExtensions = { + "Reg-SupplementalVehicleExtensions", + "Reg-SupplementalVehicleExtensions", + &asn_OP_SEQUENCE, + asn_DEF_Reg_SupplementalVehicleExtensions_tags_7, + sizeof(asn_DEF_Reg_SupplementalVehicleExtensions_tags_7) + /sizeof(asn_DEF_Reg_SupplementalVehicleExtensions_tags_7[0]), /* 1 */ + asn_DEF_Reg_SupplementalVehicleExtensions_tags_7, /* Same as above */ + sizeof(asn_DEF_Reg_SupplementalVehicleExtensions_tags_7) + /sizeof(asn_DEF_Reg_SupplementalVehicleExtensions_tags_7[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_SupplementalVehicleExtensions_7, + 2, /* Elements count */ + &asn_SPC_Reg_SupplementalVehicleExtensions_specs_7 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_12 = { + sizeof(struct Reg_ComputedLane__regExtValue), + offsetof(struct Reg_ComputedLane__regExtValue, _asn_ctx), + offsetof(struct Reg_ComputedLane__regExtValue, present), + sizeof(((struct Reg_ComputedLane__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_12 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_ComputedLane_10[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_ComputedLane, regionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_11, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_10 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_ComputedLane, regExtValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_regExtValue_12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_12, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_12, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_10 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_ComputedLane_tags_10[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_ComputedLane_tag2el_10[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* regionId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regExtValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_ComputedLane_specs_10 = { + sizeof(struct Reg_ComputedLane), + offsetof(struct Reg_ComputedLane, _asn_ctx), + asn_MAP_Reg_ComputedLane_tag2el_10, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_ComputedLane = { + "Reg-ComputedLane", + "Reg-ComputedLane", + &asn_OP_SEQUENCE, + asn_DEF_Reg_ComputedLane_tags_10, + sizeof(asn_DEF_Reg_ComputedLane_tags_10) + /sizeof(asn_DEF_Reg_ComputedLane_tags_10[0]), /* 1 */ + asn_DEF_Reg_ComputedLane_tags_10, /* Same as above */ + sizeof(asn_DEF_Reg_ComputedLane_tags_10) + /sizeof(asn_DEF_Reg_ComputedLane_tags_10[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_ComputedLane_10, + 2, /* Elements count */ + &asn_SPC_Reg_ComputedLane_specs_10 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regExtValue_15[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_LaneDataAttribute__regExtValue, choice.LaneDataAttribute_addGrpB), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_LaneDataAttribute_addGrpB, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "LaneDataAttribute-addGrpB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_regExtValue_tag2el_15[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* LaneDataAttribute-addGrpB */ +}; +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_15 = { + sizeof(struct Reg_LaneDataAttribute__regExtValue), + offsetof(struct Reg_LaneDataAttribute__regExtValue, _asn_ctx), + offsetof(struct Reg_LaneDataAttribute__regExtValue, present), + sizeof(((struct Reg_LaneDataAttribute__regExtValue *)0)->present), + asn_MAP_regExtValue_tag2el_15, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_15 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_regExtValue_15, + 1, /* Elements count */ + &asn_SPC_regExtValue_specs_15 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_LaneDataAttribute_13[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_LaneDataAttribute, regionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_14, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_14, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_13 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_LaneDataAttribute, regExtValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_regExtValue_15, + select_Reg_LaneDataAttribute_regExtValue_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_15, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_15, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_13 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_LaneDataAttribute_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_LaneDataAttribute_tag2el_13[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* regionId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regExtValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_LaneDataAttribute_specs_13 = { + sizeof(struct Reg_LaneDataAttribute), + offsetof(struct Reg_LaneDataAttribute, _asn_ctx), + asn_MAP_Reg_LaneDataAttribute_tag2el_13, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_LaneDataAttribute = { + "Reg-LaneDataAttribute", + "Reg-LaneDataAttribute", + &asn_OP_SEQUENCE, + asn_DEF_Reg_LaneDataAttribute_tags_13, + sizeof(asn_DEF_Reg_LaneDataAttribute_tags_13) + /sizeof(asn_DEF_Reg_LaneDataAttribute_tags_13[0]), /* 1 */ + asn_DEF_Reg_LaneDataAttribute_tags_13, /* Same as above */ + sizeof(asn_DEF_Reg_LaneDataAttribute_tags_13) + /sizeof(asn_DEF_Reg_LaneDataAttribute_tags_13[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_LaneDataAttribute_13, + 2, /* Elements count */ + &asn_SPC_Reg_LaneDataAttribute_specs_13 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_18 = { + sizeof(struct Reg_NodeAttributeSetXY__regExtValue), + offsetof(struct Reg_NodeAttributeSetXY__regExtValue, _asn_ctx), + offsetof(struct Reg_NodeAttributeSetXY__regExtValue, present), + sizeof(((struct Reg_NodeAttributeSetXY__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_18 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_18 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_NodeAttributeSetXY_16[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_NodeAttributeSetXY, regionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_17, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_17, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_16 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_NodeAttributeSetXY, regExtValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_regExtValue_18, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_18, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_18, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_16 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_NodeAttributeSetXY_tags_16[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_NodeAttributeSetXY_tag2el_16[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* regionId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regExtValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_NodeAttributeSetXY_specs_16 = { + sizeof(struct Reg_NodeAttributeSetXY), + offsetof(struct Reg_NodeAttributeSetXY, _asn_ctx), + asn_MAP_Reg_NodeAttributeSetXY_tag2el_16, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_NodeAttributeSetXY = { + "Reg-NodeAttributeSetXY", + "Reg-NodeAttributeSetXY", + &asn_OP_SEQUENCE, + asn_DEF_Reg_NodeAttributeSetXY_tags_16, + sizeof(asn_DEF_Reg_NodeAttributeSetXY_tags_16) + /sizeof(asn_DEF_Reg_NodeAttributeSetXY_tags_16[0]), /* 1 */ + asn_DEF_Reg_NodeAttributeSetXY_tags_16, /* Same as above */ + sizeof(asn_DEF_Reg_NodeAttributeSetXY_tags_16) + /sizeof(asn_DEF_Reg_NodeAttributeSetXY_tags_16[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_NodeAttributeSetXY_16, + 2, /* Elements count */ + &asn_SPC_Reg_NodeAttributeSetXY_specs_16 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regExtValue_21[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_NodeOffsetPointXY__regExtValue, choice.NodeOffsetPointXY_addGrpB), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_NodeOffsetPointXY_addGrpB, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "NodeOffsetPointXY-addGrpB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_regExtValue_tag2el_21[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* posA */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* posB */ +}; +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_21 = { + sizeof(struct Reg_NodeOffsetPointXY__regExtValue), + offsetof(struct Reg_NodeOffsetPointXY__regExtValue, _asn_ctx), + offsetof(struct Reg_NodeOffsetPointXY__regExtValue, present), + sizeof(((struct Reg_NodeOffsetPointXY__regExtValue *)0)->present), + asn_MAP_regExtValue_tag2el_21, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_21 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_regExtValue_21, + 1, /* Elements count */ + &asn_SPC_regExtValue_specs_21 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_NodeOffsetPointXY_19[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_NodeOffsetPointXY, regionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_20, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_20, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_19 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_NodeOffsetPointXY, regExtValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_regExtValue_21, + select_Reg_NodeOffsetPointXY_regExtValue_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_21, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_21, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_19 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_NodeOffsetPointXY_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_NodeOffsetPointXY_tag2el_19[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* regionId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regExtValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_NodeOffsetPointXY_specs_19 = { + sizeof(struct Reg_NodeOffsetPointXY), + offsetof(struct Reg_NodeOffsetPointXY, _asn_ctx), + asn_MAP_Reg_NodeOffsetPointXY_tag2el_19, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_NodeOffsetPointXY = { + "Reg-NodeOffsetPointXY", + "Reg-NodeOffsetPointXY", + &asn_OP_SEQUENCE, + asn_DEF_Reg_NodeOffsetPointXY_tags_19, + sizeof(asn_DEF_Reg_NodeOffsetPointXY_tags_19) + /sizeof(asn_DEF_Reg_NodeOffsetPointXY_tags_19[0]), /* 1 */ + asn_DEF_Reg_NodeOffsetPointXY_tags_19, /* Same as above */ + sizeof(asn_DEF_Reg_NodeOffsetPointXY_tags_19) + /sizeof(asn_DEF_Reg_NodeOffsetPointXY_tags_19[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_NodeOffsetPointXY_19, + 2, /* Elements count */ + &asn_SPC_Reg_NodeOffsetPointXY_specs_19 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regExtValue_24[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_Position3D__regExtValue, choice.Position3D_addGrpB), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Position3D_addGrpB, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Position3D-addGrpB" + }, + { ATF_NOFLAGS, 0, offsetof(struct Reg_Position3D__regExtValue, choice.Position3D_addGrpC), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Position3D_addGrpC, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Position3D-addGrpC" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_regExtValue_tag2el_24[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* Position3D-addGrpB */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* Position3D-addGrpC */ +}; +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_24 = { + sizeof(struct Reg_Position3D__regExtValue), + offsetof(struct Reg_Position3D__regExtValue, _asn_ctx), + offsetof(struct Reg_Position3D__regExtValue, present), + sizeof(((struct Reg_Position3D__regExtValue *)0)->present), + asn_MAP_regExtValue_tag2el_24, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_24 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_regExtValue_24, + 2, /* Elements count */ + &asn_SPC_regExtValue_specs_24 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_Position3D_22[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_Position3D, regionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_23, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_23, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_22 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_Position3D, regExtValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_regExtValue_24, + select_Reg_Position3D_regExtValue_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_24, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_24, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_22 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_Position3D_tags_22[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_Position3D_tag2el_22[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* regionId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regExtValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_Position3D_specs_22 = { + sizeof(struct Reg_Position3D), + offsetof(struct Reg_Position3D, _asn_ctx), + asn_MAP_Reg_Position3D_tag2el_22, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_Position3D = { + "Reg-Position3D", + "Reg-Position3D", + &asn_OP_SEQUENCE, + asn_DEF_Reg_Position3D_tags_22, + sizeof(asn_DEF_Reg_Position3D_tags_22) + /sizeof(asn_DEF_Reg_Position3D_tags_22[0]), /* 1 */ + asn_DEF_Reg_Position3D_tags_22, /* Same as above */ + sizeof(asn_DEF_Reg_Position3D_tags_22) + /sizeof(asn_DEF_Reg_Position3D_tags_22[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_Position3D_22, + 2, /* Elements count */ + &asn_SPC_Reg_Position3D_specs_22 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_27 = { + sizeof(struct Reg_RequestorType__regExtValue), + offsetof(struct Reg_RequestorType__regExtValue, _asn_ctx), + offsetof(struct Reg_RequestorType__regExtValue, present), + sizeof(((struct Reg_RequestorType__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_27 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_27 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_RequestorType_25[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_RequestorType, regionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_26, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_26, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_25 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_RequestorType, regExtValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_regExtValue_27, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_27, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_27, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_25 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_RequestorType_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_RequestorType_tag2el_25[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* regionId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regExtValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_RequestorType_specs_25 = { + sizeof(struct Reg_RequestorType), + offsetof(struct Reg_RequestorType, _asn_ctx), + asn_MAP_Reg_RequestorType_tag2el_25, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_RequestorType = { + "Reg-RequestorType", + "Reg-RequestorType", + &asn_OP_SEQUENCE, + asn_DEF_Reg_RequestorType_tags_25, + sizeof(asn_DEF_Reg_RequestorType_tags_25) + /sizeof(asn_DEF_Reg_RequestorType_tags_25[0]), /* 1 */ + asn_DEF_Reg_RequestorType_tags_25, /* Same as above */ + sizeof(asn_DEF_Reg_RequestorType_tags_25) + /sizeof(asn_DEF_Reg_RequestorType_tags_25[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_RequestorType_25, + 2, /* Elements count */ + &asn_SPC_Reg_RequestorType_specs_25 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_30 = { + sizeof(struct Reg_VehicleClassification__regExtValue), + offsetof(struct Reg_VehicleClassification__regExtValue, _asn_ctx), + offsetof(struct Reg_VehicleClassification__regExtValue, present), + sizeof(((struct Reg_VehicleClassification__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_30 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_30 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_VehicleClassification_28[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_VehicleClassification, regionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_29, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_29, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_28 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_VehicleClassification, regExtValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_regExtValue_30, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_30, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_30, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_28 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_VehicleClassification_tags_28[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_VehicleClassification_tag2el_28[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* regionId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regExtValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_VehicleClassification_specs_28 = { + sizeof(struct Reg_VehicleClassification), + offsetof(struct Reg_VehicleClassification, _asn_ctx), + asn_MAP_Reg_VehicleClassification_tag2el_28, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_VehicleClassification = { + "Reg-VehicleClassification", + "Reg-VehicleClassification", + &asn_OP_SEQUENCE, + asn_DEF_Reg_VehicleClassification_tags_28, + sizeof(asn_DEF_Reg_VehicleClassification_tags_28) + /sizeof(asn_DEF_Reg_VehicleClassification_tags_28[0]), /* 1 */ + asn_DEF_Reg_VehicleClassification_tags_28, /* Same as above */ + sizeof(asn_DEF_Reg_VehicleClassification_tags_28) + /sizeof(asn_DEF_Reg_VehicleClassification_tags_28[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_VehicleClassification_28, + 2, /* Elements count */ + &asn_SPC_Reg_VehicleClassification_specs_28 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_33 = { + sizeof(struct Reg_VerticalOffset__regExtValue), + offsetof(struct Reg_VerticalOffset__regExtValue, _asn_ctx), + offsetof(struct Reg_VerticalOffset__regExtValue, present), + sizeof(((struct Reg_VerticalOffset__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_33 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_33 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_VerticalOffset_31[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_VerticalOffset, regionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_32, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_32, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_31 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_VerticalOffset, regExtValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_regExtValue_33, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_33, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_33, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_31 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_VerticalOffset_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_VerticalOffset_tag2el_31[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* regionId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regExtValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_VerticalOffset_specs_31 = { + sizeof(struct Reg_VerticalOffset), + offsetof(struct Reg_VerticalOffset, _asn_ctx), + asn_MAP_Reg_VerticalOffset_tag2el_31, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_VerticalOffset = { + "Reg-VerticalOffset", + "Reg-VerticalOffset", + &asn_OP_SEQUENCE, + asn_DEF_Reg_VerticalOffset_tags_31, + sizeof(asn_DEF_Reg_VerticalOffset_tags_31) + /sizeof(asn_DEF_Reg_VerticalOffset_tags_31[0]), /* 1 */ + asn_DEF_Reg_VerticalOffset_tags_31, /* Same as above */ + sizeof(asn_DEF_Reg_VerticalOffset_tags_31) + /sizeof(asn_DEF_Reg_VerticalOffset_tags_31[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_VerticalOffset_31, + 2, /* Elements count */ + &asn_SPC_Reg_VerticalOffset_specs_31 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_36 = { + sizeof(struct Reg_CommonSafetyRequest__regExtValue), + offsetof(struct Reg_CommonSafetyRequest__regExtValue, _asn_ctx), + offsetof(struct Reg_CommonSafetyRequest__regExtValue, present), + sizeof(((struct Reg_CommonSafetyRequest__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_36 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_36 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_CommonSafetyRequest_34[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_CommonSafetyRequest, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_35, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_35, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_34 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_CommonSafetyRequest, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_36, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_36, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_36, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_34 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_CommonSafetyRequest_tags_34[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_CommonSafetyRequest_tag2el_34[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_CommonSafetyRequest_specs_34 = { + sizeof(struct Reg_CommonSafetyRequest), + offsetof(struct Reg_CommonSafetyRequest, _asn_ctx), + asn_MAP_Reg_CommonSafetyRequest_tag2el_34, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_CommonSafetyRequest = { + "Reg-CommonSafetyRequest", + "Reg-CommonSafetyRequest", + &asn_OP_SEQUENCE, + asn_DEF_Reg_CommonSafetyRequest_tags_34, + sizeof(asn_DEF_Reg_CommonSafetyRequest_tags_34) + /sizeof(asn_DEF_Reg_CommonSafetyRequest_tags_34[0]), /* 1 */ + asn_DEF_Reg_CommonSafetyRequest_tags_34, /* Same as above */ + sizeof(asn_DEF_Reg_CommonSafetyRequest_tags_34) + /sizeof(asn_DEF_Reg_CommonSafetyRequest_tags_34[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_CommonSafetyRequest_34, + 2, /* Elements count */ + &asn_SPC_Reg_CommonSafetyRequest_specs_34 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_39 = { + sizeof(struct Reg_EmergencyVehicleAlert__regExtValue), + offsetof(struct Reg_EmergencyVehicleAlert__regExtValue, _asn_ctx), + offsetof(struct Reg_EmergencyVehicleAlert__regExtValue, present), + sizeof(((struct Reg_EmergencyVehicleAlert__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_39 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_39 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_EmergencyVehicleAlert_37[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_EmergencyVehicleAlert, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_38, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_38, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_37 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_EmergencyVehicleAlert, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_39, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_39, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_39, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_37 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_EmergencyVehicleAlert_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_EmergencyVehicleAlert_tag2el_37[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_EmergencyVehicleAlert_specs_37 = { + sizeof(struct Reg_EmergencyVehicleAlert), + offsetof(struct Reg_EmergencyVehicleAlert, _asn_ctx), + asn_MAP_Reg_EmergencyVehicleAlert_tag2el_37, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_EmergencyVehicleAlert = { + "Reg-EmergencyVehicleAlert", + "Reg-EmergencyVehicleAlert", + &asn_OP_SEQUENCE, + asn_DEF_Reg_EmergencyVehicleAlert_tags_37, + sizeof(asn_DEF_Reg_EmergencyVehicleAlert_tags_37) + /sizeof(asn_DEF_Reg_EmergencyVehicleAlert_tags_37[0]), /* 1 */ + asn_DEF_Reg_EmergencyVehicleAlert_tags_37, /* Same as above */ + sizeof(asn_DEF_Reg_EmergencyVehicleAlert_tags_37) + /sizeof(asn_DEF_Reg_EmergencyVehicleAlert_tags_37[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_EmergencyVehicleAlert_37, + 2, /* Elements count */ + &asn_SPC_Reg_EmergencyVehicleAlert_specs_37 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_42 = { + sizeof(struct Reg_IntersectionCollision__regExtValue), + offsetof(struct Reg_IntersectionCollision__regExtValue, _asn_ctx), + offsetof(struct Reg_IntersectionCollision__regExtValue, present), + sizeof(((struct Reg_IntersectionCollision__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_42 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_42 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_IntersectionCollision_40[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_IntersectionCollision, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_41, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_41, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_40 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_IntersectionCollision, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_42, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_42, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_42, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_40 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_IntersectionCollision_tags_40[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_IntersectionCollision_tag2el_40[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_IntersectionCollision_specs_40 = { + sizeof(struct Reg_IntersectionCollision), + offsetof(struct Reg_IntersectionCollision, _asn_ctx), + asn_MAP_Reg_IntersectionCollision_tag2el_40, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_IntersectionCollision = { + "Reg-IntersectionCollision", + "Reg-IntersectionCollision", + &asn_OP_SEQUENCE, + asn_DEF_Reg_IntersectionCollision_tags_40, + sizeof(asn_DEF_Reg_IntersectionCollision_tags_40) + /sizeof(asn_DEF_Reg_IntersectionCollision_tags_40[0]), /* 1 */ + asn_DEF_Reg_IntersectionCollision_tags_40, /* Same as above */ + sizeof(asn_DEF_Reg_IntersectionCollision_tags_40) + /sizeof(asn_DEF_Reg_IntersectionCollision_tags_40[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_IntersectionCollision_40, + 2, /* Elements count */ + &asn_SPC_Reg_IntersectionCollision_specs_40 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regExtValue_45[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_MapData__regExtValue, choice.MapData_addGrpC), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MapData_addGrpC, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "MapData-addGrpC" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_regExtValue_tag2el_45[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* MapData-addGrpC */ +}; +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_45 = { + sizeof(struct Reg_MapData__regExtValue), + offsetof(struct Reg_MapData__regExtValue, _asn_ctx), + offsetof(struct Reg_MapData__regExtValue, present), + sizeof(((struct Reg_MapData__regExtValue *)0)->present), + asn_MAP_regExtValue_tag2el_45, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_45 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_regExtValue_45, + 1, /* Elements count */ + &asn_SPC_regExtValue_specs_45 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_MapData_43[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_MapData, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_44, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_44, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_43 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_MapData, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_45, + select_Reg_MapData_regExtValue_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_45, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_45, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_43 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_MapData_tags_43[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_MapData_tag2el_43[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_MapData_specs_43 = { + sizeof(struct Reg_MapData), + offsetof(struct Reg_MapData, _asn_ctx), + asn_MAP_Reg_MapData_tag2el_43, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_MapData = { + "Reg-MapData", + "Reg-MapData", + &asn_OP_SEQUENCE, + asn_DEF_Reg_MapData_tags_43, + sizeof(asn_DEF_Reg_MapData_tags_43) + /sizeof(asn_DEF_Reg_MapData_tags_43[0]), /* 1 */ + asn_DEF_Reg_MapData_tags_43, /* Same as above */ + sizeof(asn_DEF_Reg_MapData_tags_43) + /sizeof(asn_DEF_Reg_MapData_tags_43[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_MapData_43, + 2, /* Elements count */ + &asn_SPC_Reg_MapData_specs_43 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_48 = { + sizeof(struct Reg_GenericLane__regExtValue), + offsetof(struct Reg_GenericLane__regExtValue, _asn_ctx), + offsetof(struct Reg_GenericLane__regExtValue, present), + sizeof(((struct Reg_GenericLane__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_48 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_48 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_GenericLane_46[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_GenericLane, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_47, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_47, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_46 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_GenericLane, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_48, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_48, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_48, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_46 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_GenericLane_tags_46[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_GenericLane_tag2el_46[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_GenericLane_specs_46 = { + sizeof(struct Reg_GenericLane), + offsetof(struct Reg_GenericLane, _asn_ctx), + asn_MAP_Reg_GenericLane_tag2el_46, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_GenericLane = { + "Reg-GenericLane", + "Reg-GenericLane", + &asn_OP_SEQUENCE, + asn_DEF_Reg_GenericLane_tags_46, + sizeof(asn_DEF_Reg_GenericLane_tags_46) + /sizeof(asn_DEF_Reg_GenericLane_tags_46[0]), /* 1 */ + asn_DEF_Reg_GenericLane_tags_46, /* Same as above */ + sizeof(asn_DEF_Reg_GenericLane_tags_46) + /sizeof(asn_DEF_Reg_GenericLane_tags_46[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_GenericLane_46, + 2, /* Elements count */ + &asn_SPC_Reg_GenericLane_specs_46 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_51 = { + sizeof(struct Reg_IntersectionGeometry__regExtValue), + offsetof(struct Reg_IntersectionGeometry__regExtValue, _asn_ctx), + offsetof(struct Reg_IntersectionGeometry__regExtValue, present), + sizeof(((struct Reg_IntersectionGeometry__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_51 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_51 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_IntersectionGeometry_49[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_IntersectionGeometry, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_50, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_50, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_49 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_IntersectionGeometry, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_51, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_51, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_51, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_49 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_IntersectionGeometry_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_IntersectionGeometry_tag2el_49[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_IntersectionGeometry_specs_49 = { + sizeof(struct Reg_IntersectionGeometry), + offsetof(struct Reg_IntersectionGeometry, _asn_ctx), + asn_MAP_Reg_IntersectionGeometry_tag2el_49, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_IntersectionGeometry = { + "Reg-IntersectionGeometry", + "Reg-IntersectionGeometry", + &asn_OP_SEQUENCE, + asn_DEF_Reg_IntersectionGeometry_tags_49, + sizeof(asn_DEF_Reg_IntersectionGeometry_tags_49) + /sizeof(asn_DEF_Reg_IntersectionGeometry_tags_49[0]), /* 1 */ + asn_DEF_Reg_IntersectionGeometry_tags_49, /* Same as above */ + sizeof(asn_DEF_Reg_IntersectionGeometry_tags_49) + /sizeof(asn_DEF_Reg_IntersectionGeometry_tags_49[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_IntersectionGeometry_49, + 2, /* Elements count */ + &asn_SPC_Reg_IntersectionGeometry_specs_49 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_54 = { + sizeof(struct Reg_LaneAttributes__regExtValue), + offsetof(struct Reg_LaneAttributes__regExtValue, _asn_ctx), + offsetof(struct Reg_LaneAttributes__regExtValue, present), + sizeof(((struct Reg_LaneAttributes__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_54 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_54 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_LaneAttributes_52[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_LaneAttributes, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_53, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_53, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_52 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_LaneAttributes, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_54, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_54, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_54, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_52 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_LaneAttributes_tags_52[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_LaneAttributes_tag2el_52[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_LaneAttributes_specs_52 = { + sizeof(struct Reg_LaneAttributes), + offsetof(struct Reg_LaneAttributes, _asn_ctx), + asn_MAP_Reg_LaneAttributes_tag2el_52, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_LaneAttributes = { + "Reg-LaneAttributes", + "Reg-LaneAttributes", + &asn_OP_SEQUENCE, + asn_DEF_Reg_LaneAttributes_tags_52, + sizeof(asn_DEF_Reg_LaneAttributes_tags_52) + /sizeof(asn_DEF_Reg_LaneAttributes_tags_52[0]), /* 1 */ + asn_DEF_Reg_LaneAttributes_tags_52, /* Same as above */ + sizeof(asn_DEF_Reg_LaneAttributes_tags_52) + /sizeof(asn_DEF_Reg_LaneAttributes_tags_52[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_LaneAttributes_52, + 2, /* Elements count */ + &asn_SPC_Reg_LaneAttributes_specs_52 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_57 = { + sizeof(struct Reg_SignalControlZone__regExtValue), + offsetof(struct Reg_SignalControlZone__regExtValue, _asn_ctx), + offsetof(struct Reg_SignalControlZone__regExtValue, present), + sizeof(((struct Reg_SignalControlZone__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_57 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_57 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_SignalControlZone_55[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_SignalControlZone, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_56, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_56, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_55 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_SignalControlZone, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_57, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_57, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_57, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_55 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_SignalControlZone_tags_55[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_SignalControlZone_tag2el_55[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalControlZone_specs_55 = { + sizeof(struct Reg_SignalControlZone), + offsetof(struct Reg_SignalControlZone, _asn_ctx), + asn_MAP_Reg_SignalControlZone_tag2el_55, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_SignalControlZone = { + "Reg-SignalControlZone", + "Reg-SignalControlZone", + &asn_OP_SEQUENCE, + asn_DEF_Reg_SignalControlZone_tags_55, + sizeof(asn_DEF_Reg_SignalControlZone_tags_55) + /sizeof(asn_DEF_Reg_SignalControlZone_tags_55[0]), /* 1 */ + asn_DEF_Reg_SignalControlZone_tags_55, /* Same as above */ + sizeof(asn_DEF_Reg_SignalControlZone_tags_55) + /sizeof(asn_DEF_Reg_SignalControlZone_tags_55[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_SignalControlZone_55, + 2, /* Elements count */ + &asn_SPC_Reg_SignalControlZone_specs_55 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regExtValue_60[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_RestrictionUserType__regExtValue, choice.RestrictionUserType_addGrpC), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RestrictionUserType_addGrpC, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RestrictionUserType-addGrpC" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_regExtValue_tag2el_60[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RestrictionUserType-addGrpC */ +}; +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_60 = { + sizeof(struct Reg_RestrictionUserType__regExtValue), + offsetof(struct Reg_RestrictionUserType__regExtValue, _asn_ctx), + offsetof(struct Reg_RestrictionUserType__regExtValue, present), + sizeof(((struct Reg_RestrictionUserType__regExtValue *)0)->present), + asn_MAP_regExtValue_tag2el_60, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_60 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_regExtValue_60, + 1, /* Elements count */ + &asn_SPC_regExtValue_specs_60 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_RestrictionUserType_58[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_RestrictionUserType, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_59, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_59, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_58 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_RestrictionUserType, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_60, + select_Reg_RestrictionUserType_regExtValue_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_60, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_60, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_58 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_RestrictionUserType_tags_58[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_RestrictionUserType_tag2el_58[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_RestrictionUserType_specs_58 = { + sizeof(struct Reg_RestrictionUserType), + offsetof(struct Reg_RestrictionUserType, _asn_ctx), + asn_MAP_Reg_RestrictionUserType_tag2el_58, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_RestrictionUserType = { + "Reg-RestrictionUserType", + "Reg-RestrictionUserType", + &asn_OP_SEQUENCE, + asn_DEF_Reg_RestrictionUserType_tags_58, + sizeof(asn_DEF_Reg_RestrictionUserType_tags_58) + /sizeof(asn_DEF_Reg_RestrictionUserType_tags_58[0]), /* 1 */ + asn_DEF_Reg_RestrictionUserType_tags_58, /* Same as above */ + sizeof(asn_DEF_Reg_RestrictionUserType_tags_58) + /sizeof(asn_DEF_Reg_RestrictionUserType_tags_58[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_RestrictionUserType_58, + 2, /* Elements count */ + &asn_SPC_Reg_RestrictionUserType_specs_58 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_63 = { + sizeof(struct Reg_RoadSegment__regExtValue), + offsetof(struct Reg_RoadSegment__regExtValue, _asn_ctx), + offsetof(struct Reg_RoadSegment__regExtValue, present), + sizeof(((struct Reg_RoadSegment__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_63 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_63 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_RoadSegment_61[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_RoadSegment, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_62, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_62, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_61 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_RoadSegment, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_63, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_63, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_63, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_61 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_RoadSegment_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_RoadSegment_tag2el_61[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_RoadSegment_specs_61 = { + sizeof(struct Reg_RoadSegment), + offsetof(struct Reg_RoadSegment, _asn_ctx), + asn_MAP_Reg_RoadSegment_tag2el_61, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_RoadSegment = { + "Reg-RoadSegment", + "Reg-RoadSegment", + &asn_OP_SEQUENCE, + asn_DEF_Reg_RoadSegment_tags_61, + sizeof(asn_DEF_Reg_RoadSegment_tags_61) + /sizeof(asn_DEF_Reg_RoadSegment_tags_61[0]), /* 1 */ + asn_DEF_Reg_RoadSegment_tags_61, /* Same as above */ + sizeof(asn_DEF_Reg_RoadSegment_tags_61) + /sizeof(asn_DEF_Reg_RoadSegment_tags_61[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_RoadSegment_61, + 2, /* Elements count */ + &asn_SPC_Reg_RoadSegment_specs_61 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_66 = { + sizeof(struct Reg_NMEAcorrections__regExtValue), + offsetof(struct Reg_NMEAcorrections__regExtValue, _asn_ctx), + offsetof(struct Reg_NMEAcorrections__regExtValue, present), + sizeof(((struct Reg_NMEAcorrections__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_66 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_66 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_NMEAcorrections_64[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_NMEAcorrections, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_65, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_65, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_64 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_NMEAcorrections, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_66, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_66, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_66, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_64 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_NMEAcorrections_tags_64[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_NMEAcorrections_tag2el_64[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_NMEAcorrections_specs_64 = { + sizeof(struct Reg_NMEAcorrections), + offsetof(struct Reg_NMEAcorrections, _asn_ctx), + asn_MAP_Reg_NMEAcorrections_tag2el_64, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_NMEAcorrections = { + "Reg-NMEAcorrections", + "Reg-NMEAcorrections", + &asn_OP_SEQUENCE, + asn_DEF_Reg_NMEAcorrections_tags_64, + sizeof(asn_DEF_Reg_NMEAcorrections_tags_64) + /sizeof(asn_DEF_Reg_NMEAcorrections_tags_64[0]), /* 1 */ + asn_DEF_Reg_NMEAcorrections_tags_64, /* Same as above */ + sizeof(asn_DEF_Reg_NMEAcorrections_tags_64) + /sizeof(asn_DEF_Reg_NMEAcorrections_tags_64[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_NMEAcorrections_64, + 2, /* Elements count */ + &asn_SPC_Reg_NMEAcorrections_specs_64 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_69 = { + sizeof(struct Reg_PersonalSafetyMessage__regExtValue), + offsetof(struct Reg_PersonalSafetyMessage__regExtValue, _asn_ctx), + offsetof(struct Reg_PersonalSafetyMessage__regExtValue, present), + sizeof(((struct Reg_PersonalSafetyMessage__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_69 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_69 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_PersonalSafetyMessage_67[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_PersonalSafetyMessage, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_68, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_68, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_67 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_PersonalSafetyMessage, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_69, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_69, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_69, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_67 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_PersonalSafetyMessage_tags_67[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_PersonalSafetyMessage_tag2el_67[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_PersonalSafetyMessage_specs_67 = { + sizeof(struct Reg_PersonalSafetyMessage), + offsetof(struct Reg_PersonalSafetyMessage, _asn_ctx), + asn_MAP_Reg_PersonalSafetyMessage_tag2el_67, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_PersonalSafetyMessage = { + "Reg-PersonalSafetyMessage", + "Reg-PersonalSafetyMessage", + &asn_OP_SEQUENCE, + asn_DEF_Reg_PersonalSafetyMessage_tags_67, + sizeof(asn_DEF_Reg_PersonalSafetyMessage_tags_67) + /sizeof(asn_DEF_Reg_PersonalSafetyMessage_tags_67[0]), /* 1 */ + asn_DEF_Reg_PersonalSafetyMessage_tags_67, /* Same as above */ + sizeof(asn_DEF_Reg_PersonalSafetyMessage_tags_67) + /sizeof(asn_DEF_Reg_PersonalSafetyMessage_tags_67[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_PersonalSafetyMessage_67, + 2, /* Elements count */ + &asn_SPC_Reg_PersonalSafetyMessage_specs_67 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_72 = { + sizeof(struct Reg_ProbeDataManagement__regExtValue), + offsetof(struct Reg_ProbeDataManagement__regExtValue, _asn_ctx), + offsetof(struct Reg_ProbeDataManagement__regExtValue, present), + sizeof(((struct Reg_ProbeDataManagement__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_72 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_72 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_ProbeDataManagement_70[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_ProbeDataManagement, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_71, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_71, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_70 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_ProbeDataManagement, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_72, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_72, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_72, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_70 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_ProbeDataManagement_tags_70[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_ProbeDataManagement_tag2el_70[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_ProbeDataManagement_specs_70 = { + sizeof(struct Reg_ProbeDataManagement), + offsetof(struct Reg_ProbeDataManagement, _asn_ctx), + asn_MAP_Reg_ProbeDataManagement_tag2el_70, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_ProbeDataManagement = { + "Reg-ProbeDataManagement", + "Reg-ProbeDataManagement", + &asn_OP_SEQUENCE, + asn_DEF_Reg_ProbeDataManagement_tags_70, + sizeof(asn_DEF_Reg_ProbeDataManagement_tags_70) + /sizeof(asn_DEF_Reg_ProbeDataManagement_tags_70[0]), /* 1 */ + asn_DEF_Reg_ProbeDataManagement_tags_70, /* Same as above */ + sizeof(asn_DEF_Reg_ProbeDataManagement_tags_70) + /sizeof(asn_DEF_Reg_ProbeDataManagement_tags_70[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_ProbeDataManagement_70, + 2, /* Elements count */ + &asn_SPC_Reg_ProbeDataManagement_specs_70 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_75 = { + sizeof(struct Reg_ProbeVehicleData__regExtValue), + offsetof(struct Reg_ProbeVehicleData__regExtValue, _asn_ctx), + offsetof(struct Reg_ProbeVehicleData__regExtValue, present), + sizeof(((struct Reg_ProbeVehicleData__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_75 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_75 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_ProbeVehicleData_73[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_ProbeVehicleData, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_74, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_74, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_73 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_ProbeVehicleData, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_75, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_75, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_75, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_73 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_ProbeVehicleData_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_ProbeVehicleData_tag2el_73[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_ProbeVehicleData_specs_73 = { + sizeof(struct Reg_ProbeVehicleData), + offsetof(struct Reg_ProbeVehicleData, _asn_ctx), + asn_MAP_Reg_ProbeVehicleData_tag2el_73, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_ProbeVehicleData = { + "Reg-ProbeVehicleData", + "Reg-ProbeVehicleData", + &asn_OP_SEQUENCE, + asn_DEF_Reg_ProbeVehicleData_tags_73, + sizeof(asn_DEF_Reg_ProbeVehicleData_tags_73) + /sizeof(asn_DEF_Reg_ProbeVehicleData_tags_73[0]), /* 1 */ + asn_DEF_Reg_ProbeVehicleData_tags_73, /* Same as above */ + sizeof(asn_DEF_Reg_ProbeVehicleData_tags_73) + /sizeof(asn_DEF_Reg_ProbeVehicleData_tags_73[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_ProbeVehicleData_73, + 2, /* Elements count */ + &asn_SPC_Reg_ProbeVehicleData_specs_73 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_78 = { + sizeof(struct Reg_RoadSideAlert__regExtValue), + offsetof(struct Reg_RoadSideAlert__regExtValue, _asn_ctx), + offsetof(struct Reg_RoadSideAlert__regExtValue, present), + sizeof(((struct Reg_RoadSideAlert__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_78 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_78 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_RoadSideAlert_76[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_RoadSideAlert, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_77, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_77, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_76 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_RoadSideAlert, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_78, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_78, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_78, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_76 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_RoadSideAlert_tags_76[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_RoadSideAlert_tag2el_76[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_RoadSideAlert_specs_76 = { + sizeof(struct Reg_RoadSideAlert), + offsetof(struct Reg_RoadSideAlert, _asn_ctx), + asn_MAP_Reg_RoadSideAlert_tag2el_76, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_RoadSideAlert = { + "Reg-RoadSideAlert", + "Reg-RoadSideAlert", + &asn_OP_SEQUENCE, + asn_DEF_Reg_RoadSideAlert_tags_76, + sizeof(asn_DEF_Reg_RoadSideAlert_tags_76) + /sizeof(asn_DEF_Reg_RoadSideAlert_tags_76[0]), /* 1 */ + asn_DEF_Reg_RoadSideAlert_tags_76, /* Same as above */ + sizeof(asn_DEF_Reg_RoadSideAlert_tags_76) + /sizeof(asn_DEF_Reg_RoadSideAlert_tags_76[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_RoadSideAlert_76, + 2, /* Elements count */ + &asn_SPC_Reg_RoadSideAlert_specs_76 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_81 = { + sizeof(struct Reg_RTCMcorrections__regExtValue), + offsetof(struct Reg_RTCMcorrections__regExtValue, _asn_ctx), + offsetof(struct Reg_RTCMcorrections__regExtValue, present), + sizeof(((struct Reg_RTCMcorrections__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_81 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_81 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_RTCMcorrections_79[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_RTCMcorrections, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_80, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_80, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_79 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_RTCMcorrections, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_81, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_81, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_81, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_79 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_RTCMcorrections_tags_79[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_RTCMcorrections_tag2el_79[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_RTCMcorrections_specs_79 = { + sizeof(struct Reg_RTCMcorrections), + offsetof(struct Reg_RTCMcorrections, _asn_ctx), + asn_MAP_Reg_RTCMcorrections_tag2el_79, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_RTCMcorrections = { + "Reg-RTCMcorrections", + "Reg-RTCMcorrections", + &asn_OP_SEQUENCE, + asn_DEF_Reg_RTCMcorrections_tags_79, + sizeof(asn_DEF_Reg_RTCMcorrections_tags_79) + /sizeof(asn_DEF_Reg_RTCMcorrections_tags_79[0]), /* 1 */ + asn_DEF_Reg_RTCMcorrections_tags_79, /* Same as above */ + sizeof(asn_DEF_Reg_RTCMcorrections_tags_79) + /sizeof(asn_DEF_Reg_RTCMcorrections_tags_79[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_RTCMcorrections_79, + 2, /* Elements count */ + &asn_SPC_Reg_RTCMcorrections_specs_79 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_84 = { + sizeof(struct Reg_SignalRequestMessage__regExtValue), + offsetof(struct Reg_SignalRequestMessage__regExtValue, _asn_ctx), + offsetof(struct Reg_SignalRequestMessage__regExtValue, present), + sizeof(((struct Reg_SignalRequestMessage__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_84 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_84 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_SignalRequestMessage_82[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_SignalRequestMessage, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_83, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_83, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_82 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_SignalRequestMessage, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_84, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_84, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_84, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_82 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_SignalRequestMessage_tags_82[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_SignalRequestMessage_tag2el_82[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalRequestMessage_specs_82 = { + sizeof(struct Reg_SignalRequestMessage), + offsetof(struct Reg_SignalRequestMessage, _asn_ctx), + asn_MAP_Reg_SignalRequestMessage_tag2el_82, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_SignalRequestMessage = { + "Reg-SignalRequestMessage", + "Reg-SignalRequestMessage", + &asn_OP_SEQUENCE, + asn_DEF_Reg_SignalRequestMessage_tags_82, + sizeof(asn_DEF_Reg_SignalRequestMessage_tags_82) + /sizeof(asn_DEF_Reg_SignalRequestMessage_tags_82[0]), /* 1 */ + asn_DEF_Reg_SignalRequestMessage_tags_82, /* Same as above */ + sizeof(asn_DEF_Reg_SignalRequestMessage_tags_82) + /sizeof(asn_DEF_Reg_SignalRequestMessage_tags_82[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_SignalRequestMessage_82, + 2, /* Elements count */ + &asn_SPC_Reg_SignalRequestMessage_specs_82 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_87 = { + sizeof(struct Reg_RequestorDescription__regExtValue), + offsetof(struct Reg_RequestorDescription__regExtValue, _asn_ctx), + offsetof(struct Reg_RequestorDescription__regExtValue, present), + sizeof(((struct Reg_RequestorDescription__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_87 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_87 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_RequestorDescription_85[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_RequestorDescription, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_86, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_86, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_85 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_RequestorDescription, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_87, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_87, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_87, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_85 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_RequestorDescription_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_RequestorDescription_tag2el_85[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_RequestorDescription_specs_85 = { + sizeof(struct Reg_RequestorDescription), + offsetof(struct Reg_RequestorDescription, _asn_ctx), + asn_MAP_Reg_RequestorDescription_tag2el_85, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_RequestorDescription = { + "Reg-RequestorDescription", + "Reg-RequestorDescription", + &asn_OP_SEQUENCE, + asn_DEF_Reg_RequestorDescription_tags_85, + sizeof(asn_DEF_Reg_RequestorDescription_tags_85) + /sizeof(asn_DEF_Reg_RequestorDescription_tags_85[0]), /* 1 */ + asn_DEF_Reg_RequestorDescription_tags_85, /* Same as above */ + sizeof(asn_DEF_Reg_RequestorDescription_tags_85) + /sizeof(asn_DEF_Reg_RequestorDescription_tags_85[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_RequestorDescription_85, + 2, /* Elements count */ + &asn_SPC_Reg_RequestorDescription_specs_85 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_90 = { + sizeof(struct Reg_SignalRequestPackage__regExtValue), + offsetof(struct Reg_SignalRequestPackage__regExtValue, _asn_ctx), + offsetof(struct Reg_SignalRequestPackage__regExtValue, present), + sizeof(((struct Reg_SignalRequestPackage__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_90 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_90 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_SignalRequestPackage_88[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_SignalRequestPackage, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_89, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_89, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_88 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_SignalRequestPackage, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_90, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_90, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_90, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_88 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_SignalRequestPackage_tags_88[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_SignalRequestPackage_tag2el_88[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalRequestPackage_specs_88 = { + sizeof(struct Reg_SignalRequestPackage), + offsetof(struct Reg_SignalRequestPackage, _asn_ctx), + asn_MAP_Reg_SignalRequestPackage_tag2el_88, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_SignalRequestPackage = { + "Reg-SignalRequestPackage", + "Reg-SignalRequestPackage", + &asn_OP_SEQUENCE, + asn_DEF_Reg_SignalRequestPackage_tags_88, + sizeof(asn_DEF_Reg_SignalRequestPackage_tags_88) + /sizeof(asn_DEF_Reg_SignalRequestPackage_tags_88[0]), /* 1 */ + asn_DEF_Reg_SignalRequestPackage_tags_88, /* Same as above */ + sizeof(asn_DEF_Reg_SignalRequestPackage_tags_88) + /sizeof(asn_DEF_Reg_SignalRequestPackage_tags_88[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_SignalRequestPackage_88, + 2, /* Elements count */ + &asn_SPC_Reg_SignalRequestPackage_specs_88 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_93 = { + sizeof(struct Reg_SignalRequest__regExtValue), + offsetof(struct Reg_SignalRequest__regExtValue, _asn_ctx), + offsetof(struct Reg_SignalRequest__regExtValue, present), + sizeof(((struct Reg_SignalRequest__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_93 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_93 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_SignalRequest_91[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_SignalRequest, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_92, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_92, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_91 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_SignalRequest, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_93, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_93, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_93, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_91 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_SignalRequest_tags_91[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_SignalRequest_tag2el_91[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalRequest_specs_91 = { + sizeof(struct Reg_SignalRequest), + offsetof(struct Reg_SignalRequest, _asn_ctx), + asn_MAP_Reg_SignalRequest_tag2el_91, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_SignalRequest = { + "Reg-SignalRequest", + "Reg-SignalRequest", + &asn_OP_SEQUENCE, + asn_DEF_Reg_SignalRequest_tags_91, + sizeof(asn_DEF_Reg_SignalRequest_tags_91) + /sizeof(asn_DEF_Reg_SignalRequest_tags_91[0]), /* 1 */ + asn_DEF_Reg_SignalRequest_tags_91, /* Same as above */ + sizeof(asn_DEF_Reg_SignalRequest_tags_91) + /sizeof(asn_DEF_Reg_SignalRequest_tags_91[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_SignalRequest_91, + 2, /* Elements count */ + &asn_SPC_Reg_SignalRequest_specs_91 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_96 = { + sizeof(struct Reg_SignalStatusMessage__regExtValue), + offsetof(struct Reg_SignalStatusMessage__regExtValue, _asn_ctx), + offsetof(struct Reg_SignalStatusMessage__regExtValue, present), + sizeof(((struct Reg_SignalStatusMessage__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_96 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_96 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_SignalStatusMessage_94[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_SignalStatusMessage, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_95, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_95, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_94 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_SignalStatusMessage, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_96, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_96, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_96, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_94 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_SignalStatusMessage_tags_94[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_SignalStatusMessage_tag2el_94[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalStatusMessage_specs_94 = { + sizeof(struct Reg_SignalStatusMessage), + offsetof(struct Reg_SignalStatusMessage, _asn_ctx), + asn_MAP_Reg_SignalStatusMessage_tag2el_94, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_SignalStatusMessage = { + "Reg-SignalStatusMessage", + "Reg-SignalStatusMessage", + &asn_OP_SEQUENCE, + asn_DEF_Reg_SignalStatusMessage_tags_94, + sizeof(asn_DEF_Reg_SignalStatusMessage_tags_94) + /sizeof(asn_DEF_Reg_SignalStatusMessage_tags_94[0]), /* 1 */ + asn_DEF_Reg_SignalStatusMessage_tags_94, /* Same as above */ + sizeof(asn_DEF_Reg_SignalStatusMessage_tags_94) + /sizeof(asn_DEF_Reg_SignalStatusMessage_tags_94[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_SignalStatusMessage_94, + 2, /* Elements count */ + &asn_SPC_Reg_SignalStatusMessage_specs_94 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_99 = { + sizeof(struct Reg_SignalStatusPackage__regExtValue), + offsetof(struct Reg_SignalStatusPackage__regExtValue, _asn_ctx), + offsetof(struct Reg_SignalStatusPackage__regExtValue, present), + sizeof(((struct Reg_SignalStatusPackage__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_99 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_99 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_SignalStatusPackage_97[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_SignalStatusPackage, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_98, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_98, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_97 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_SignalStatusPackage, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_99, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_99, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_99, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_97 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_SignalStatusPackage_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_SignalStatusPackage_tag2el_97[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalStatusPackage_specs_97 = { + sizeof(struct Reg_SignalStatusPackage), + offsetof(struct Reg_SignalStatusPackage, _asn_ctx), + asn_MAP_Reg_SignalStatusPackage_tag2el_97, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_SignalStatusPackage = { + "Reg-SignalStatusPackage", + "Reg-SignalStatusPackage", + &asn_OP_SEQUENCE, + asn_DEF_Reg_SignalStatusPackage_tags_97, + sizeof(asn_DEF_Reg_SignalStatusPackage_tags_97) + /sizeof(asn_DEF_Reg_SignalStatusPackage_tags_97[0]), /* 1 */ + asn_DEF_Reg_SignalStatusPackage_tags_97, /* Same as above */ + sizeof(asn_DEF_Reg_SignalStatusPackage_tags_97) + /sizeof(asn_DEF_Reg_SignalStatusPackage_tags_97[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_SignalStatusPackage_97, + 2, /* Elements count */ + &asn_SPC_Reg_SignalStatusPackage_specs_97 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_102 = { + sizeof(struct Reg_SignalStatus__regExtValue), + offsetof(struct Reg_SignalStatus__regExtValue, _asn_ctx), + offsetof(struct Reg_SignalStatus__regExtValue, present), + sizeof(((struct Reg_SignalStatus__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_102 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_102 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_SignalStatus_100[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_SignalStatus, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_101, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_101, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_100 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_SignalStatus, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_102, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_102, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_102, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_100 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_SignalStatus_tags_100[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_SignalStatus_tag2el_100[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_SignalStatus_specs_100 = { + sizeof(struct Reg_SignalStatus), + offsetof(struct Reg_SignalStatus, _asn_ctx), + asn_MAP_Reg_SignalStatus_tag2el_100, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_SignalStatus = { + "Reg-SignalStatus", + "Reg-SignalStatus", + &asn_OP_SEQUENCE, + asn_DEF_Reg_SignalStatus_tags_100, + sizeof(asn_DEF_Reg_SignalStatus_tags_100) + /sizeof(asn_DEF_Reg_SignalStatus_tags_100[0]), /* 1 */ + asn_DEF_Reg_SignalStatus_tags_100, /* Same as above */ + sizeof(asn_DEF_Reg_SignalStatus_tags_100) + /sizeof(asn_DEF_Reg_SignalStatus_tags_100[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_SignalStatus_100, + 2, /* Elements count */ + &asn_SPC_Reg_SignalStatus_specs_100 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_105 = { + sizeof(struct Reg_SPAT__regExtValue), + offsetof(struct Reg_SPAT__regExtValue, _asn_ctx), + offsetof(struct Reg_SPAT__regExtValue, present), + sizeof(((struct Reg_SPAT__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_105 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_105 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_SPAT_103[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_SPAT, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_104, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_104, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_103 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_SPAT, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_105, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_105, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_105, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_103 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_SPAT_tags_103[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_SPAT_tag2el_103[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_SPAT_specs_103 = { + sizeof(struct Reg_SPAT), + offsetof(struct Reg_SPAT, _asn_ctx), + asn_MAP_Reg_SPAT_tag2el_103, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_SPAT = { + "Reg-SPAT", + "Reg-SPAT", + &asn_OP_SEQUENCE, + asn_DEF_Reg_SPAT_tags_103, + sizeof(asn_DEF_Reg_SPAT_tags_103) + /sizeof(asn_DEF_Reg_SPAT_tags_103[0]), /* 1 */ + asn_DEF_Reg_SPAT_tags_103, /* Same as above */ + sizeof(asn_DEF_Reg_SPAT_tags_103) + /sizeof(asn_DEF_Reg_SPAT_tags_103[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_SPAT_103, + 2, /* Elements count */ + &asn_SPC_Reg_SPAT_specs_103 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_108 = { + sizeof(struct Reg_AdvisorySpeed__regExtValue), + offsetof(struct Reg_AdvisorySpeed__regExtValue, _asn_ctx), + offsetof(struct Reg_AdvisorySpeed__regExtValue, present), + sizeof(((struct Reg_AdvisorySpeed__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_108 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_108 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_AdvisorySpeed_106[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_AdvisorySpeed, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_107, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_107, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_106 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_AdvisorySpeed, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_108, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_108, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_108, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_106 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_AdvisorySpeed_tags_106[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_AdvisorySpeed_tag2el_106[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_AdvisorySpeed_specs_106 = { + sizeof(struct Reg_AdvisorySpeed), + offsetof(struct Reg_AdvisorySpeed, _asn_ctx), + asn_MAP_Reg_AdvisorySpeed_tag2el_106, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_AdvisorySpeed = { + "Reg-AdvisorySpeed", + "Reg-AdvisorySpeed", + &asn_OP_SEQUENCE, + asn_DEF_Reg_AdvisorySpeed_tags_106, + sizeof(asn_DEF_Reg_AdvisorySpeed_tags_106) + /sizeof(asn_DEF_Reg_AdvisorySpeed_tags_106[0]), /* 1 */ + asn_DEF_Reg_AdvisorySpeed_tags_106, /* Same as above */ + sizeof(asn_DEF_Reg_AdvisorySpeed_tags_106) + /sizeof(asn_DEF_Reg_AdvisorySpeed_tags_106[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_AdvisorySpeed_106, + 2, /* Elements count */ + &asn_SPC_Reg_AdvisorySpeed_specs_106 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regExtValue_111[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_ConnectionManeuverAssist__regExtValue, choice.ConnectionManeuverAssist_addGrpC), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ConnectionManeuverAssist_addGrpC, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ConnectionManeuverAssist-addGrpC" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_regExtValue_tag2el_111[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* ConnectionManeuverAssist-addGrpC */ +}; +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_111 = { + sizeof(struct Reg_ConnectionManeuverAssist__regExtValue), + offsetof(struct Reg_ConnectionManeuverAssist__regExtValue, _asn_ctx), + offsetof(struct Reg_ConnectionManeuverAssist__regExtValue, present), + sizeof(((struct Reg_ConnectionManeuverAssist__regExtValue *)0)->present), + asn_MAP_regExtValue_tag2el_111, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_111 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_regExtValue_111, + 1, /* Elements count */ + &asn_SPC_regExtValue_specs_111 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_ConnectionManeuverAssist_109[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_ConnectionManeuverAssist, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_110, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_110, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_109 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_ConnectionManeuverAssist, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_111, + select_Reg_ConnectionManeuverAssist_regExtValue_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_111, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_111, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_109 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_ConnectionManeuverAssist_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_ConnectionManeuverAssist_tag2el_109[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_ConnectionManeuverAssist_specs_109 = { + sizeof(struct Reg_ConnectionManeuverAssist), + offsetof(struct Reg_ConnectionManeuverAssist, _asn_ctx), + asn_MAP_Reg_ConnectionManeuverAssist_tag2el_109, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_ConnectionManeuverAssist = { + "Reg-ConnectionManeuverAssist", + "Reg-ConnectionManeuverAssist", + &asn_OP_SEQUENCE, + asn_DEF_Reg_ConnectionManeuverAssist_tags_109, + sizeof(asn_DEF_Reg_ConnectionManeuverAssist_tags_109) + /sizeof(asn_DEF_Reg_ConnectionManeuverAssist_tags_109[0]), /* 1 */ + asn_DEF_Reg_ConnectionManeuverAssist_tags_109, /* Same as above */ + sizeof(asn_DEF_Reg_ConnectionManeuverAssist_tags_109) + /sizeof(asn_DEF_Reg_ConnectionManeuverAssist_tags_109[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_ConnectionManeuverAssist_109, + 2, /* Elements count */ + &asn_SPC_Reg_ConnectionManeuverAssist_specs_109 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regExtValue_114[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_IntersectionState__regExtValue, choice.IntersectionState_addGrpC), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IntersectionState_addGrpC, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "IntersectionState-addGrpC" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_regExtValue_tag2el_114[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* IntersectionState-addGrpC */ +}; +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_114 = { + sizeof(struct Reg_IntersectionState__regExtValue), + offsetof(struct Reg_IntersectionState__regExtValue, _asn_ctx), + offsetof(struct Reg_IntersectionState__regExtValue, present), + sizeof(((struct Reg_IntersectionState__regExtValue *)0)->present), + asn_MAP_regExtValue_tag2el_114, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_114 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_regExtValue_114, + 1, /* Elements count */ + &asn_SPC_regExtValue_specs_114 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_IntersectionState_112[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_IntersectionState, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_113, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_113, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_112 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_IntersectionState, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_114, + select_Reg_IntersectionState_regExtValue_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_114, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_114, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_112 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_IntersectionState_tags_112[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_IntersectionState_tag2el_112[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_IntersectionState_specs_112 = { + sizeof(struct Reg_IntersectionState), + offsetof(struct Reg_IntersectionState, _asn_ctx), + asn_MAP_Reg_IntersectionState_tag2el_112, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_IntersectionState = { + "Reg-IntersectionState", + "Reg-IntersectionState", + &asn_OP_SEQUENCE, + asn_DEF_Reg_IntersectionState_tags_112, + sizeof(asn_DEF_Reg_IntersectionState_tags_112) + /sizeof(asn_DEF_Reg_IntersectionState_tags_112[0]), /* 1 */ + asn_DEF_Reg_IntersectionState_tags_112, /* Same as above */ + sizeof(asn_DEF_Reg_IntersectionState_tags_112) + /sizeof(asn_DEF_Reg_IntersectionState_tags_112[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_IntersectionState_112, + 2, /* Elements count */ + &asn_SPC_Reg_IntersectionState_specs_112 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regExtValue_117[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_MovementEvent__regExtValue, choice.MovementEvent_addGrpB), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MovementEvent_addGrpB, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "MovementEvent-addGrpB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_regExtValue_tag2el_117[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* MovementEvent-addGrpB */ +}; +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_117 = { + sizeof(struct Reg_MovementEvent__regExtValue), + offsetof(struct Reg_MovementEvent__regExtValue, _asn_ctx), + offsetof(struct Reg_MovementEvent__regExtValue, present), + sizeof(((struct Reg_MovementEvent__regExtValue *)0)->present), + asn_MAP_regExtValue_tag2el_117, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_117 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_regExtValue_117, + 1, /* Elements count */ + &asn_SPC_regExtValue_specs_117 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_MovementEvent_115[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_MovementEvent, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_116, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_116, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_115 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_MovementEvent, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_117, + select_Reg_MovementEvent_regExtValue_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_117, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_117, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_115 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_MovementEvent_tags_115[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_MovementEvent_tag2el_115[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_MovementEvent_specs_115 = { + sizeof(struct Reg_MovementEvent), + offsetof(struct Reg_MovementEvent, _asn_ctx), + asn_MAP_Reg_MovementEvent_tag2el_115, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_MovementEvent = { + "Reg-MovementEvent", + "Reg-MovementEvent", + &asn_OP_SEQUENCE, + asn_DEF_Reg_MovementEvent_tags_115, + sizeof(asn_DEF_Reg_MovementEvent_tags_115) + /sizeof(asn_DEF_Reg_MovementEvent_tags_115[0]), /* 1 */ + asn_DEF_Reg_MovementEvent_tags_115, /* Same as above */ + sizeof(asn_DEF_Reg_MovementEvent_tags_115) + /sizeof(asn_DEF_Reg_MovementEvent_tags_115[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_MovementEvent_115, + 2, /* Elements count */ + &asn_SPC_Reg_MovementEvent_specs_115 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_120 = { + sizeof(struct Reg_MovementState__regExtValue), + offsetof(struct Reg_MovementState__regExtValue, _asn_ctx), + offsetof(struct Reg_MovementState__regExtValue, present), + sizeof(((struct Reg_MovementState__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_120 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_120 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_MovementState_118[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_MovementState, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_119, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_119, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_118 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_MovementState, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_120, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_120, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_120, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_118 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_MovementState_tags_118[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_MovementState_tag2el_118[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_MovementState_specs_118 = { + sizeof(struct Reg_MovementState), + offsetof(struct Reg_MovementState, _asn_ctx), + asn_MAP_Reg_MovementState_tag2el_118, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_MovementState = { + "Reg-MovementState", + "Reg-MovementState", + &asn_OP_SEQUENCE, + asn_DEF_Reg_MovementState_tags_118, + sizeof(asn_DEF_Reg_MovementState_tags_118) + /sizeof(asn_DEF_Reg_MovementState_tags_118[0]), /* 1 */ + asn_DEF_Reg_MovementState_tags_118, /* Same as above */ + sizeof(asn_DEF_Reg_MovementState_tags_118) + /sizeof(asn_DEF_Reg_MovementState_tags_118[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_MovementState_118, + 2, /* Elements count */ + &asn_SPC_Reg_MovementState_specs_118 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_123 = { + sizeof(struct Reg_TestMessage00__regExtValue), + offsetof(struct Reg_TestMessage00__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage00__regExtValue, present), + sizeof(((struct Reg_TestMessage00__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_123 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_123 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage00_121[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage00, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_122, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_122, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_121 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage00, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_123, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_123, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_123, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_121 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage00_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage00_tag2el_121[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage00_specs_121 = { + sizeof(struct Reg_TestMessage00), + offsetof(struct Reg_TestMessage00, _asn_ctx), + asn_MAP_Reg_TestMessage00_tag2el_121, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage00 = { + "Reg-TestMessage00", + "Reg-TestMessage00", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage00_tags_121, + sizeof(asn_DEF_Reg_TestMessage00_tags_121) + /sizeof(asn_DEF_Reg_TestMessage00_tags_121[0]), /* 1 */ + asn_DEF_Reg_TestMessage00_tags_121, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage00_tags_121) + /sizeof(asn_DEF_Reg_TestMessage00_tags_121[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage00_121, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage00_specs_121 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_126 = { + sizeof(struct Reg_TestMessage01__regExtValue), + offsetof(struct Reg_TestMessage01__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage01__regExtValue, present), + sizeof(((struct Reg_TestMessage01__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_126 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_126 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage01_124[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage01, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_125, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_125, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_124 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage01, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_126, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_126, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_126, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_124 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage01_tags_124[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage01_tag2el_124[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage01_specs_124 = { + sizeof(struct Reg_TestMessage01), + offsetof(struct Reg_TestMessage01, _asn_ctx), + asn_MAP_Reg_TestMessage01_tag2el_124, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage01 = { + "Reg-TestMessage01", + "Reg-TestMessage01", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage01_tags_124, + sizeof(asn_DEF_Reg_TestMessage01_tags_124) + /sizeof(asn_DEF_Reg_TestMessage01_tags_124[0]), /* 1 */ + asn_DEF_Reg_TestMessage01_tags_124, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage01_tags_124) + /sizeof(asn_DEF_Reg_TestMessage01_tags_124[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage01_124, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage01_specs_124 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_129 = { + sizeof(struct Reg_TestMessage02__regExtValue), + offsetof(struct Reg_TestMessage02__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage02__regExtValue, present), + sizeof(((struct Reg_TestMessage02__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_129 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_129 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage02_127[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage02, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_128, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_128, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_127 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage02, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_129, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_129, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_129, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_127 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage02_tags_127[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage02_tag2el_127[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage02_specs_127 = { + sizeof(struct Reg_TestMessage02), + offsetof(struct Reg_TestMessage02, _asn_ctx), + asn_MAP_Reg_TestMessage02_tag2el_127, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage02 = { + "Reg-TestMessage02", + "Reg-TestMessage02", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage02_tags_127, + sizeof(asn_DEF_Reg_TestMessage02_tags_127) + /sizeof(asn_DEF_Reg_TestMessage02_tags_127[0]), /* 1 */ + asn_DEF_Reg_TestMessage02_tags_127, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage02_tags_127) + /sizeof(asn_DEF_Reg_TestMessage02_tags_127[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage02_127, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage02_specs_127 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_132 = { + sizeof(struct Reg_TestMessage03__regExtValue), + offsetof(struct Reg_TestMessage03__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage03__regExtValue, present), + sizeof(((struct Reg_TestMessage03__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_132 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_132 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage03_130[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage03, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_131, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_131, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_130 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage03, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_132, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_132, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_132, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_130 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage03_tags_130[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage03_tag2el_130[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage03_specs_130 = { + sizeof(struct Reg_TestMessage03), + offsetof(struct Reg_TestMessage03, _asn_ctx), + asn_MAP_Reg_TestMessage03_tag2el_130, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage03 = { + "Reg-TestMessage03", + "Reg-TestMessage03", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage03_tags_130, + sizeof(asn_DEF_Reg_TestMessage03_tags_130) + /sizeof(asn_DEF_Reg_TestMessage03_tags_130[0]), /* 1 */ + asn_DEF_Reg_TestMessage03_tags_130, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage03_tags_130) + /sizeof(asn_DEF_Reg_TestMessage03_tags_130[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage03_130, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage03_specs_130 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_135 = { + sizeof(struct Reg_TestMessage04__regExtValue), + offsetof(struct Reg_TestMessage04__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage04__regExtValue, present), + sizeof(((struct Reg_TestMessage04__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_135 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_135 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage04_133[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage04, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_134, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_134, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_133 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage04, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_135, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_135, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_135, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_133 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage04_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage04_tag2el_133[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage04_specs_133 = { + sizeof(struct Reg_TestMessage04), + offsetof(struct Reg_TestMessage04, _asn_ctx), + asn_MAP_Reg_TestMessage04_tag2el_133, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage04 = { + "Reg-TestMessage04", + "Reg-TestMessage04", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage04_tags_133, + sizeof(asn_DEF_Reg_TestMessage04_tags_133) + /sizeof(asn_DEF_Reg_TestMessage04_tags_133[0]), /* 1 */ + asn_DEF_Reg_TestMessage04_tags_133, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage04_tags_133) + /sizeof(asn_DEF_Reg_TestMessage04_tags_133[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage04_133, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage04_specs_133 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_138 = { + sizeof(struct Reg_TestMessage05__regExtValue), + offsetof(struct Reg_TestMessage05__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage05__regExtValue, present), + sizeof(((struct Reg_TestMessage05__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_138 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_138 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage05_136[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage05, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_137, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_137, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_136 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage05, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_138, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_138, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_138, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_136 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage05_tags_136[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage05_tag2el_136[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage05_specs_136 = { + sizeof(struct Reg_TestMessage05), + offsetof(struct Reg_TestMessage05, _asn_ctx), + asn_MAP_Reg_TestMessage05_tag2el_136, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage05 = { + "Reg-TestMessage05", + "Reg-TestMessage05", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage05_tags_136, + sizeof(asn_DEF_Reg_TestMessage05_tags_136) + /sizeof(asn_DEF_Reg_TestMessage05_tags_136[0]), /* 1 */ + asn_DEF_Reg_TestMessage05_tags_136, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage05_tags_136) + /sizeof(asn_DEF_Reg_TestMessage05_tags_136[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage05_136, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage05_specs_136 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_141 = { + sizeof(struct Reg_TestMessage06__regExtValue), + offsetof(struct Reg_TestMessage06__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage06__regExtValue, present), + sizeof(((struct Reg_TestMessage06__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_141 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_141 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage06_139[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage06, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_140, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_140, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_139 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage06, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_141, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_141, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_141, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_139 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage06_tags_139[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage06_tag2el_139[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage06_specs_139 = { + sizeof(struct Reg_TestMessage06), + offsetof(struct Reg_TestMessage06, _asn_ctx), + asn_MAP_Reg_TestMessage06_tag2el_139, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage06 = { + "Reg-TestMessage06", + "Reg-TestMessage06", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage06_tags_139, + sizeof(asn_DEF_Reg_TestMessage06_tags_139) + /sizeof(asn_DEF_Reg_TestMessage06_tags_139[0]), /* 1 */ + asn_DEF_Reg_TestMessage06_tags_139, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage06_tags_139) + /sizeof(asn_DEF_Reg_TestMessage06_tags_139[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage06_139, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage06_specs_139 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_144 = { + sizeof(struct Reg_TestMessage07__regExtValue), + offsetof(struct Reg_TestMessage07__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage07__regExtValue, present), + sizeof(((struct Reg_TestMessage07__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_144 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_144 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage07_142[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage07, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_143, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_143, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_142 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage07, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_144, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_144, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_144, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_142 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage07_tags_142[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage07_tag2el_142[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage07_specs_142 = { + sizeof(struct Reg_TestMessage07), + offsetof(struct Reg_TestMessage07, _asn_ctx), + asn_MAP_Reg_TestMessage07_tag2el_142, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage07 = { + "Reg-TestMessage07", + "Reg-TestMessage07", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage07_tags_142, + sizeof(asn_DEF_Reg_TestMessage07_tags_142) + /sizeof(asn_DEF_Reg_TestMessage07_tags_142[0]), /* 1 */ + asn_DEF_Reg_TestMessage07_tags_142, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage07_tags_142) + /sizeof(asn_DEF_Reg_TestMessage07_tags_142[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage07_142, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage07_specs_142 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_147 = { + sizeof(struct Reg_TestMessage08__regExtValue), + offsetof(struct Reg_TestMessage08__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage08__regExtValue, present), + sizeof(((struct Reg_TestMessage08__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_147 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_147 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage08_145[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage08, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_146, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_146, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_145 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage08, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_147, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_147, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_147, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_145 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage08_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage08_tag2el_145[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage08_specs_145 = { + sizeof(struct Reg_TestMessage08), + offsetof(struct Reg_TestMessage08, _asn_ctx), + asn_MAP_Reg_TestMessage08_tag2el_145, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage08 = { + "Reg-TestMessage08", + "Reg-TestMessage08", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage08_tags_145, + sizeof(asn_DEF_Reg_TestMessage08_tags_145) + /sizeof(asn_DEF_Reg_TestMessage08_tags_145[0]), /* 1 */ + asn_DEF_Reg_TestMessage08_tags_145, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage08_tags_145) + /sizeof(asn_DEF_Reg_TestMessage08_tags_145[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage08_145, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage08_specs_145 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_150 = { + sizeof(struct Reg_TestMessage09__regExtValue), + offsetof(struct Reg_TestMessage09__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage09__regExtValue, present), + sizeof(((struct Reg_TestMessage09__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_150 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_150 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage09_148[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage09, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_149, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_149, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_148 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage09, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_150, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_150, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_150, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_148 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage09_tags_148[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage09_tag2el_148[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage09_specs_148 = { + sizeof(struct Reg_TestMessage09), + offsetof(struct Reg_TestMessage09, _asn_ctx), + asn_MAP_Reg_TestMessage09_tag2el_148, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage09 = { + "Reg-TestMessage09", + "Reg-TestMessage09", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage09_tags_148, + sizeof(asn_DEF_Reg_TestMessage09_tags_148) + /sizeof(asn_DEF_Reg_TestMessage09_tags_148[0]), /* 1 */ + asn_DEF_Reg_TestMessage09_tags_148, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage09_tags_148) + /sizeof(asn_DEF_Reg_TestMessage09_tags_148[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage09_148, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage09_specs_148 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_153 = { + sizeof(struct Reg_TestMessage10__regExtValue), + offsetof(struct Reg_TestMessage10__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage10__regExtValue, present), + sizeof(((struct Reg_TestMessage10__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_153 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_153 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage10_151[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage10, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_152, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_152, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_151 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage10, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_153, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_153, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_153, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_151 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage10_tags_151[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage10_tag2el_151[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage10_specs_151 = { + sizeof(struct Reg_TestMessage10), + offsetof(struct Reg_TestMessage10, _asn_ctx), + asn_MAP_Reg_TestMessage10_tag2el_151, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage10 = { + "Reg-TestMessage10", + "Reg-TestMessage10", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage10_tags_151, + sizeof(asn_DEF_Reg_TestMessage10_tags_151) + /sizeof(asn_DEF_Reg_TestMessage10_tags_151[0]), /* 1 */ + asn_DEF_Reg_TestMessage10_tags_151, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage10_tags_151) + /sizeof(asn_DEF_Reg_TestMessage10_tags_151[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage10_151, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage10_specs_151 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_156 = { + sizeof(struct Reg_TestMessage11__regExtValue), + offsetof(struct Reg_TestMessage11__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage11__regExtValue, present), + sizeof(((struct Reg_TestMessage11__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_156 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_156 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage11_154[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage11, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_155, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_155, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_154 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage11, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_156, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_156, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_156, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_154 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage11_tags_154[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage11_tag2el_154[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage11_specs_154 = { + sizeof(struct Reg_TestMessage11), + offsetof(struct Reg_TestMessage11, _asn_ctx), + asn_MAP_Reg_TestMessage11_tag2el_154, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage11 = { + "Reg-TestMessage11", + "Reg-TestMessage11", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage11_tags_154, + sizeof(asn_DEF_Reg_TestMessage11_tags_154) + /sizeof(asn_DEF_Reg_TestMessage11_tags_154[0]), /* 1 */ + asn_DEF_Reg_TestMessage11_tags_154, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage11_tags_154) + /sizeof(asn_DEF_Reg_TestMessage11_tags_154[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage11_154, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage11_specs_154 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_159 = { + sizeof(struct Reg_TestMessage12__regExtValue), + offsetof(struct Reg_TestMessage12__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage12__regExtValue, present), + sizeof(((struct Reg_TestMessage12__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_159 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_159 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage12_157[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage12, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_158, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_158, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_157 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage12, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_159, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_159, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_159, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_157 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage12_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage12_tag2el_157[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage12_specs_157 = { + sizeof(struct Reg_TestMessage12), + offsetof(struct Reg_TestMessage12, _asn_ctx), + asn_MAP_Reg_TestMessage12_tag2el_157, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage12 = { + "Reg-TestMessage12", + "Reg-TestMessage12", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage12_tags_157, + sizeof(asn_DEF_Reg_TestMessage12_tags_157) + /sizeof(asn_DEF_Reg_TestMessage12_tags_157[0]), /* 1 */ + asn_DEF_Reg_TestMessage12_tags_157, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage12_tags_157) + /sizeof(asn_DEF_Reg_TestMessage12_tags_157[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage12_157, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage12_specs_157 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_162 = { + sizeof(struct Reg_TestMessage13__regExtValue), + offsetof(struct Reg_TestMessage13__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage13__regExtValue, present), + sizeof(((struct Reg_TestMessage13__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_162 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_162 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage13_160[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage13, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_161, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_161, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_160 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage13, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_162, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_162, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_162, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_160 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage13_tags_160[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage13_tag2el_160[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage13_specs_160 = { + sizeof(struct Reg_TestMessage13), + offsetof(struct Reg_TestMessage13, _asn_ctx), + asn_MAP_Reg_TestMessage13_tag2el_160, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage13 = { + "Reg-TestMessage13", + "Reg-TestMessage13", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage13_tags_160, + sizeof(asn_DEF_Reg_TestMessage13_tags_160) + /sizeof(asn_DEF_Reg_TestMessage13_tags_160[0]), /* 1 */ + asn_DEF_Reg_TestMessage13_tags_160, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage13_tags_160) + /sizeof(asn_DEF_Reg_TestMessage13_tags_160[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage13_160, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage13_specs_160 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_165 = { + sizeof(struct Reg_TestMessage14__regExtValue), + offsetof(struct Reg_TestMessage14__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage14__regExtValue, present), + sizeof(((struct Reg_TestMessage14__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_165 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_165 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage14_163[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage14, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_164, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_164, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_163 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage14, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_165, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_165, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_165, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_163 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage14_tags_163[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage14_tag2el_163[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage14_specs_163 = { + sizeof(struct Reg_TestMessage14), + offsetof(struct Reg_TestMessage14, _asn_ctx), + asn_MAP_Reg_TestMessage14_tag2el_163, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage14 = { + "Reg-TestMessage14", + "Reg-TestMessage14", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage14_tags_163, + sizeof(asn_DEF_Reg_TestMessage14_tags_163) + /sizeof(asn_DEF_Reg_TestMessage14_tags_163[0]), /* 1 */ + asn_DEF_Reg_TestMessage14_tags_163, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage14_tags_163) + /sizeof(asn_DEF_Reg_TestMessage14_tags_163[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage14_163, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage14_specs_163 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_168 = { + sizeof(struct Reg_TestMessage15__regExtValue), + offsetof(struct Reg_TestMessage15__regExtValue, _asn_ctx), + offsetof(struct Reg_TestMessage15__regExtValue, present), + sizeof(((struct Reg_TestMessage15__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_168 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_168 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TestMessage15_166[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage15, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_167, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_167, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_166 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TestMessage15, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_168, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_168, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_168, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_166 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TestMessage15_tags_166[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TestMessage15_tag2el_166[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TestMessage15_specs_166 = { + sizeof(struct Reg_TestMessage15), + offsetof(struct Reg_TestMessage15, _asn_ctx), + asn_MAP_Reg_TestMessage15_tag2el_166, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TestMessage15 = { + "Reg-TestMessage15", + "Reg-TestMessage15", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TestMessage15_tags_166, + sizeof(asn_DEF_Reg_TestMessage15_tags_166) + /sizeof(asn_DEF_Reg_TestMessage15_tags_166[0]), /* 1 */ + asn_DEF_Reg_TestMessage15_tags_166, /* Same as above */ + sizeof(asn_DEF_Reg_TestMessage15_tags_166) + /sizeof(asn_DEF_Reg_TestMessage15_tags_166[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TestMessage15_166, + 2, /* Elements count */ + &asn_SPC_Reg_TestMessage15_specs_166 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_171 = { + sizeof(struct Reg_TravelerInformation__regExtValue), + offsetof(struct Reg_TravelerInformation__regExtValue, _asn_ctx), + offsetof(struct Reg_TravelerInformation__regExtValue, present), + sizeof(((struct Reg_TravelerInformation__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_171 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_171 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_TravelerInformation_169[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_TravelerInformation, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_170, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_170, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_169 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_TravelerInformation, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_171, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_171, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_171, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_169 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_TravelerInformation_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_TravelerInformation_tag2el_169[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_TravelerInformation_specs_169 = { + sizeof(struct Reg_TravelerInformation), + offsetof(struct Reg_TravelerInformation, _asn_ctx), + asn_MAP_Reg_TravelerInformation_tag2el_169, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_TravelerInformation = { + "Reg-TravelerInformation", + "Reg-TravelerInformation", + &asn_OP_SEQUENCE, + asn_DEF_Reg_TravelerInformation_tags_169, + sizeof(asn_DEF_Reg_TravelerInformation_tags_169) + /sizeof(asn_DEF_Reg_TravelerInformation_tags_169[0]), /* 1 */ + asn_DEF_Reg_TravelerInformation_tags_169, /* Same as above */ + sizeof(asn_DEF_Reg_TravelerInformation_tags_169) + /sizeof(asn_DEF_Reg_TravelerInformation_tags_169[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_TravelerInformation_169, + 2, /* Elements count */ + &asn_SPC_Reg_TravelerInformation_specs_169 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_174 = { + sizeof(struct Reg_GeographicalPath__regExtValue), + offsetof(struct Reg_GeographicalPath__regExtValue, _asn_ctx), + offsetof(struct Reg_GeographicalPath__regExtValue, present), + sizeof(((struct Reg_GeographicalPath__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_174 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_174 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_GeographicalPath_172[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_GeographicalPath, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_173, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_173, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_172 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_GeographicalPath, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_174, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_174, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_174, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_172 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_GeographicalPath_tags_172[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_GeographicalPath_tag2el_172[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_GeographicalPath_specs_172 = { + sizeof(struct Reg_GeographicalPath), + offsetof(struct Reg_GeographicalPath, _asn_ctx), + asn_MAP_Reg_GeographicalPath_tag2el_172, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_GeographicalPath = { + "Reg-GeographicalPath", + "Reg-GeographicalPath", + &asn_OP_SEQUENCE, + asn_DEF_Reg_GeographicalPath_tags_172, + sizeof(asn_DEF_Reg_GeographicalPath_tags_172) + /sizeof(asn_DEF_Reg_GeographicalPath_tags_172[0]), /* 1 */ + asn_DEF_Reg_GeographicalPath_tags_172, /* Same as above */ + sizeof(asn_DEF_Reg_GeographicalPath_tags_172) + /sizeof(asn_DEF_Reg_GeographicalPath_tags_172[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_GeographicalPath_172, + 2, /* Elements count */ + &asn_SPC_Reg_GeographicalPath_specs_172 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_177 = { + sizeof(struct Reg_GeometricProjection__regExtValue), + offsetof(struct Reg_GeometricProjection__regExtValue, _asn_ctx), + offsetof(struct Reg_GeometricProjection__regExtValue, present), + sizeof(((struct Reg_GeometricProjection__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_177 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_177 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_GeometricProjection_175[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_GeometricProjection, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_176, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_176, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_175 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_GeometricProjection, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_177, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_177, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_177, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_175 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_GeometricProjection_tags_175[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_GeometricProjection_tag2el_175[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_GeometricProjection_specs_175 = { + sizeof(struct Reg_GeometricProjection), + offsetof(struct Reg_GeometricProjection, _asn_ctx), + asn_MAP_Reg_GeometricProjection_tag2el_175, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_GeometricProjection = { + "Reg-GeometricProjection", + "Reg-GeometricProjection", + &asn_OP_SEQUENCE, + asn_DEF_Reg_GeometricProjection_tags_175, + sizeof(asn_DEF_Reg_GeometricProjection_tags_175) + /sizeof(asn_DEF_Reg_GeometricProjection_tags_175[0]), /* 1 */ + asn_DEF_Reg_GeometricProjection_tags_175, /* Same as above */ + sizeof(asn_DEF_Reg_GeometricProjection_tags_175) + /sizeof(asn_DEF_Reg_GeometricProjection_tags_175[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_GeometricProjection_175, + 2, /* Elements count */ + &asn_SPC_Reg_GeometricProjection_specs_175 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_180 = { + sizeof(struct Reg_NodeAttributeSetLL__regExtValue), + offsetof(struct Reg_NodeAttributeSetLL__regExtValue, _asn_ctx), + offsetof(struct Reg_NodeAttributeSetLL__regExtValue, present), + sizeof(((struct Reg_NodeAttributeSetLL__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_180 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_180 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_NodeAttributeSetLL_178[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_NodeAttributeSetLL, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_179, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_179, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_178 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_NodeAttributeSetLL, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_180, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_180, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_180, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_178 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_NodeAttributeSetLL_tags_178[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_NodeAttributeSetLL_tag2el_178[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_NodeAttributeSetLL_specs_178 = { + sizeof(struct Reg_NodeAttributeSetLL), + offsetof(struct Reg_NodeAttributeSetLL, _asn_ctx), + asn_MAP_Reg_NodeAttributeSetLL_tag2el_178, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_NodeAttributeSetLL = { + "Reg-NodeAttributeSetLL", + "Reg-NodeAttributeSetLL", + &asn_OP_SEQUENCE, + asn_DEF_Reg_NodeAttributeSetLL_tags_178, + sizeof(asn_DEF_Reg_NodeAttributeSetLL_tags_178) + /sizeof(asn_DEF_Reg_NodeAttributeSetLL_tags_178[0]), /* 1 */ + asn_DEF_Reg_NodeAttributeSetLL_tags_178, /* Same as above */ + sizeof(asn_DEF_Reg_NodeAttributeSetLL_tags_178) + /sizeof(asn_DEF_Reg_NodeAttributeSetLL_tags_178[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_NodeAttributeSetLL_178, + 2, /* Elements count */ + &asn_SPC_Reg_NodeAttributeSetLL_specs_178 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_regExtValue_specs_183 = { + sizeof(struct Reg_NodeOffsetPointLL__regExtValue), + offsetof(struct Reg_NodeOffsetPointLL__regExtValue, _asn_ctx), + offsetof(struct Reg_NodeOffsetPointLL__regExtValue, present), + sizeof(((struct Reg_NodeOffsetPointLL__regExtValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regExtValue_183 = { + "regExtValue", + "regExtValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + 0, 0, /* No members */ + &asn_SPC_regExtValue_specs_183 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Reg_NodeOffsetPointLL_181[] = { + { ATF_NOFLAGS, 0, offsetof(struct Reg_NodeOffsetPointLL, regionId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RegionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regionId_constr_182, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regionId_constr_182, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regionId_constraint_181 + }, + 0, 0, /* No default value */ + "regionId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Reg_NodeOffsetPointLL, regExtValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_regExtValue_183, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regExtValue_constr_183, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regExtValue_constr_183, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regExtValue_constraint_181 + }, + 0, 0, /* No default value */ + "regExtValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Reg_NodeOffsetPointLL_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Reg_NodeOffsetPointLL_tag2el_181[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* regionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Reg_NodeOffsetPointLL_specs_181 = { + sizeof(struct Reg_NodeOffsetPointLL), + offsetof(struct Reg_NodeOffsetPointLL, _asn_ctx), + asn_MAP_Reg_NodeOffsetPointLL_tag2el_181, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Reg_NodeOffsetPointLL = { + "Reg-NodeOffsetPointLL", + "Reg-NodeOffsetPointLL", + &asn_OP_SEQUENCE, + asn_DEF_Reg_NodeOffsetPointLL_tags_181, + sizeof(asn_DEF_Reg_NodeOffsetPointLL_tags_181) + /sizeof(asn_DEF_Reg_NodeOffsetPointLL_tags_181[0]), /* 1 */ + asn_DEF_Reg_NodeOffsetPointLL_tags_181, /* Same as above */ + sizeof(asn_DEF_Reg_NodeOffsetPointLL_tags_181) + /sizeof(asn_DEF_Reg_NodeOffsetPointLL_tags_181[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Reg_NodeOffsetPointLL_181, + 2, /* Elements count */ + &asn_SPC_Reg_NodeOffsetPointLL_specs_181 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RegulatorySpeedLimit.c b/src/tmx/Asn_J2735/src/r2020/RegulatorySpeedLimit.c new file mode 100644 index 000000000..328f7cf47 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RegulatorySpeedLimit.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RegulatorySpeedLimit.h" + +asn_TYPE_member_t asn_MBR_RegulatorySpeedLimit_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RegulatorySpeedLimit, type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedLimitType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RegulatorySpeedLimit, speed), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Velocity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed" + }, +}; +static const ber_tlv_tag_t asn_DEF_RegulatorySpeedLimit_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RegulatorySpeedLimit_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* speed */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RegulatorySpeedLimit_specs_1 = { + sizeof(struct RegulatorySpeedLimit), + offsetof(struct RegulatorySpeedLimit, _asn_ctx), + asn_MAP_RegulatorySpeedLimit_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RegulatorySpeedLimit = { + "RegulatorySpeedLimit", + "RegulatorySpeedLimit", + &asn_OP_SEQUENCE, + asn_DEF_RegulatorySpeedLimit_tags_1, + sizeof(asn_DEF_RegulatorySpeedLimit_tags_1) + /sizeof(asn_DEF_RegulatorySpeedLimit_tags_1[0]), /* 1 */ + asn_DEF_RegulatorySpeedLimit_tags_1, /* Same as above */ + sizeof(asn_DEF_RegulatorySpeedLimit_tags_1) + /sizeof(asn_DEF_RegulatorySpeedLimit_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RegulatorySpeedLimit_1, + 2, /* Elements count */ + &asn_SPC_RegulatorySpeedLimit_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RepeatParams.c b/src/tmx/Asn_J2735/src/r2020/RepeatParams.c new file mode 100644 index 000000000..e83580572 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RepeatParams.c @@ -0,0 +1,169 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "RepeatParams.h" + +static int +memb_offset_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1439)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_period_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1439)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_span_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1439)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_offset_constr_2 CC_NOTUSED = { + { 2, 1 } /* (0..1439) */, + -1}; +static asn_per_constraints_t asn_PER_memb_offset_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 1439 } /* (0..1439) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_period_constr_3 CC_NOTUSED = { + { 2, 1 } /* (0..1439) */, + -1}; +static asn_per_constraints_t asn_PER_memb_period_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 1439 } /* (0..1439) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_span_constr_4 CC_NOTUSED = { + { 2, 1 } /* (0..1439) */, + -1}; +static asn_per_constraints_t asn_PER_memb_span_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 1439 } /* (0..1439) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_RepeatParams_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RepeatParams, offset), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_offset_constr_2, &asn_PER_memb_offset_constr_2, memb_offset_constraint_1 }, + 0, 0, /* No default value */ + "offset" + }, + { ATF_NOFLAGS, 0, offsetof(struct RepeatParams, period), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_period_constr_3, &asn_PER_memb_period_constr_3, memb_period_constraint_1 }, + 0, 0, /* No default value */ + "period" + }, + { ATF_NOFLAGS, 0, offsetof(struct RepeatParams, span), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_span_constr_4, &asn_PER_memb_span_constr_4, memb_span_constraint_1 }, + 0, 0, /* No default value */ + "span" + }, +}; +static const ber_tlv_tag_t asn_DEF_RepeatParams_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RepeatParams_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* offset */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* period */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* span */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RepeatParams_specs_1 = { + sizeof(struct RepeatParams), + offsetof(struct RepeatParams, _asn_ctx), + asn_MAP_RepeatParams_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RepeatParams = { + "RepeatParams", + "RepeatParams", + &asn_OP_SEQUENCE, + asn_DEF_RepeatParams_tags_1, + sizeof(asn_DEF_RepeatParams_tags_1) + /sizeof(asn_DEF_RepeatParams_tags_1[0]), /* 1 */ + asn_DEF_RepeatParams_tags_1, /* Same as above */ + sizeof(asn_DEF_RepeatParams_tags_1) + /sizeof(asn_DEF_RepeatParams_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RepeatParams_1, + 3, /* Elements count */ + &asn_SPC_RepeatParams_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RequestID.c b/src/tmx/Asn_J2735/src/r2020/RequestID.c new file mode 100644 index 000000000..1fac45786 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RequestID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RequestID.h" + +int +RequestID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RequestID_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RequestID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RequestID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RequestID = { + "RequestID", + "RequestID", + &asn_OP_NativeInteger, + asn_DEF_RequestID_tags_1, + sizeof(asn_DEF_RequestID_tags_1) + /sizeof(asn_DEF_RequestID_tags_1[0]), /* 1 */ + asn_DEF_RequestID_tags_1, /* Same as above */ + sizeof(asn_DEF_RequestID_tags_1) + /sizeof(asn_DEF_RequestID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RequestID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RequestID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RequestID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RequestImportanceLevel.c b/src/tmx/Asn_J2735/src/r2020/RequestImportanceLevel.c new file mode 100644 index 000000000..7a2fc4f83 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RequestImportanceLevel.c @@ -0,0 +1,96 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RequestImportanceLevel.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RequestImportanceLevel_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RequestImportanceLevel_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RequestImportanceLevel_value2enum_1[] = { + { 0, 29, "requestImportanceLevelUnKnown" }, + { 1, 23, "requestImportanceLevel1" }, + { 2, 23, "requestImportanceLevel2" }, + { 3, 23, "requestImportanceLevel3" }, + { 4, 23, "requestImportanceLevel4" }, + { 5, 23, "requestImportanceLevel5" }, + { 6, 23, "requestImportanceLevel6" }, + { 7, 23, "requestImportanceLevel7" }, + { 8, 23, "requestImportanceLevel8" }, + { 9, 23, "requestImportanceLevel9" }, + { 10, 24, "requestImportanceLevel10" }, + { 11, 24, "requestImportanceLevel11" }, + { 12, 24, "requestImportanceLevel12" }, + { 13, 24, "requestImportanceLevel13" }, + { 14, 24, "requestImportanceLevel14" }, + { 15, 25, "requestImportanceReserved" } +}; +static const unsigned int asn_MAP_RequestImportanceLevel_enum2value_1[] = { + 1, /* requestImportanceLevel1(1) */ + 10, /* requestImportanceLevel10(10) */ + 11, /* requestImportanceLevel11(11) */ + 12, /* requestImportanceLevel12(12) */ + 13, /* requestImportanceLevel13(13) */ + 14, /* requestImportanceLevel14(14) */ + 2, /* requestImportanceLevel2(2) */ + 3, /* requestImportanceLevel3(3) */ + 4, /* requestImportanceLevel4(4) */ + 5, /* requestImportanceLevel5(5) */ + 6, /* requestImportanceLevel6(6) */ + 7, /* requestImportanceLevel7(7) */ + 8, /* requestImportanceLevel8(8) */ + 9, /* requestImportanceLevel9(9) */ + 0, /* requestImportanceLevelUnKnown(0) */ + 15 /* requestImportanceReserved(15) */ +}; +const asn_INTEGER_specifics_t asn_SPC_RequestImportanceLevel_specs_1 = { + asn_MAP_RequestImportanceLevel_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RequestImportanceLevel_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RequestImportanceLevel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RequestImportanceLevel = { + "RequestImportanceLevel", + "RequestImportanceLevel", + &asn_OP_NativeEnumerated, + asn_DEF_RequestImportanceLevel_tags_1, + sizeof(asn_DEF_RequestImportanceLevel_tags_1) + /sizeof(asn_DEF_RequestImportanceLevel_tags_1[0]), /* 1 */ + asn_DEF_RequestImportanceLevel_tags_1, /* Same as above */ + sizeof(asn_DEF_RequestImportanceLevel_tags_1) + /sizeof(asn_DEF_RequestImportanceLevel_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RequestImportanceLevel_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RequestImportanceLevel_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RequestImportanceLevel_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RequestSubRole.c b/src/tmx/Asn_J2735/src/r2020/RequestSubRole.c new file mode 100644 index 000000000..9554157fc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RequestSubRole.c @@ -0,0 +1,96 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RequestSubRole.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RequestSubRole_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RequestSubRole_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RequestSubRole_value2enum_1[] = { + { 0, 21, "requestSubRoleUnKnown" }, + { 1, 15, "requestSubRole1" }, + { 2, 15, "requestSubRole2" }, + { 3, 15, "requestSubRole3" }, + { 4, 15, "requestSubRole4" }, + { 5, 15, "requestSubRole5" }, + { 6, 15, "requestSubRole6" }, + { 7, 15, "requestSubRole7" }, + { 8, 15, "requestSubRole8" }, + { 9, 15, "requestSubRole9" }, + { 10, 16, "requestSubRole10" }, + { 11, 16, "requestSubRole11" }, + { 12, 16, "requestSubRole12" }, + { 13, 16, "requestSubRole13" }, + { 14, 16, "requestSubRole14" }, + { 15, 22, "requestSubRoleReserved" } +}; +static const unsigned int asn_MAP_RequestSubRole_enum2value_1[] = { + 1, /* requestSubRole1(1) */ + 10, /* requestSubRole10(10) */ + 11, /* requestSubRole11(11) */ + 12, /* requestSubRole12(12) */ + 13, /* requestSubRole13(13) */ + 14, /* requestSubRole14(14) */ + 2, /* requestSubRole2(2) */ + 3, /* requestSubRole3(3) */ + 4, /* requestSubRole4(4) */ + 5, /* requestSubRole5(5) */ + 6, /* requestSubRole6(6) */ + 7, /* requestSubRole7(7) */ + 8, /* requestSubRole8(8) */ + 9, /* requestSubRole9(9) */ + 15, /* requestSubRoleReserved(15) */ + 0 /* requestSubRoleUnKnown(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_RequestSubRole_specs_1 = { + asn_MAP_RequestSubRole_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RequestSubRole_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RequestSubRole_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RequestSubRole = { + "RequestSubRole", + "RequestSubRole", + &asn_OP_NativeEnumerated, + asn_DEF_RequestSubRole_tags_1, + sizeof(asn_DEF_RequestSubRole_tags_1) + /sizeof(asn_DEF_RequestSubRole_tags_1[0]), /* 1 */ + asn_DEF_RequestSubRole_tags_1, /* Same as above */ + sizeof(asn_DEF_RequestSubRole_tags_1) + /sizeof(asn_DEF_RequestSubRole_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RequestSubRole_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RequestSubRole_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RequestSubRole_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RequestedItem.c b/src/tmx/Asn_J2735/src/r2020/RequestedItem.c new file mode 100644 index 000000000..01c7b643c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RequestedItem.c @@ -0,0 +1,100 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "CommonSafetyRequest" + * found in "J2735-CommonSafetyRequest.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RequestedItem.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RequestedItem_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RequestedItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 16 } /* (0..16,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RequestedItem_value2enum_1[] = { + { 0, 8, "reserved" }, + { 1, 5, "itemA" }, + { 2, 5, "itemB" }, + { 3, 5, "itemC" }, + { 4, 5, "itemD" }, + { 5, 5, "itemE" }, + { 6, 5, "itemF" }, + { 7, 5, "itemG" }, + { 8, 5, "itemI" }, + { 9, 5, "itemJ" }, + { 10, 5, "itemK" }, + { 11, 5, "itemL" }, + { 12, 5, "itemM" }, + { 13, 5, "itemN" }, + { 14, 5, "itemO" }, + { 15, 5, "itemP" }, + { 16, 5, "itemQ" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RequestedItem_enum2value_1[] = { + 1, /* itemA(1) */ + 2, /* itemB(2) */ + 3, /* itemC(3) */ + 4, /* itemD(4) */ + 5, /* itemE(5) */ + 6, /* itemF(6) */ + 7, /* itemG(7) */ + 8, /* itemI(8) */ + 9, /* itemJ(9) */ + 10, /* itemK(10) */ + 11, /* itemL(11) */ + 12, /* itemM(12) */ + 13, /* itemN(13) */ + 14, /* itemO(14) */ + 15, /* itemP(15) */ + 16, /* itemQ(16) */ + 0 /* reserved(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RequestedItem_specs_1 = { + asn_MAP_RequestedItem_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RequestedItem_enum2value_1, /* N => "tag"; sorted by N */ + 17, /* Number of elements in the maps */ + 18, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RequestedItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RequestedItem = { + "RequestedItem", + "RequestedItem", + &asn_OP_NativeEnumerated, + asn_DEF_RequestedItem_tags_1, + sizeof(asn_DEF_RequestedItem_tags_1) + /sizeof(asn_DEF_RequestedItem_tags_1[0]), /* 1 */ + asn_DEF_RequestedItem_tags_1, /* Same as above */ + sizeof(asn_DEF_RequestedItem_tags_1) + /sizeof(asn_DEF_RequestedItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RequestedItem_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RequestedItem_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RequestedItem_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RequestedItemList.c b/src/tmx/Asn_J2735/src/r2020/RequestedItemList.c new file mode 100644 index 000000000..31353a036 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RequestedItemList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "CommonSafetyRequest" + * found in "J2735-CommonSafetyRequest.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RequestedItemList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RequestedItemList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RequestedItemList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RequestedItemList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RequestedItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RequestedItemList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RequestedItemList_specs_1 = { + sizeof(struct RequestedItemList), + offsetof(struct RequestedItemList, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_RequestedItemList = { + "RequestedItemList", + "RequestedItemList", + &asn_OP_SEQUENCE_OF, + asn_DEF_RequestedItemList_tags_1, + sizeof(asn_DEF_RequestedItemList_tags_1) + /sizeof(asn_DEF_RequestedItemList_tags_1[0]), /* 1 */ + asn_DEF_RequestedItemList_tags_1, /* Same as above */ + sizeof(asn_DEF_RequestedItemList_tags_1) + /sizeof(asn_DEF_RequestedItemList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RequestedItemList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RequestedItemList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RequestedItemList_1, + 1, /* Single element */ + &asn_SPC_RequestedItemList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RequestorDescription.c b/src/tmx/Asn_J2735/src/r2020/RequestorDescription.c new file mode 100644 index 000000000..595c1c129 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RequestorDescription.c @@ -0,0 +1,315 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RequestorDescription.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_10 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_10 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_10[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_RequestorDescription, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_10[] = { + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_10 = { + sizeof(struct RequestorDescription__regional), + offsetof(struct RequestorDescription__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_10 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_10, + sizeof(asn_DEF_regional_tags_10) + /sizeof(asn_DEF_regional_tags_10[0]) - 1, /* 1 */ + asn_DEF_regional_tags_10, /* Same as above */ + sizeof(asn_DEF_regional_tags_10) + /sizeof(asn_DEF_regional_tags_10[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_10, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_10, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_10, + 1, /* Single element */ + &asn_SPC_regional_specs_10 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RequestorDescription_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RequestorDescription, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_VehicleID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_POINTER, 8, offsetof(struct RequestorDescription, type), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RequestorType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "type" + }, + { ATF_POINTER, 7, offsetof(struct RequestorDescription, position), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RequestorPositionVector, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "position" + }, + { ATF_POINTER, 6, offsetof(struct RequestorDescription, name), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DescriptiveName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "name" + }, + { ATF_POINTER, 5, offsetof(struct RequestorDescription, routeName), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DescriptiveName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "routeName" + }, + { ATF_POINTER, 4, offsetof(struct RequestorDescription, transitStatus), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransitVehicleStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "transitStatus" + }, + { ATF_POINTER, 3, offsetof(struct RequestorDescription, transitOccupancy), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransitVehicleOccupancy, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "transitOccupancy" + }, + { ATF_POINTER, 2, offsetof(struct RequestorDescription, transitSchedule), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "transitSchedule" + }, + { ATF_POINTER, 1, offsetof(struct RequestorDescription, regional), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + 0, + &asn_DEF_regional_10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_10, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_10, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_RequestorDescription_oms_1[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; +static const ber_tlv_tag_t asn_DEF_RequestorDescription_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RequestorDescription_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* type */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* position */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* name */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* routeName */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* transitStatus */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* transitOccupancy */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* transitSchedule */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RequestorDescription_specs_1 = { + sizeof(struct RequestorDescription), + offsetof(struct RequestorDescription, _asn_ctx), + asn_MAP_RequestorDescription_tag2el_1, + 9, /* Count of tags in the map */ + asn_MAP_RequestorDescription_oms_1, /* Optional members */ + 8, 0, /* Root/Additions */ + 9, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RequestorDescription = { + "RequestorDescription", + "RequestorDescription", + &asn_OP_SEQUENCE, + asn_DEF_RequestorDescription_tags_1, + sizeof(asn_DEF_RequestorDescription_tags_1) + /sizeof(asn_DEF_RequestorDescription_tags_1[0]), /* 1 */ + asn_DEF_RequestorDescription_tags_1, /* Same as above */ + sizeof(asn_DEF_RequestorDescription_tags_1) + /sizeof(asn_DEF_RequestorDescription_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RequestorDescription_1, + 9, /* Elements count */ + &asn_SPC_RequestorDescription_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RequestorPositionVector.c b/src/tmx/Asn_J2735/src/r2020/RequestorPositionVector.c new file mode 100644 index 000000000..7bbd52351 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RequestorPositionVector.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RequestorPositionVector.h" + +asn_TYPE_member_t asn_MBR_RequestorPositionVector_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RequestorPositionVector, position), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Position3D, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "position" + }, + { ATF_POINTER, 2, offsetof(struct RequestorPositionVector, heading), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_Angle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "heading" + }, + { ATF_POINTER, 1, offsetof(struct RequestorPositionVector, speed), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransmissionAndSpeed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed" + }, +}; +static const int asn_MAP_RequestorPositionVector_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_RequestorPositionVector_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RequestorPositionVector_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* position */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* heading */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* speed */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RequestorPositionVector_specs_1 = { + sizeof(struct RequestorPositionVector), + offsetof(struct RequestorPositionVector, _asn_ctx), + asn_MAP_RequestorPositionVector_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_RequestorPositionVector_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RequestorPositionVector = { + "RequestorPositionVector", + "RequestorPositionVector", + &asn_OP_SEQUENCE, + asn_DEF_RequestorPositionVector_tags_1, + sizeof(asn_DEF_RequestorPositionVector_tags_1) + /sizeof(asn_DEF_RequestorPositionVector_tags_1[0]), /* 1 */ + asn_DEF_RequestorPositionVector_tags_1, /* Same as above */ + sizeof(asn_DEF_RequestorPositionVector_tags_1) + /sizeof(asn_DEF_RequestorPositionVector_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RequestorPositionVector_1, + 3, /* Elements count */ + &asn_SPC_RequestorPositionVector_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RequestorType.c b/src/tmx/Asn_J2735/src/r2020/RequestorType.c new file mode 100644 index 000000000..b35489668 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RequestorType.c @@ -0,0 +1,158 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RequestorType.h" + +asn_TYPE_member_t asn_MBR_RequestorType_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RequestorType, role), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BasicVehicleRole, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "role" + }, + { ATF_POINTER, 5, offsetof(struct RequestorType, subrole), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RequestSubRole, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "subrole" + }, + { ATF_POINTER, 4, offsetof(struct RequestorType, request), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RequestImportanceLevel, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "request" + }, + { ATF_POINTER, 3, offsetof(struct RequestorType, iso3883), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Iso3833VehicleType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "iso3883" + }, + { ATF_POINTER, 2, offsetof(struct RequestorType, hpmsType), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hpmsType" + }, + { ATF_POINTER, 1, offsetof(struct RequestorType, regional), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_RequestorType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_RequestorType_oms_1[] = { 1, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_RequestorType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RequestorType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* role */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subrole */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* request */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iso3883 */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* hpmsType */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RequestorType_specs_1 = { + sizeof(struct RequestorType), + offsetof(struct RequestorType, _asn_ctx), + asn_MAP_RequestorType_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_RequestorType_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RequestorType = { + "RequestorType", + "RequestorType", + &asn_OP_SEQUENCE, + asn_DEF_RequestorType_tags_1, + sizeof(asn_DEF_RequestorType_tags_1) + /sizeof(asn_DEF_RequestorType_tags_1[0]), /* 1 */ + asn_DEF_RequestorType_tags_1, /* Same as above */ + sizeof(asn_DEF_RequestorType_tags_1) + /sizeof(asn_DEF_RequestorType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RequestorType_1, + 6, /* Elements count */ + &asn_SPC_RequestorType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ResponderGroupAffected.c b/src/tmx/Asn_J2735/src/r2020/ResponderGroupAffected.c new file mode 100644 index 000000000..3069483df --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ResponderGroupAffected.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ResponderGroupAffected.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ResponderGroupAffected_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ResponderGroupAffected_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 13 } /* (0..13,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_ResponderGroupAffected_value2enum_1[] = { + { 9729, 23, "emergency-vehicle-units" }, + { 9730, 29, "federal-law-enforcement-units" }, + { 9731, 18, "state-police-units" }, + { 9732, 19, "county-police-units" }, + { 9733, 18, "local-police-units" }, + { 9734, 15, "ambulance-units" }, + { 9735, 12, "rescue-units" }, + { 9736, 10, "fire-units" }, + { 9737, 12, "hAZMAT-units" }, + { 9738, 14, "light-tow-unit" }, + { 9739, 14, "heavy-tow-unit" }, + { 9740, 23, "freeway-service-patrols" }, + { 9741, 29, "transportation-response-units" }, + { 9742, 33, "private-contractor-response-units" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ResponderGroupAffected_enum2value_1[] = { + 5, /* ambulance-units(9734) */ + 3, /* county-police-units(9732) */ + 0, /* emergency-vehicle-units(9729) */ + 1, /* federal-law-enforcement-units(9730) */ + 7, /* fire-units(9736) */ + 11, /* freeway-service-patrols(9740) */ + 8, /* hAZMAT-units(9737) */ + 10, /* heavy-tow-unit(9739) */ + 9, /* light-tow-unit(9738) */ + 4, /* local-police-units(9733) */ + 13, /* private-contractor-response-units(9742) */ + 6, /* rescue-units(9735) */ + 2, /* state-police-units(9731) */ + 12 /* transportation-response-units(9741) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ResponderGroupAffected_specs_1 = { + asn_MAP_ResponderGroupAffected_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ResponderGroupAffected_enum2value_1, /* N => "tag"; sorted by N */ + 14, /* Number of elements in the maps */ + 15, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ResponderGroupAffected_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ResponderGroupAffected = { + "ResponderGroupAffected", + "ResponderGroupAffected", + &asn_OP_NativeEnumerated, + asn_DEF_ResponderGroupAffected_tags_1, + sizeof(asn_DEF_ResponderGroupAffected_tags_1) + /sizeof(asn_DEF_ResponderGroupAffected_tags_1[0]), /* 1 */ + asn_DEF_ResponderGroupAffected_tags_1, /* Same as above */ + sizeof(asn_DEF_ResponderGroupAffected_tags_1) + /sizeof(asn_DEF_ResponderGroupAffected_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ResponderGroupAffected_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ResponderGroupAffected_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ResponderGroupAffected_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ResponseType.c b/src/tmx/Asn_J2735/src/r2020/ResponseType.c new file mode 100644 index 000000000..348a291ef --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ResponseType.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ResponseType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ResponseType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ResponseType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_ResponseType_value2enum_1[] = { + { 0, 21, "notInUseOrNotEquipped" }, + { 1, 9, "emergency" }, + { 2, 12, "nonEmergency" }, + { 3, 7, "pursuit" }, + { 4, 10, "stationary" }, + { 5, 10, "slowMoving" }, + { 6, 17, "stopAndGoMovement" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ResponseType_enum2value_1[] = { + 1, /* emergency(1) */ + 2, /* nonEmergency(2) */ + 0, /* notInUseOrNotEquipped(0) */ + 3, /* pursuit(3) */ + 5, /* slowMoving(5) */ + 4, /* stationary(4) */ + 6 /* stopAndGoMovement(6) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ResponseType_specs_1 = { + asn_MAP_ResponseType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ResponseType_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ResponseType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ResponseType = { + "ResponseType", + "ResponseType", + &asn_OP_NativeEnumerated, + asn_DEF_ResponseType_tags_1, + sizeof(asn_DEF_ResponseType_tags_1) + /sizeof(asn_DEF_ResponseType_tags_1[0]), /* 1 */ + asn_DEF_ResponseType_tags_1, /* Same as above */ + sizeof(asn_DEF_ResponseType_tags_1) + /sizeof(asn_DEF_ResponseType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ResponseType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ResponseType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ResponseType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RestrictionAppliesTo.c b/src/tmx/Asn_J2735/src/r2020/RestrictionAppliesTo.c new file mode 100644 index 000000000..84ea641eb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RestrictionAppliesTo.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RestrictionAppliesTo.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RestrictionAppliesTo_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RestrictionAppliesTo_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 13 } /* (0..13,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RestrictionAppliesTo_value2enum_1[] = { + { 0, 4, "none" }, + { 1, 15, "equippedTransit" }, + { 2, 13, "equippedTaxis" }, + { 3, 13, "equippedOther" }, + { 4, 17, "emissionCompliant" }, + { 5, 15, "equippedBicycle" }, + { 6, 15, "weightCompliant" }, + { 7, 15, "heightCompliant" }, + { 8, 11, "pedestrians" }, + { 9, 17, "slowMovingPersons" }, + { 10, 15, "wheelchairUsers" }, + { 11, 18, "visualDisabilities" }, + { 12, 17, "audioDisabilities" }, + { 13, 24, "otherUnknownDisabilities" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RestrictionAppliesTo_enum2value_1[] = { + 12, /* audioDisabilities(12) */ + 4, /* emissionCompliant(4) */ + 5, /* equippedBicycle(5) */ + 3, /* equippedOther(3) */ + 2, /* equippedTaxis(2) */ + 1, /* equippedTransit(1) */ + 7, /* heightCompliant(7) */ + 0, /* none(0) */ + 13, /* otherUnknownDisabilities(13) */ + 8, /* pedestrians(8) */ + 9, /* slowMovingPersons(9) */ + 11, /* visualDisabilities(11) */ + 6, /* weightCompliant(6) */ + 10 /* wheelchairUsers(10) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RestrictionAppliesTo_specs_1 = { + asn_MAP_RestrictionAppliesTo_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RestrictionAppliesTo_enum2value_1, /* N => "tag"; sorted by N */ + 14, /* Number of elements in the maps */ + 15, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RestrictionAppliesTo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RestrictionAppliesTo = { + "RestrictionAppliesTo", + "RestrictionAppliesTo", + &asn_OP_NativeEnumerated, + asn_DEF_RestrictionAppliesTo_tags_1, + sizeof(asn_DEF_RestrictionAppliesTo_tags_1) + /sizeof(asn_DEF_RestrictionAppliesTo_tags_1[0]), /* 1 */ + asn_DEF_RestrictionAppliesTo_tags_1, /* Same as above */ + sizeof(asn_DEF_RestrictionAppliesTo_tags_1) + /sizeof(asn_DEF_RestrictionAppliesTo_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RestrictionAppliesTo_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RestrictionAppliesTo_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RestrictionAppliesTo_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RestrictionClassAssignment.c b/src/tmx/Asn_J2735/src/r2020/RestrictionClassAssignment.c new file mode 100644 index 000000000..ce50f2277 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RestrictionClassAssignment.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RestrictionClassAssignment.h" + +asn_TYPE_member_t asn_MBR_RestrictionClassAssignment_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RestrictionClassAssignment, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RestrictionClassID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RestrictionClassAssignment, users), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RestrictionUserTypeList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "users" + }, +}; +static const ber_tlv_tag_t asn_DEF_RestrictionClassAssignment_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RestrictionClassAssignment_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* users */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RestrictionClassAssignment_specs_1 = { + sizeof(struct RestrictionClassAssignment), + offsetof(struct RestrictionClassAssignment, _asn_ctx), + asn_MAP_RestrictionClassAssignment_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RestrictionClassAssignment = { + "RestrictionClassAssignment", + "RestrictionClassAssignment", + &asn_OP_SEQUENCE, + asn_DEF_RestrictionClassAssignment_tags_1, + sizeof(asn_DEF_RestrictionClassAssignment_tags_1) + /sizeof(asn_DEF_RestrictionClassAssignment_tags_1[0]), /* 1 */ + asn_DEF_RestrictionClassAssignment_tags_1, /* Same as above */ + sizeof(asn_DEF_RestrictionClassAssignment_tags_1) + /sizeof(asn_DEF_RestrictionClassAssignment_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RestrictionClassAssignment_1, + 2, /* Elements count */ + &asn_SPC_RestrictionClassAssignment_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RestrictionClassID.c b/src/tmx/Asn_J2735/src/r2020/RestrictionClassID.c new file mode 100644 index 000000000..b712ac31f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RestrictionClassID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RestrictionClassID.h" + +int +RestrictionClassID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RestrictionClassID_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RestrictionClassID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RestrictionClassID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RestrictionClassID = { + "RestrictionClassID", + "RestrictionClassID", + &asn_OP_NativeInteger, + asn_DEF_RestrictionClassID_tags_1, + sizeof(asn_DEF_RestrictionClassID_tags_1) + /sizeof(asn_DEF_RestrictionClassID_tags_1[0]), /* 1 */ + asn_DEF_RestrictionClassID_tags_1, /* Same as above */ + sizeof(asn_DEF_RestrictionClassID_tags_1) + /sizeof(asn_DEF_RestrictionClassID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RestrictionClassID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RestrictionClassID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RestrictionClassID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RestrictionClassList.c b/src/tmx/Asn_J2735/src/r2020/RestrictionClassList.c new file mode 100644 index 000000000..27edf229c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RestrictionClassList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RestrictionClassList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RestrictionClassList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..254)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RestrictionClassList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 254 } /* (SIZE(1..254)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RestrictionClassList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RestrictionClassAssignment, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RestrictionClassList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RestrictionClassList_specs_1 = { + sizeof(struct RestrictionClassList), + offsetof(struct RestrictionClassList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RestrictionClassList = { + "RestrictionClassList", + "RestrictionClassList", + &asn_OP_SEQUENCE_OF, + asn_DEF_RestrictionClassList_tags_1, + sizeof(asn_DEF_RestrictionClassList_tags_1) + /sizeof(asn_DEF_RestrictionClassList_tags_1[0]), /* 1 */ + asn_DEF_RestrictionClassList_tags_1, /* Same as above */ + sizeof(asn_DEF_RestrictionClassList_tags_1) + /sizeof(asn_DEF_RestrictionClassList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RestrictionClassList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RestrictionClassList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RestrictionClassList_1, + 1, /* Single element */ + &asn_SPC_RestrictionClassList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RestrictionUserType-addGrpC.c b/src/tmx/Asn_J2735/src/r2020/RestrictionUserType-addGrpC.c new file mode 100644 index 000000000..65c0cce85 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RestrictionUserType-addGrpC.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RestrictionUserType-addGrpC.h" + +asn_TYPE_member_t asn_MBR_RestrictionUserType_addGrpC_1[] = { + { ATF_POINTER, 1, offsetof(struct RestrictionUserType_addGrpC, emission), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EmissionType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "emission" + }, +}; +static const int asn_MAP_RestrictionUserType_addGrpC_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_RestrictionUserType_addGrpC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RestrictionUserType_addGrpC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* emission */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RestrictionUserType_addGrpC_specs_1 = { + sizeof(struct RestrictionUserType_addGrpC), + offsetof(struct RestrictionUserType_addGrpC, _asn_ctx), + asn_MAP_RestrictionUserType_addGrpC_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_RestrictionUserType_addGrpC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RestrictionUserType_addGrpC = { + "RestrictionUserType-addGrpC", + "RestrictionUserType-addGrpC", + &asn_OP_SEQUENCE, + asn_DEF_RestrictionUserType_addGrpC_tags_1, + sizeof(asn_DEF_RestrictionUserType_addGrpC_tags_1) + /sizeof(asn_DEF_RestrictionUserType_addGrpC_tags_1[0]), /* 1 */ + asn_DEF_RestrictionUserType_addGrpC_tags_1, /* Same as above */ + sizeof(asn_DEF_RestrictionUserType_addGrpC_tags_1) + /sizeof(asn_DEF_RestrictionUserType_addGrpC_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RestrictionUserType_addGrpC_1, + 1, /* Elements count */ + &asn_SPC_RestrictionUserType_addGrpC_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RestrictionUserType.c b/src/tmx/Asn_J2735/src/r2020/RestrictionUserType.c new file mode 100644 index 000000000..a00c774e8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RestrictionUserType.c @@ -0,0 +1,196 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RestrictionUserType.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RestrictionUserType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RestrictionUserType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_RestrictionUserType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_3 = { + sizeof(struct RestrictionUserType__regional), + offsetof(struct RestrictionUserType__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_3 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_3, + sizeof(asn_DEF_regional_tags_3) + /sizeof(asn_DEF_regional_tags_3[0]) - 1, /* 1 */ + asn_DEF_regional_tags_3, /* Same as above */ + sizeof(asn_DEF_regional_tags_3) + /sizeof(asn_DEF_regional_tags_3[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_3, + 1, /* Single element */ + &asn_SPC_regional_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RestrictionUserType_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RestrictionUserType, choice.basicType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RestrictionAppliesTo, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "basicType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RestrictionUserType, choice.regional), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_regional_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RestrictionUserType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* basicType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_CHOICE_specifics_t asn_SPC_RestrictionUserType_specs_1 = { + sizeof(struct RestrictionUserType), + offsetof(struct RestrictionUserType, _asn_ctx), + offsetof(struct RestrictionUserType, present), + sizeof(((struct RestrictionUserType *)0)->present), + asn_MAP_RestrictionUserType_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RestrictionUserType = { + "RestrictionUserType", + "RestrictionUserType", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RestrictionUserType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RestrictionUserType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_RestrictionUserType_1, + 2, /* Elements count */ + &asn_SPC_RestrictionUserType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RestrictionUserTypeList.c b/src/tmx/Asn_J2735/src/r2020/RestrictionUserTypeList.c new file mode 100644 index 000000000..464954ceb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RestrictionUserTypeList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RestrictionUserTypeList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RestrictionUserTypeList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RestrictionUserTypeList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RestrictionUserTypeList_1[] = { + { ATF_POINTER, 0, 0, + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RestrictionUserType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RestrictionUserTypeList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RestrictionUserTypeList_specs_1 = { + sizeof(struct RestrictionUserTypeList), + offsetof(struct RestrictionUserTypeList, _asn_ctx), + 2, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_RestrictionUserTypeList = { + "RestrictionUserTypeList", + "RestrictionUserTypeList", + &asn_OP_SEQUENCE_OF, + asn_DEF_RestrictionUserTypeList_tags_1, + sizeof(asn_DEF_RestrictionUserTypeList_tags_1) + /sizeof(asn_DEF_RestrictionUserTypeList_tags_1[0]), /* 1 */ + asn_DEF_RestrictionUserTypeList_tags_1, /* Same as above */ + sizeof(asn_DEF_RestrictionUserTypeList_tags_1) + /sizeof(asn_DEF_RestrictionUserTypeList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RestrictionUserTypeList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RestrictionUserTypeList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RestrictionUserTypeList_1, + 1, /* Single element */ + &asn_SPC_RestrictionUserTypeList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RoadLaneSetList.c b/src/tmx/Asn_J2735/src/r2020/RoadLaneSetList.c new file mode 100644 index 000000000..ffa21913d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RoadLaneSetList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RoadLaneSetList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RoadLaneSetList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RoadLaneSetList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RoadLaneSetList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GenericLane, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RoadLaneSetList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RoadLaneSetList_specs_1 = { + sizeof(struct RoadLaneSetList), + offsetof(struct RoadLaneSetList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RoadLaneSetList = { + "RoadLaneSetList", + "RoadLaneSetList", + &asn_OP_SEQUENCE_OF, + asn_DEF_RoadLaneSetList_tags_1, + sizeof(asn_DEF_RoadLaneSetList_tags_1) + /sizeof(asn_DEF_RoadLaneSetList_tags_1[0]), /* 1 */ + asn_DEF_RoadLaneSetList_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadLaneSetList_tags_1) + /sizeof(asn_DEF_RoadLaneSetList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RoadLaneSetList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RoadLaneSetList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RoadLaneSetList_1, + 1, /* Single element */ + &asn_SPC_RoadLaneSetList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RoadRegulatorID.c b/src/tmx/Asn_J2735/src/r2020/RoadRegulatorID.c new file mode 100644 index 000000000..90c536388 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RoadRegulatorID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RoadRegulatorID.h" + +int +RoadRegulatorID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RoadRegulatorID_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RoadRegulatorID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RoadRegulatorID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RoadRegulatorID = { + "RoadRegulatorID", + "RoadRegulatorID", + &asn_OP_NativeInteger, + asn_DEF_RoadRegulatorID_tags_1, + sizeof(asn_DEF_RoadRegulatorID_tags_1) + /sizeof(asn_DEF_RoadRegulatorID_tags_1[0]), /* 1 */ + asn_DEF_RoadRegulatorID_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadRegulatorID_tags_1) + /sizeof(asn_DEF_RoadRegulatorID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RoadRegulatorID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RoadRegulatorID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RoadRegulatorID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RoadSegment.c b/src/tmx/Asn_J2735/src/r2020/RoadSegment.c new file mode 100644 index 000000000..ed0f8b57f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RoadSegment.c @@ -0,0 +1,297 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RoadSegment.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_RoadSegment, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_9[] = { + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_9 = { + sizeof(struct RoadSegment__regional), + offsetof(struct RoadSegment__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_9 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_9, + sizeof(asn_DEF_regional_tags_9) + /sizeof(asn_DEF_regional_tags_9[0]) - 1, /* 1 */ + asn_DEF_regional_tags_9, /* Same as above */ + sizeof(asn_DEF_regional_tags_9) + /sizeof(asn_DEF_regional_tags_9[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_9, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_9, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_9, + 1, /* Single element */ + &asn_SPC_regional_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RoadSegment_1[] = { + { ATF_POINTER, 1, offsetof(struct RoadSegment, name), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DescriptiveName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "name" + }, + { ATF_NOFLAGS, 0, offsetof(struct RoadSegment, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadSegmentReferenceID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RoadSegment, revision), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "revision" + }, + { ATF_NOFLAGS, 0, offsetof(struct RoadSegment, refPoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Position3D, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "refPoint" + }, + { ATF_POINTER, 2, offsetof(struct RoadSegment, laneWidth), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneWidth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneWidth" + }, + { ATF_POINTER, 1, offsetof(struct RoadSegment, speedLimits), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedLimitList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedLimits" + }, + { ATF_NOFLAGS, 0, offsetof(struct RoadSegment, roadLaneSet), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadLaneSetList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "roadLaneSet" + }, + { ATF_POINTER, 1, offsetof(struct RoadSegment, regional), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + 0, + &asn_DEF_regional_9, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_9, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_9, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_RoadSegment_oms_1[] = { 0, 4, 5, 7 }; +static const ber_tlv_tag_t asn_DEF_RoadSegment_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RoadSegment_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* name */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* revision */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* refPoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* laneWidth */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* speedLimits */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* roadLaneSet */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RoadSegment_specs_1 = { + sizeof(struct RoadSegment), + offsetof(struct RoadSegment, _asn_ctx), + asn_MAP_RoadSegment_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_RoadSegment_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 8, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RoadSegment = { + "RoadSegment", + "RoadSegment", + &asn_OP_SEQUENCE, + asn_DEF_RoadSegment_tags_1, + sizeof(asn_DEF_RoadSegment_tags_1) + /sizeof(asn_DEF_RoadSegment_tags_1[0]), /* 1 */ + asn_DEF_RoadSegment_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadSegment_tags_1) + /sizeof(asn_DEF_RoadSegment_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RoadSegment_1, + 8, /* Elements count */ + &asn_SPC_RoadSegment_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RoadSegmentID.c b/src/tmx/Asn_J2735/src/r2020/RoadSegmentID.c new file mode 100644 index 000000000..185146769 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RoadSegmentID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RoadSegmentID.h" + +int +RoadSegmentID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RoadSegmentID_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RoadSegmentID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RoadSegmentID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RoadSegmentID = { + "RoadSegmentID", + "RoadSegmentID", + &asn_OP_NativeInteger, + asn_DEF_RoadSegmentID_tags_1, + sizeof(asn_DEF_RoadSegmentID_tags_1) + /sizeof(asn_DEF_RoadSegmentID_tags_1[0]), /* 1 */ + asn_DEF_RoadSegmentID_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadSegmentID_tags_1) + /sizeof(asn_DEF_RoadSegmentID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RoadSegmentID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RoadSegmentID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RoadSegmentID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RoadSegmentList.c b/src/tmx/Asn_J2735/src/r2020/RoadSegmentList.c new file mode 100644 index 000000000..4e7573c8a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RoadSegmentList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RoadSegmentList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RoadSegmentList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RoadSegmentList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RoadSegmentList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RoadSegment, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RoadSegmentList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RoadSegmentList_specs_1 = { + sizeof(struct RoadSegmentList), + offsetof(struct RoadSegmentList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RoadSegmentList = { + "RoadSegmentList", + "RoadSegmentList", + &asn_OP_SEQUENCE_OF, + asn_DEF_RoadSegmentList_tags_1, + sizeof(asn_DEF_RoadSegmentList_tags_1) + /sizeof(asn_DEF_RoadSegmentList_tags_1[0]), /* 1 */ + asn_DEF_RoadSegmentList_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadSegmentList_tags_1) + /sizeof(asn_DEF_RoadSegmentList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RoadSegmentList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RoadSegmentList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RoadSegmentList_1, + 1, /* Single element */ + &asn_SPC_RoadSegmentList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RoadSegmentReferenceID.c b/src/tmx/Asn_J2735/src/r2020/RoadSegmentReferenceID.c new file mode 100644 index 000000000..f6eb131b8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RoadSegmentReferenceID.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RoadSegmentReferenceID.h" + +asn_TYPE_member_t asn_MBR_RoadSegmentReferenceID_1[] = { + { ATF_POINTER, 1, offsetof(struct RoadSegmentReferenceID, region), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadRegulatorID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "region" + }, + { ATF_NOFLAGS, 0, offsetof(struct RoadSegmentReferenceID, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadSegmentID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, +}; +static const int asn_MAP_RoadSegmentReferenceID_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_RoadSegmentReferenceID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RoadSegmentReferenceID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* region */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* id */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RoadSegmentReferenceID_specs_1 = { + sizeof(struct RoadSegmentReferenceID), + offsetof(struct RoadSegmentReferenceID, _asn_ctx), + asn_MAP_RoadSegmentReferenceID_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_RoadSegmentReferenceID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RoadSegmentReferenceID = { + "RoadSegmentReferenceID", + "RoadSegmentReferenceID", + &asn_OP_SEQUENCE, + asn_DEF_RoadSegmentReferenceID_tags_1, + sizeof(asn_DEF_RoadSegmentReferenceID_tags_1) + /sizeof(asn_DEF_RoadSegmentReferenceID_tags_1[0]), /* 1 */ + asn_DEF_RoadSegmentReferenceID_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadSegmentReferenceID_tags_1) + /sizeof(asn_DEF_RoadSegmentReferenceID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RoadSegmentReferenceID_1, + 2, /* Elements count */ + &asn_SPC_RoadSegmentReferenceID_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RoadSideAlert.c b/src/tmx/Asn_J2735/src/r2020/RoadSideAlert.c new file mode 100644 index 000000000..ff97b6316 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RoadSideAlert.c @@ -0,0 +1,436 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "RoadSideAlert" + * found in "J2735-RoadSideAlert.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RoadSideAlert.h" + +static int +memb_description_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 8UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_description_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_description_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_12 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_description_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_description_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_12 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_description_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ITIScodes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_description_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_description_specs_5 = { + sizeof(struct RoadSideAlert__description), + offsetof(struct RoadSideAlert__description, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_description_5 = { + "description", + "description", + &asn_OP_SEQUENCE_OF, + asn_DEF_description_tags_5, + sizeof(asn_DEF_description_tags_5) + /sizeof(asn_DEF_description_tags_5[0]) - 1, /* 1 */ + asn_DEF_description_tags_5, /* Same as above */ + sizeof(asn_DEF_description_tags_5) + /sizeof(asn_DEF_description_tags_5[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_description_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_description_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_description_5, + 1, /* Single element */ + &asn_SPC_description_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regional_12[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_RoadSideAlert, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_12[] = { + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_12 = { + sizeof(struct RoadSideAlert__regional), + offsetof(struct RoadSideAlert__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_12 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_12, + sizeof(asn_DEF_regional_tags_12) + /sizeof(asn_DEF_regional_tags_12[0]) - 1, /* 1 */ + asn_DEF_regional_tags_12, /* Same as above */ + sizeof(asn_DEF_regional_tags_12) + /sizeof(asn_DEF_regional_tags_12[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_12, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_12, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_12, + 1, /* Single element */ + &asn_SPC_regional_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RoadSideAlert_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RoadSideAlert, msgCnt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgCnt" + }, + { ATF_POINTER, 1, offsetof(struct RoadSideAlert, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_NOFLAGS, 0, offsetof(struct RoadSideAlert, typeEvent), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIScodes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "typeEvent" + }, + { ATF_POINTER, 7, offsetof(struct RoadSideAlert, description), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_description_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_description_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_description_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_description_constraint_1 + }, + 0, 0, /* No default value */ + "description" + }, + { ATF_POINTER, 6, offsetof(struct RoadSideAlert, priority), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Priority, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "priority" + }, + { ATF_POINTER, 5, offsetof(struct RoadSideAlert, heading), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingSlice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "heading" + }, + { ATF_POINTER, 4, offsetof(struct RoadSideAlert, extent), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Extent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "extent" + }, + { ATF_POINTER, 3, offsetof(struct RoadSideAlert, position), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FullPositionVector, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "position" + }, + { ATF_POINTER, 2, offsetof(struct RoadSideAlert, furtherInfoID), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FurtherInfoID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "furtherInfoID" + }, + { ATF_POINTER, 1, offsetof(struct RoadSideAlert, regional), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + 0, + &asn_DEF_regional_12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_12, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_12, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_RoadSideAlert_oms_1[] = { 1, 3, 4, 5, 6, 7, 8, 9 }; +static const ber_tlv_tag_t asn_DEF_RoadSideAlert_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RoadSideAlert_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* msgCnt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* typeEvent */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* description */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* priority */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* heading */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* extent */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* position */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* furtherInfoID */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RoadSideAlert_specs_1 = { + sizeof(struct RoadSideAlert), + offsetof(struct RoadSideAlert, _asn_ctx), + asn_MAP_RoadSideAlert_tag2el_1, + 10, /* Count of tags in the map */ + asn_MAP_RoadSideAlert_oms_1, /* Optional members */ + 8, 0, /* Root/Additions */ + 10, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RoadSideAlert = { + "RoadSideAlert", + "RoadSideAlert", + &asn_OP_SEQUENCE, + asn_DEF_RoadSideAlert_tags_1, + sizeof(asn_DEF_RoadSideAlert_tags_1) + /sizeof(asn_DEF_RoadSideAlert_tags_1[0]), /* 1 */ + asn_DEF_RoadSideAlert_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadSideAlert_tags_1) + /sizeof(asn_DEF_RoadSideAlert_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RoadSideAlert_1, + 10, /* Elements count */ + &asn_SPC_RoadSideAlert_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RoadSignID.c b/src/tmx/Asn_J2735/src/r2020/RoadSignID.c new file mode 100644 index 000000000..e821627a2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RoadSignID.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RoadSignID.h" + +asn_TYPE_member_t asn_MBR_RoadSignID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RoadSignID, position), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Position3D, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "position" + }, + { ATF_NOFLAGS, 0, offsetof(struct RoadSignID, viewAngle), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingSlice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "viewAngle" + }, + { ATF_POINTER, 2, offsetof(struct RoadSignID, mutcdCode), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MUTCDCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mutcdCode" + }, + { ATF_POINTER, 1, offsetof(struct RoadSignID, crc), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MsgCRC, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "crc" + }, +}; +static const int asn_MAP_RoadSignID_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_RoadSignID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RoadSignID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* position */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* viewAngle */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mutcdCode */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* crc */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RoadSignID_specs_1 = { + sizeof(struct RoadSignID), + offsetof(struct RoadSignID, _asn_ctx), + asn_MAP_RoadSignID_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_RoadSignID_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RoadSignID = { + "RoadSignID", + "RoadSignID", + &asn_OP_SEQUENCE, + asn_DEF_RoadSignID_tags_1, + sizeof(asn_DEF_RoadSignID_tags_1) + /sizeof(asn_DEF_RoadSignID_tags_1[0]), /* 1 */ + asn_DEF_RoadSignID_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadSignID_tags_1) + /sizeof(asn_DEF_RoadSignID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RoadSignID_1, + 4, /* Elements count */ + &asn_SPC_RoadSignID_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RoadwayCrownAngle.c b/src/tmx/Asn_J2735/src/r2020/RoadwayCrownAngle.c new file mode 100644 index 000000000..c46cb7d65 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RoadwayCrownAngle.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "RoadwayCrownAngle.h" + +int +RoadwayCrownAngle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -128L && value <= 127L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RoadwayCrownAngle_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-128..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RoadwayCrownAngle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -128, 127 } /* (-128..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RoadwayCrownAngle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RoadwayCrownAngle = { + "RoadwayCrownAngle", + "RoadwayCrownAngle", + &asn_OP_NativeInteger, + asn_DEF_RoadwayCrownAngle_tags_1, + sizeof(asn_DEF_RoadwayCrownAngle_tags_1) + /sizeof(asn_DEF_RoadwayCrownAngle_tags_1[0]), /* 1 */ + asn_DEF_RoadwayCrownAngle_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadwayCrownAngle_tags_1) + /sizeof(asn_DEF_RoadwayCrownAngle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RoadwayCrownAngle_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RoadwayCrownAngle_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RoadwayCrownAngle_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RollDetected.c b/src/tmx/Asn_J2735/src/r2020/RollDetected.c new file mode 100644 index 000000000..017e10e77 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RollDetected.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "RollDetected.h" + +int +RollDetected_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -14400 && value <= 14400)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_RollDetected_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-14400..14400) */, + -1}; +asn_per_constraints_t asn_PER_type_RollDetected_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, -14400, 14400 } /* (-14400..14400) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RollDetected_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RollDetected = { + "RollDetected", + "RollDetected", + &asn_OP_NativeInteger, + asn_DEF_RollDetected_tags_1, + sizeof(asn_DEF_RollDetected_tags_1) + /sizeof(asn_DEF_RollDetected_tags_1[0]), /* 1 */ + asn_DEF_RollDetected_tags_1, /* Same as above */ + sizeof(asn_DEF_RollDetected_tags_1) + /sizeof(asn_DEF_RollDetected_tags_1[0]), /* 1 */ + { &asn_OER_type_RollDetected_constr_1, &asn_PER_type_RollDetected_constr_1, RollDetected_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RollRate.c b/src/tmx/Asn_J2735/src/r2020/RollRate.c new file mode 100644 index 000000000..d5c525e3a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RollRate.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "RollRate.h" + +int +RollRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32767 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_RollRate_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-32767..32767) */, + -1}; +asn_per_constraints_t asn_PER_type_RollRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32767, 32767 } /* (-32767..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RollRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RollRate = { + "RollRate", + "RollRate", + &asn_OP_NativeInteger, + asn_DEF_RollRate_tags_1, + sizeof(asn_DEF_RollRate_tags_1) + /sizeof(asn_DEF_RollRate_tags_1[0]), /* 1 */ + asn_DEF_RollRate_tags_1, /* Same as above */ + sizeof(asn_DEF_RollRate_tags_1) + /sizeof(asn_DEF_RollRate_tags_1[0]), /* 1 */ + { &asn_OER_type_RollRate_constr_1, &asn_PER_type_RollRate_constr_1, RollRate_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/RollRateConfidence.c b/src/tmx/Asn_J2735/src/r2020/RollRateConfidence.c new file mode 100644 index 000000000..3b578a211 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/RollRateConfidence.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "RollRateConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_RollRateConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_RollRateConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RollRateConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 13, "degSec-100-00" }, + { 2, 13, "degSec-010-00" }, + { 3, 13, "degSec-005-00" }, + { 4, 13, "degSec-001-00" }, + { 5, 13, "degSec-000-10" }, + { 6, 13, "degSec-000-05" }, + { 7, 13, "degSec-000-01" } +}; +static const unsigned int asn_MAP_RollRateConfidence_enum2value_1[] = { + 7, /* degSec-000-01(7) */ + 6, /* degSec-000-05(6) */ + 5, /* degSec-000-10(5) */ + 4, /* degSec-001-00(4) */ + 3, /* degSec-005-00(3) */ + 2, /* degSec-010-00(2) */ + 1, /* degSec-100-00(1) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_RollRateConfidence_specs_1 = { + asn_MAP_RollRateConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RollRateConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RollRateConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RollRateConfidence = { + "RollRateConfidence", + "RollRateConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_RollRateConfidence_tags_1, + sizeof(asn_DEF_RollRateConfidence_tags_1) + /sizeof(asn_DEF_RollRateConfidence_tags_1[0]), /* 1 */ + asn_DEF_RollRateConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_RollRateConfidence_tags_1) + /sizeof(asn_DEF_RollRateConfidence_tags_1[0]), /* 1 */ + { &asn_OER_type_RollRateConfidence_constr_1, &asn_PER_type_RollRateConfidence_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RollRateConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SPAT.c b/src/tmx/Asn_J2735/src/r2020/SPAT.c new file mode 100644 index 000000000..da61fdf1b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SPAT.c @@ -0,0 +1,225 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SPAT.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_SPAT, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_5 = { + sizeof(struct SPAT__regional), + offsetof(struct SPAT__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_5 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_5, + sizeof(asn_DEF_regional_tags_5) + /sizeof(asn_DEF_regional_tags_5[0]) - 1, /* 1 */ + asn_DEF_regional_tags_5, /* Same as above */ + sizeof(asn_DEF_regional_tags_5) + /sizeof(asn_DEF_regional_tags_5[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_5, + 1, /* Single element */ + &asn_SPC_regional_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SPAT_1[] = { + { ATF_POINTER, 2, offsetof(struct SPAT, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_POINTER, 1, offsetof(struct SPAT, name), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DescriptiveName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "name" + }, + { ATF_NOFLAGS, 0, offsetof(struct SPAT, intersections), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntersectionStateList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "intersections" + }, + { ATF_POINTER, 1, offsetof(struct SPAT, regional), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_regional_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_SPAT_oms_1[] = { 0, 1, 3 }; +static const ber_tlv_tag_t asn_DEF_SPAT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SPAT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* name */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* intersections */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SPAT_specs_1 = { + sizeof(struct SPAT), + offsetof(struct SPAT, _asn_ctx), + asn_MAP_SPAT_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_SPAT_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SPAT = { + "SPAT", + "SPAT", + &asn_OP_SEQUENCE, + asn_DEF_SPAT_tags_1, + sizeof(asn_DEF_SPAT_tags_1) + /sizeof(asn_DEF_SPAT_tags_1[0]), /* 1 */ + asn_DEF_SPAT_tags_1, /* Same as above */ + sizeof(asn_DEF_SPAT_tags_1) + /sizeof(asn_DEF_SPAT_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SPAT_1, + 4, /* Elements count */ + &asn_SPC_SPAT_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SPAT_TimeMark.c b/src/tmx/Asn_J2735/src/r2020/SPAT_TimeMark.c new file mode 100644 index 000000000..991db7de2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SPAT_TimeMark.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SPAT_TimeMark.h" + +int +SPAT_TimeMark_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 36111L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SPAT_TimeMark_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..36111) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SPAT_TimeMark_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 36111 } /* (0..36111) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SPAT_TimeMark_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SPAT_TimeMark = { + "TimeMark", + "TimeMark", + &asn_OP_NativeInteger, + asn_DEF_SPAT_TimeMark_tags_1, + sizeof(asn_DEF_SPAT_TimeMark_tags_1) + /sizeof(asn_DEF_SPAT_TimeMark_tags_1[0]), /* 1 */ + asn_DEF_SPAT_TimeMark_tags_1, /* Same as above */ + sizeof(asn_DEF_SPAT_TimeMark_tags_1) + /sizeof(asn_DEF_SPAT_TimeMark_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SPAT_TimeMark_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SPAT_TimeMark_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SPAT_TimeMark_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SSPindex.c b/src/tmx/Asn_J2735/src/r2020/SSPindex.c new file mode 100644 index 000000000..f03bc2799 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SSPindex.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SSPindex.h" + +int +SSPindex_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 31L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SSPindex_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..31) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SSPindex_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 31 } /* (0..31) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SSPindex_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SSPindex = { + "SSPindex", + "SSPindex", + &asn_OP_NativeInteger, + asn_DEF_SSPindex_tags_1, + sizeof(asn_DEF_SSPindex_tags_1) + /sizeof(asn_DEF_SSPindex_tags_1[0]), /* 1 */ + asn_DEF_SSPindex_tags_1, /* Same as above */ + sizeof(asn_DEF_SSPindex_tags_1) + /sizeof(asn_DEF_SSPindex_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SSPindex_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SSPindex_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SSPindex_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Sample.c b/src/tmx/Asn_J2735/src/r2020/Sample.c new file mode 100644 index 000000000..94aa1a1de --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Sample.c @@ -0,0 +1,158 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Sample.h" + +static int +memb_sampleStart_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_sampleEnd_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_sampleStart_constr_2 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_sampleStart_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_sampleEnd_constr_3 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_sampleEnd_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_Sample_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Sample, sampleStart), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_sampleStart_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_sampleStart_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_sampleStart_constraint_1 + }, + 0, 0, /* No default value */ + "sampleStart" + }, + { ATF_NOFLAGS, 0, offsetof(struct Sample, sampleEnd), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_sampleEnd_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_sampleEnd_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_sampleEnd_constraint_1 + }, + 0, 0, /* No default value */ + "sampleEnd" + }, +}; +static const ber_tlv_tag_t asn_DEF_Sample_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Sample_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sampleStart */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sampleEnd */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Sample_specs_1 = { + sizeof(struct Sample), + offsetof(struct Sample, _asn_ctx), + asn_MAP_Sample_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Sample = { + "Sample", + "Sample", + &asn_OP_SEQUENCE, + asn_DEF_Sample_tags_1, + sizeof(asn_DEF_Sample_tags_1) + /sizeof(asn_DEF_Sample_tags_1[0]), /* 1 */ + asn_DEF_Sample_tags_1, /* Same as above */ + sizeof(asn_DEF_Sample_tags_1) + /sizeof(asn_DEF_Sample_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Sample_1, + 2, /* Elements count */ + &asn_SPC_Sample_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Scale-B12.c b/src/tmx/Asn_J2735/src/r2020/Scale-B12.c new file mode 100644 index 000000000..986c189df --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Scale-B12.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Scale-B12.h" + +int +Scale_B12_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -2048L && value <= 2047L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Scale_B12_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-2048..2047) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Scale_B12_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, -2048, 2047 } /* (-2048..2047) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Scale_B12_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Scale_B12 = { + "Scale-B12", + "Scale-B12", + &asn_OP_NativeInteger, + asn_DEF_Scale_B12_tags_1, + sizeof(asn_DEF_Scale_B12_tags_1) + /sizeof(asn_DEF_Scale_B12_tags_1[0]), /* 1 */ + asn_DEF_Scale_B12_tags_1, /* Same as above */ + sizeof(asn_DEF_Scale_B12_tags_1) + /sizeof(asn_DEF_Scale_B12_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Scale_B12_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Scale_B12_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Scale_B12_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Schedule.c b/src/tmx/Asn_J2735/src/r2020/Schedule.c new file mode 100644 index 000000000..5af708a5e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Schedule.c @@ -0,0 +1,328 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "Schedule.h" + +static int +memb_start_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 9223372036854775807)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_end_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 9223372036854775807)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_dow_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size == 7)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_between_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 32)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_type_dow_constr_4 CC_NOTUSED = { + { 0, 0 }, + 7 /* (SIZE(7..7)) */}; +static asn_per_constraints_t asn_PER_type_dow_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 7, 7 } /* (SIZE(7..7)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_between_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..32)) */}; +static asn_per_constraints_t asn_PER_type_between_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 32 } /* (SIZE(0..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_start_constr_2 CC_NOTUSED = { + { 8, 1 } /* (0..9223372036854775807) */, + -1}; +static asn_per_constraints_t asn_PER_memb_start_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 63, -1, 0, 9223372036854775807 } /* (0..9223372036854775807) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_end_constr_3 CC_NOTUSED = { + { 8, 1 } /* (0..9223372036854775807) */, + -1}; +static asn_per_constraints_t asn_PER_memb_end_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 63, -1, 0, 9223372036854775807 } /* (0..9223372036854775807) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_dow_constr_4 CC_NOTUSED = { + { 0, 0 }, + 7 /* (SIZE(7..7)) */}; +static asn_per_constraints_t asn_PER_memb_dow_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 7, 7 } /* (SIZE(7..7)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_between_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..32)) */}; +static asn_per_constraints_t asn_PER_memb_between_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 32 } /* (SIZE(0..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_dow_4[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)), + 0, + &asn_DEF_BOOLEAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_dow_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_dow_specs_4 = { + sizeof(struct Schedule__dow), + offsetof(struct Schedule__dow, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_dow_4 = { + "dow", + "dow", + &asn_OP_SEQUENCE_OF, + asn_DEF_dow_tags_4, + sizeof(asn_DEF_dow_tags_4) + /sizeof(asn_DEF_dow_tags_4[0]) - 1, /* 1 */ + asn_DEF_dow_tags_4, /* Same as above */ + sizeof(asn_DEF_dow_tags_4) + /sizeof(asn_DEF_dow_tags_4[0]), /* 2 */ + { &asn_OER_type_dow_constr_4, &asn_PER_type_dow_constr_4, SEQUENCE_OF_constraint }, + asn_MBR_dow_4, + 1, /* Single element */ + &asn_SPC_dow_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_between_6[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DaySchedule, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_between_tags_6[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_between_specs_6 = { + sizeof(struct Schedule__between), + offsetof(struct Schedule__between, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_between_6 = { + "between", + "between", + &asn_OP_SEQUENCE_OF, + asn_DEF_between_tags_6, + sizeof(asn_DEF_between_tags_6) + /sizeof(asn_DEF_between_tags_6[0]) - 1, /* 1 */ + asn_DEF_between_tags_6, /* Same as above */ + sizeof(asn_DEF_between_tags_6) + /sizeof(asn_DEF_between_tags_6[0]), /* 2 */ + { &asn_OER_type_between_constr_6, &asn_PER_type_between_constr_6, SEQUENCE_OF_constraint }, + asn_MBR_between_6, + 1, /* Single element */ + &asn_SPC_between_specs_6 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Schedule_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Schedule, start), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_INTEGER, + 0, + { &asn_OER_memb_start_constr_2, &asn_PER_memb_start_constr_2, memb_start_constraint_1 }, + 0, 0, /* No default value */ + "start" + }, + { ATF_NOFLAGS, 0, offsetof(struct Schedule, end), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_INTEGER, + 0, + { &asn_OER_memb_end_constr_3, &asn_PER_memb_end_constr_3, memb_end_constraint_1 }, + 0, 0, /* No default value */ + "end" + }, + { ATF_NOFLAGS, 0, offsetof(struct Schedule, dow), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + 0, + &asn_DEF_dow_4, + 0, + { &asn_OER_memb_dow_constr_4, &asn_PER_memb_dow_constr_4, memb_dow_constraint_1 }, + 0, 0, /* No default value */ + "dow" + }, + { ATF_POINTER, 2, offsetof(struct Schedule, between), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_between_6, + 0, + { &asn_OER_memb_between_constr_6, &asn_PER_memb_between_constr_6, memb_between_constraint_1 }, + 0, 0, /* No default value */ + "between" + }, + { ATF_POINTER, 1, offsetof(struct Schedule, repeat), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RepeatParams, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "repeat" + }, +}; +static const int asn_MAP_Schedule_oms_1[] = { 3, 4 }; +static const ber_tlv_tag_t asn_DEF_Schedule_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Schedule_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* start */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* end */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dow */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* between */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* repeat */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Schedule_specs_1 = { + sizeof(struct Schedule), + offsetof(struct Schedule, _asn_ctx), + asn_MAP_Schedule_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_Schedule_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Schedule = { + "Schedule", + "Schedule", + &asn_OP_SEQUENCE, + asn_DEF_Schedule_tags_1, + sizeof(asn_DEF_Schedule_tags_1) + /sizeof(asn_DEF_Schedule_tags_1[0]), /* 1 */ + asn_DEF_Schedule_tags_1, /* Same as above */ + sizeof(asn_DEF_Schedule_tags_1) + /sizeof(asn_DEF_Schedule_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Schedule_1, + 5, /* Elements count */ + &asn_SPC_Schedule_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Second.c b/src/tmx/Asn_J2735/src/r2020/Second.c new file mode 100644 index 000000000..565ec930d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Second.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Second.h" + +int +Second_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 60L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Second_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..60) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Second_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 60 } /* (0..60) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Second_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Second = { + "Second", + "Second", + &asn_OP_NativeInteger, + asn_DEF_Second_tags_1, + sizeof(asn_DEF_Second_tags_1) + /sizeof(asn_DEF_Second_tags_1[0]), /* 1 */ + asn_DEF_Second_tags_1, /* Same as above */ + sizeof(asn_DEF_Second_tags_1) + /sizeof(asn_DEF_Second_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Second_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Second_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Second_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SecondOfTime.c b/src/tmx/Asn_J2735/src/r2020/SecondOfTime.c new file mode 100644 index 000000000..729cd484e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SecondOfTime.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SecondOfTime.h" + +int +SecondOfTime_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 61L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SecondOfTime_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..61) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SecondOfTime_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 61 } /* (0..61) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SecondOfTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SecondOfTime = { + "SecondOfTime", + "SecondOfTime", + &asn_OP_NativeInteger, + asn_DEF_SecondOfTime_tags_1, + sizeof(asn_DEF_SecondOfTime_tags_1) + /sizeof(asn_DEF_SecondOfTime_tags_1[0]), /* 1 */ + asn_DEF_SecondOfTime_tags_1, /* Same as above */ + sizeof(asn_DEF_SecondOfTime_tags_1) + /sizeof(asn_DEF_SecondOfTime_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SecondOfTime_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SecondOfTime_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SecondOfTime_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SecondsAngle.c b/src/tmx/Asn_J2735/src/r2020/SecondsAngle.c new file mode 100644 index 000000000..f02452774 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SecondsAngle.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SecondsAngle.h" + +int +SecondsAngle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 5999L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SecondsAngle_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..5999) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SecondsAngle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 13, 13, 0, 5999 } /* (0..5999) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SecondsAngle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SecondsAngle = { + "SecondsAngle", + "SecondsAngle", + &asn_OP_NativeInteger, + asn_DEF_SecondsAngle_tags_1, + sizeof(asn_DEF_SecondsAngle_tags_1) + /sizeof(asn_DEF_SecondsAngle_tags_1[0]), /* 1 */ + asn_DEF_SecondsAngle_tags_1, /* Same as above */ + sizeof(asn_DEF_SecondsAngle_tags_1) + /sizeof(asn_DEF_SecondsAngle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SecondsAngle_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SecondsAngle_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SecondsAngle_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SegmentAttributeLL.c b/src/tmx/Asn_J2735/src/r2020/SegmentAttributeLL.c new file mode 100644 index 000000000..7c2b95948 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SegmentAttributeLL.c @@ -0,0 +1,142 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SegmentAttributeLL.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SegmentAttributeLL_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SegmentAttributeLL_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 0, 37 } /* (0..37,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_SegmentAttributeLL_value2enum_1[] = { + { 0, 8, "reserved" }, + { 1, 10, "doNotBlock" }, + { 2, 9, "whiteLine" }, + { 3, 15, "mergingLaneLeft" }, + { 4, 16, "mergingLaneRight" }, + { 5, 10, "curbOnLeft" }, + { 6, 11, "curbOnRight" }, + { 7, 17, "loadingzoneOnLeft" }, + { 8, 18, "loadingzoneOnRight" }, + { 9, 18, "turnOutPointOnLeft" }, + { 10, 19, "turnOutPointOnRight" }, + { 11, 21, "adjacentParkingOnLeft" }, + { 12, 22, "adjacentParkingOnRight" }, + { 13, 22, "adjacentBikeLaneOnLeft" }, + { 14, 23, "adjacentBikeLaneOnRight" }, + { 15, 14, "sharedBikeLane" }, + { 16, 14, "bikeBoxInFront" }, + { 17, 17, "transitStopOnLeft" }, + { 18, 18, "transitStopOnRight" }, + { 19, 17, "transitStopInLane" }, + { 20, 24, "sharedWithTrackedVehicle" }, + { 21, 10, "safeIsland" }, + { 22, 15, "lowCurbsPresent" }, + { 23, 18, "rumbleStripPresent" }, + { 24, 23, "audibleSignalingPresent" }, + { 25, 21, "adaptiveTimingPresent" }, + { 26, 22, "rfSignalRequestPresent" }, + { 27, 20, "partialCurbIntrusion" }, + { 28, 11, "taperToLeft" }, + { 29, 12, "taperToRight" }, + { 30, 17, "taperToCenterLine" }, + { 31, 15, "parallelParking" }, + { 32, 13, "headInParking" }, + { 33, 11, "freeParking" }, + { 34, 25, "timeRestrictionsOnParking" }, + { 35, 10, "costToPark" }, + { 36, 19, "midBlockCurbPresent" }, + { 37, 21, "unEvenPavementPresent" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SegmentAttributeLL_enum2value_1[] = { + 25, /* adaptiveTimingPresent(25) */ + 13, /* adjacentBikeLaneOnLeft(13) */ + 14, /* adjacentBikeLaneOnRight(14) */ + 11, /* adjacentParkingOnLeft(11) */ + 12, /* adjacentParkingOnRight(12) */ + 24, /* audibleSignalingPresent(24) */ + 16, /* bikeBoxInFront(16) */ + 35, /* costToPark(35) */ + 5, /* curbOnLeft(5) */ + 6, /* curbOnRight(6) */ + 1, /* doNotBlock(1) */ + 33, /* freeParking(33) */ + 32, /* headInParking(32) */ + 7, /* loadingzoneOnLeft(7) */ + 8, /* loadingzoneOnRight(8) */ + 22, /* lowCurbsPresent(22) */ + 3, /* mergingLaneLeft(3) */ + 4, /* mergingLaneRight(4) */ + 36, /* midBlockCurbPresent(36) */ + 31, /* parallelParking(31) */ + 27, /* partialCurbIntrusion(27) */ + 0, /* reserved(0) */ + 26, /* rfSignalRequestPresent(26) */ + 23, /* rumbleStripPresent(23) */ + 21, /* safeIsland(21) */ + 15, /* sharedBikeLane(15) */ + 20, /* sharedWithTrackedVehicle(20) */ + 30, /* taperToCenterLine(30) */ + 28, /* taperToLeft(28) */ + 29, /* taperToRight(29) */ + 34, /* timeRestrictionsOnParking(34) */ + 19, /* transitStopInLane(19) */ + 17, /* transitStopOnLeft(17) */ + 18, /* transitStopOnRight(18) */ + 9, /* turnOutPointOnLeft(9) */ + 10, /* turnOutPointOnRight(10) */ + 37, /* unEvenPavementPresent(37) */ + 2 /* whiteLine(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SegmentAttributeLL_specs_1 = { + asn_MAP_SegmentAttributeLL_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SegmentAttributeLL_enum2value_1, /* N => "tag"; sorted by N */ + 38, /* Number of elements in the maps */ + 39, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SegmentAttributeLL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SegmentAttributeLL = { + "SegmentAttributeLL", + "SegmentAttributeLL", + &asn_OP_NativeEnumerated, + asn_DEF_SegmentAttributeLL_tags_1, + sizeof(asn_DEF_SegmentAttributeLL_tags_1) + /sizeof(asn_DEF_SegmentAttributeLL_tags_1[0]), /* 1 */ + asn_DEF_SegmentAttributeLL_tags_1, /* Same as above */ + sizeof(asn_DEF_SegmentAttributeLL_tags_1) + /sizeof(asn_DEF_SegmentAttributeLL_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SegmentAttributeLL_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SegmentAttributeLL_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SegmentAttributeLL_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SegmentAttributeLLList.c b/src/tmx/Asn_J2735/src/r2020/SegmentAttributeLLList.c new file mode 100644 index 000000000..f86e4dbf4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SegmentAttributeLLList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SegmentAttributeLLList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SegmentAttributeLLList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SegmentAttributeLLList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SegmentAttributeLLList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SegmentAttributeLL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SegmentAttributeLLList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SegmentAttributeLLList_specs_1 = { + sizeof(struct SegmentAttributeLLList), + offsetof(struct SegmentAttributeLLList, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_SegmentAttributeLLList = { + "SegmentAttributeLLList", + "SegmentAttributeLLList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SegmentAttributeLLList_tags_1, + sizeof(asn_DEF_SegmentAttributeLLList_tags_1) + /sizeof(asn_DEF_SegmentAttributeLLList_tags_1[0]), /* 1 */ + asn_DEF_SegmentAttributeLLList_tags_1, /* Same as above */ + sizeof(asn_DEF_SegmentAttributeLLList_tags_1) + /sizeof(asn_DEF_SegmentAttributeLLList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SegmentAttributeLLList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SegmentAttributeLLList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SegmentAttributeLLList_1, + 1, /* Single element */ + &asn_SPC_SegmentAttributeLLList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SegmentAttributeXY.c b/src/tmx/Asn_J2735/src/r2020/SegmentAttributeXY.c new file mode 100644 index 000000000..a8b1e074e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SegmentAttributeXY.c @@ -0,0 +1,142 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SegmentAttributeXY.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SegmentAttributeXY_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SegmentAttributeXY_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 0, 37 } /* (0..37,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_SegmentAttributeXY_value2enum_1[] = { + { 0, 8, "reserved" }, + { 1, 10, "doNotBlock" }, + { 2, 9, "whiteLine" }, + { 3, 15, "mergingLaneLeft" }, + { 4, 16, "mergingLaneRight" }, + { 5, 10, "curbOnLeft" }, + { 6, 11, "curbOnRight" }, + { 7, 17, "loadingzoneOnLeft" }, + { 8, 18, "loadingzoneOnRight" }, + { 9, 18, "turnOutPointOnLeft" }, + { 10, 19, "turnOutPointOnRight" }, + { 11, 21, "adjacentParkingOnLeft" }, + { 12, 22, "adjacentParkingOnRight" }, + { 13, 22, "adjacentBikeLaneOnLeft" }, + { 14, 23, "adjacentBikeLaneOnRight" }, + { 15, 14, "sharedBikeLane" }, + { 16, 14, "bikeBoxInFront" }, + { 17, 17, "transitStopOnLeft" }, + { 18, 18, "transitStopOnRight" }, + { 19, 17, "transitStopInLane" }, + { 20, 24, "sharedWithTrackedVehicle" }, + { 21, 10, "safeIsland" }, + { 22, 15, "lowCurbsPresent" }, + { 23, 18, "rumbleStripPresent" }, + { 24, 23, "audibleSignalingPresent" }, + { 25, 21, "adaptiveTimingPresent" }, + { 26, 22, "rfSignalRequestPresent" }, + { 27, 20, "partialCurbIntrusion" }, + { 28, 11, "taperToLeft" }, + { 29, 12, "taperToRight" }, + { 30, 17, "taperToCenterLine" }, + { 31, 15, "parallelParking" }, + { 32, 13, "headInParking" }, + { 33, 11, "freeParking" }, + { 34, 25, "timeRestrictionsOnParking" }, + { 35, 10, "costToPark" }, + { 36, 19, "midBlockCurbPresent" }, + { 37, 21, "unEvenPavementPresent" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SegmentAttributeXY_enum2value_1[] = { + 25, /* adaptiveTimingPresent(25) */ + 13, /* adjacentBikeLaneOnLeft(13) */ + 14, /* adjacentBikeLaneOnRight(14) */ + 11, /* adjacentParkingOnLeft(11) */ + 12, /* adjacentParkingOnRight(12) */ + 24, /* audibleSignalingPresent(24) */ + 16, /* bikeBoxInFront(16) */ + 35, /* costToPark(35) */ + 5, /* curbOnLeft(5) */ + 6, /* curbOnRight(6) */ + 1, /* doNotBlock(1) */ + 33, /* freeParking(33) */ + 32, /* headInParking(32) */ + 7, /* loadingzoneOnLeft(7) */ + 8, /* loadingzoneOnRight(8) */ + 22, /* lowCurbsPresent(22) */ + 3, /* mergingLaneLeft(3) */ + 4, /* mergingLaneRight(4) */ + 36, /* midBlockCurbPresent(36) */ + 31, /* parallelParking(31) */ + 27, /* partialCurbIntrusion(27) */ + 0, /* reserved(0) */ + 26, /* rfSignalRequestPresent(26) */ + 23, /* rumbleStripPresent(23) */ + 21, /* safeIsland(21) */ + 15, /* sharedBikeLane(15) */ + 20, /* sharedWithTrackedVehicle(20) */ + 30, /* taperToCenterLine(30) */ + 28, /* taperToLeft(28) */ + 29, /* taperToRight(29) */ + 34, /* timeRestrictionsOnParking(34) */ + 19, /* transitStopInLane(19) */ + 17, /* transitStopOnLeft(17) */ + 18, /* transitStopOnRight(18) */ + 9, /* turnOutPointOnLeft(9) */ + 10, /* turnOutPointOnRight(10) */ + 37, /* unEvenPavementPresent(37) */ + 2 /* whiteLine(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SegmentAttributeXY_specs_1 = { + asn_MAP_SegmentAttributeXY_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SegmentAttributeXY_enum2value_1, /* N => "tag"; sorted by N */ + 38, /* Number of elements in the maps */ + 39, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SegmentAttributeXY_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SegmentAttributeXY = { + "SegmentAttributeXY", + "SegmentAttributeXY", + &asn_OP_NativeEnumerated, + asn_DEF_SegmentAttributeXY_tags_1, + sizeof(asn_DEF_SegmentAttributeXY_tags_1) + /sizeof(asn_DEF_SegmentAttributeXY_tags_1[0]), /* 1 */ + asn_DEF_SegmentAttributeXY_tags_1, /* Same as above */ + sizeof(asn_DEF_SegmentAttributeXY_tags_1) + /sizeof(asn_DEF_SegmentAttributeXY_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SegmentAttributeXY_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SegmentAttributeXY_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SegmentAttributeXY_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SegmentAttributeXYList.c b/src/tmx/Asn_J2735/src/r2020/SegmentAttributeXYList.c new file mode 100644 index 000000000..27ec52923 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SegmentAttributeXYList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SegmentAttributeXYList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SegmentAttributeXYList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SegmentAttributeXYList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SegmentAttributeXYList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SegmentAttributeXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SegmentAttributeXYList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SegmentAttributeXYList_specs_1 = { + sizeof(struct SegmentAttributeXYList), + offsetof(struct SegmentAttributeXYList, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_SegmentAttributeXYList = { + "SegmentAttributeXYList", + "SegmentAttributeXYList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SegmentAttributeXYList_tags_1, + sizeof(asn_DEF_SegmentAttributeXYList_tags_1) + /sizeof(asn_DEF_SegmentAttributeXYList_tags_1[0]), /* 1 */ + asn_DEF_SegmentAttributeXYList_tags_1, /* Same as above */ + sizeof(asn_DEF_SegmentAttributeXYList_tags_1) + /sizeof(asn_DEF_SegmentAttributeXYList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SegmentAttributeXYList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SegmentAttributeXYList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SegmentAttributeXYList_1, + 1, /* Single element */ + &asn_SPC_SegmentAttributeXYList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SemiMajorAxisAccuracy.c b/src/tmx/Asn_J2735/src/r2020/SemiMajorAxisAccuracy.c new file mode 100644 index 000000000..60571cbd8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SemiMajorAxisAccuracy.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SemiMajorAxisAccuracy.h" + +int +SemiMajorAxisAccuracy_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SemiMajorAxisAccuracy_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SemiMajorAxisAccuracy_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SemiMajorAxisAccuracy_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SemiMajorAxisAccuracy = { + "SemiMajorAxisAccuracy", + "SemiMajorAxisAccuracy", + &asn_OP_NativeInteger, + asn_DEF_SemiMajorAxisAccuracy_tags_1, + sizeof(asn_DEF_SemiMajorAxisAccuracy_tags_1) + /sizeof(asn_DEF_SemiMajorAxisAccuracy_tags_1[0]), /* 1 */ + asn_DEF_SemiMajorAxisAccuracy_tags_1, /* Same as above */ + sizeof(asn_DEF_SemiMajorAxisAccuracy_tags_1) + /sizeof(asn_DEF_SemiMajorAxisAccuracy_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SemiMajorAxisAccuracy_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SemiMajorAxisAccuracy_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SemiMajorAxisAccuracy_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SemiMajorAxisOrientation.c b/src/tmx/Asn_J2735/src/r2020/SemiMajorAxisOrientation.c new file mode 100644 index 000000000..86c29351b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SemiMajorAxisOrientation.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SemiMajorAxisOrientation.h" + +int +SemiMajorAxisOrientation_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SemiMajorAxisOrientation_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SemiMajorAxisOrientation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SemiMajorAxisOrientation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SemiMajorAxisOrientation = { + "SemiMajorAxisOrientation", + "SemiMajorAxisOrientation", + &asn_OP_NativeInteger, + asn_DEF_SemiMajorAxisOrientation_tags_1, + sizeof(asn_DEF_SemiMajorAxisOrientation_tags_1) + /sizeof(asn_DEF_SemiMajorAxisOrientation_tags_1[0]), /* 1 */ + asn_DEF_SemiMajorAxisOrientation_tags_1, /* Same as above */ + sizeof(asn_DEF_SemiMajorAxisOrientation_tags_1) + /sizeof(asn_DEF_SemiMajorAxisOrientation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SemiMajorAxisOrientation_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SemiMajorAxisOrientation_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SemiMajorAxisOrientation_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SemiMinorAxisAccuracy.c b/src/tmx/Asn_J2735/src/r2020/SemiMinorAxisAccuracy.c new file mode 100644 index 000000000..9c556d5ad --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SemiMinorAxisAccuracy.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SemiMinorAxisAccuracy.h" + +int +SemiMinorAxisAccuracy_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SemiMinorAxisAccuracy_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SemiMinorAxisAccuracy_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SemiMinorAxisAccuracy_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SemiMinorAxisAccuracy = { + "SemiMinorAxisAccuracy", + "SemiMinorAxisAccuracy", + &asn_OP_NativeInteger, + asn_DEF_SemiMinorAxisAccuracy_tags_1, + sizeof(asn_DEF_SemiMinorAxisAccuracy_tags_1) + /sizeof(asn_DEF_SemiMinorAxisAccuracy_tags_1[0]), /* 1 */ + asn_DEF_SemiMinorAxisAccuracy_tags_1, /* Same as above */ + sizeof(asn_DEF_SemiMinorAxisAccuracy_tags_1) + /sizeof(asn_DEF_SemiMinorAxisAccuracy_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SemiMinorAxisAccuracy_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SemiMinorAxisAccuracy_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SemiMinorAxisAccuracy_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SensorDataSharingMessage.c b/src/tmx/Asn_J2735/src/r2020/SensorDataSharingMessage.c new file mode 100644 index 000000000..b49a632e3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SensorDataSharingMessage.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "SensorDataSharingMessage.h" + +asn_TYPE_member_t asn_MBR_SensorDataSharingMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SensorDataSharingMessage, msgCnt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "msgCnt" + }, + { ATF_NOFLAGS, 0, offsetof(struct SensorDataSharingMessage, sourceID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TemporaryID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sourceID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SensorDataSharingMessage, equipmentType), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EquipmentType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "equipmentType" + }, + { ATF_NOFLAGS, 0, offsetof(struct SensorDataSharingMessage, sDSMTimeStamp), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DDateTime, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sDSMTimeStamp" + }, + { ATF_NOFLAGS, 0, offsetof(struct SensorDataSharingMessage, refPos), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Position3D, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "refPos" + }, + { ATF_NOFLAGS, 0, offsetof(struct SensorDataSharingMessage, refPosXYConf), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PositionalAccuracy, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "refPosXYConf" + }, + { ATF_POINTER, 1, offsetof(struct SensorDataSharingMessage, refPosElConf), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ElevationConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "refPosElConf" + }, + { ATF_NOFLAGS, 0, offsetof(struct SensorDataSharingMessage, objects), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DetectedObjectList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "objects" + }, +}; +static const int asn_MAP_SensorDataSharingMessage_oms_1[] = { 6 }; +static const ber_tlv_tag_t asn_DEF_SensorDataSharingMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SensorDataSharingMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* msgCnt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sourceID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* equipmentType */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sDSMTimeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* refPos */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* refPosXYConf */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* refPosElConf */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* objects */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SensorDataSharingMessage_specs_1 = { + sizeof(struct SensorDataSharingMessage), + offsetof(struct SensorDataSharingMessage, _asn_ctx), + asn_MAP_SensorDataSharingMessage_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_SensorDataSharingMessage_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SensorDataSharingMessage = { + "SensorDataSharingMessage", + "SensorDataSharingMessage", + &asn_OP_SEQUENCE, + asn_DEF_SensorDataSharingMessage_tags_1, + sizeof(asn_DEF_SensorDataSharingMessage_tags_1) + /sizeof(asn_DEF_SensorDataSharingMessage_tags_1[0]), /* 1 */ + asn_DEF_SensorDataSharingMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_SensorDataSharingMessage_tags_1) + /sizeof(asn_DEF_SensorDataSharingMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SensorDataSharingMessage_1, + 8, /* Elements count */ + &asn_SPC_SensorDataSharingMessage_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ShapePointSet.c b/src/tmx/Asn_J2735/src/r2020/ShapePointSet.c new file mode 100644 index 000000000..234c4363c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ShapePointSet.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ShapePointSet.h" + +asn_TYPE_member_t asn_MBR_ShapePointSet_1[] = { + { ATF_POINTER, 3, offsetof(struct ShapePointSet, anchor), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Position3D, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "anchor" + }, + { ATF_POINTER, 2, offsetof(struct ShapePointSet, laneWidth), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneWidth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneWidth" + }, + { ATF_POINTER, 1, offsetof(struct ShapePointSet, directionality), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DirectionOfUse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "directionality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ShapePointSet, nodeList), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NodeListXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nodeList" + }, +}; +static const int asn_MAP_ShapePointSet_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_ShapePointSet_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ShapePointSet_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* anchor */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* laneWidth */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* directionality */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* nodeList */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ShapePointSet_specs_1 = { + sizeof(struct ShapePointSet), + offsetof(struct ShapePointSet, _asn_ctx), + asn_MAP_ShapePointSet_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ShapePointSet_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ShapePointSet = { + "ShapePointSet", + "ShapePointSet", + &asn_OP_SEQUENCE, + asn_DEF_ShapePointSet_tags_1, + sizeof(asn_DEF_ShapePointSet_tags_1) + /sizeof(asn_DEF_ShapePointSet_tags_1[0]), /* 1 */ + asn_DEF_ShapePointSet_tags_1, /* Same as above */ + sizeof(asn_DEF_ShapePointSet_tags_1) + /sizeof(asn_DEF_ShapePointSet_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ShapePointSet_1, + 4, /* Elements count */ + &asn_SPC_ShapePointSet_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignPrority.c b/src/tmx/Asn_J2735/src/r2020/SignPrority.c new file mode 100644 index 000000000..0efdcb067 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignPrority.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignPrority.h" + +int +SignPrority_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 7L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SignPrority_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..7) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SignPrority_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SignPrority_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SignPrority = { + "SignPrority", + "SignPrority", + &asn_OP_NativeInteger, + asn_DEF_SignPrority_tags_1, + sizeof(asn_DEF_SignPrority_tags_1) + /sizeof(asn_DEF_SignPrority_tags_1[0]), /* 1 */ + asn_DEF_SignPrority_tags_1, /* Same as above */ + sizeof(asn_DEF_SignPrority_tags_1) + /sizeof(asn_DEF_SignPrority_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SignPrority_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SignPrority_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SignPrority_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalControlZone.c b/src/tmx/Asn_J2735/src/r2020/SignalControlZone.c new file mode 100644 index 000000000..3d42ebf59 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalControlZone.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "MapData" + * found in "J2735-MapData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalControlZone.h" + +asn_TYPE_member_t asn_MBR_SignalControlZone_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SignalControlZone, zone), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_SignalControlZone, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zone" + }, +}; +static const ber_tlv_tag_t asn_DEF_SignalControlZone_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SignalControlZone_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* zone */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SignalControlZone_specs_1 = { + sizeof(struct SignalControlZone), + offsetof(struct SignalControlZone, _asn_ctx), + asn_MAP_SignalControlZone_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalControlZone = { + "SignalControlZone", + "SignalControlZone", + &asn_OP_SEQUENCE, + asn_DEF_SignalControlZone_tags_1, + sizeof(asn_DEF_SignalControlZone_tags_1) + /sizeof(asn_DEF_SignalControlZone_tags_1[0]), /* 1 */ + asn_DEF_SignalControlZone_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalControlZone_tags_1) + /sizeof(asn_DEF_SignalControlZone_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SignalControlZone_1, + 1, /* Elements count */ + &asn_SPC_SignalControlZone_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalGroupID.c b/src/tmx/Asn_J2735/src/r2020/SignalGroupID.c new file mode 100644 index 000000000..8307c4888 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalGroupID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalGroupID.h" + +int +SignalGroupID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SignalGroupID_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SignalGroupID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SignalGroupID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SignalGroupID = { + "SignalGroupID", + "SignalGroupID", + &asn_OP_NativeInteger, + asn_DEF_SignalGroupID_tags_1, + sizeof(asn_DEF_SignalGroupID_tags_1) + /sizeof(asn_DEF_SignalGroupID_tags_1[0]), /* 1 */ + asn_DEF_SignalGroupID_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalGroupID_tags_1) + /sizeof(asn_DEF_SignalGroupID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SignalGroupID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SignalGroupID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SignalGroupID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalHeadLocation.c b/src/tmx/Asn_J2735/src/r2020/SignalHeadLocation.c new file mode 100644 index 000000000..04fe2b2ed --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalHeadLocation.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalHeadLocation.h" + +asn_TYPE_member_t asn_MBR_SignalHeadLocation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SignalHeadLocation, node), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NodeOffsetPointXY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "node" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalHeadLocation, signalGroupID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignalGroupID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "signalGroupID" + }, +}; +static const ber_tlv_tag_t asn_DEF_SignalHeadLocation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SignalHeadLocation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* node */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* signalGroupID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SignalHeadLocation_specs_1 = { + sizeof(struct SignalHeadLocation), + offsetof(struct SignalHeadLocation, _asn_ctx), + asn_MAP_SignalHeadLocation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalHeadLocation = { + "SignalHeadLocation", + "SignalHeadLocation", + &asn_OP_SEQUENCE, + asn_DEF_SignalHeadLocation_tags_1, + sizeof(asn_DEF_SignalHeadLocation_tags_1) + /sizeof(asn_DEF_SignalHeadLocation_tags_1[0]), /* 1 */ + asn_DEF_SignalHeadLocation_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalHeadLocation_tags_1) + /sizeof(asn_DEF_SignalHeadLocation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SignalHeadLocation_1, + 2, /* Elements count */ + &asn_SPC_SignalHeadLocation_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalHeadLocationList.c b/src/tmx/Asn_J2735/src/r2020/SignalHeadLocationList.c new file mode 100644 index 000000000..3425f4b56 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalHeadLocationList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalHeadLocationList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SignalHeadLocationList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..20)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SignalHeadLocationList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 20 } /* (SIZE(1..20)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SignalHeadLocationList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SignalHeadLocation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SignalHeadLocationList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SignalHeadLocationList_specs_1 = { + sizeof(struct SignalHeadLocationList), + offsetof(struct SignalHeadLocationList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalHeadLocationList = { + "SignalHeadLocationList", + "SignalHeadLocationList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SignalHeadLocationList_tags_1, + sizeof(asn_DEF_SignalHeadLocationList_tags_1) + /sizeof(asn_DEF_SignalHeadLocationList_tags_1[0]), /* 1 */ + asn_DEF_SignalHeadLocationList_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalHeadLocationList_tags_1) + /sizeof(asn_DEF_SignalHeadLocationList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SignalHeadLocationList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SignalHeadLocationList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SignalHeadLocationList_1, + 1, /* Single element */ + &asn_SPC_SignalHeadLocationList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalReqScheme.c b/src/tmx/Asn_J2735/src/r2020/SignalReqScheme.c new file mode 100644 index 000000000..cae9d6fd5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalReqScheme.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalReqScheme.h" + +int +SignalReqScheme_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 1UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SignalReqScheme_constr_1 CC_NOTUSED = { + { 0, 0 }, + 1 /* (SIZE(1..1)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_SignalReqScheme_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SignalReqScheme_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SignalReqScheme = { + "SignalReqScheme", + "SignalReqScheme", + &asn_OP_OCTET_STRING, + asn_DEF_SignalReqScheme_tags_1, + sizeof(asn_DEF_SignalReqScheme_tags_1) + /sizeof(asn_DEF_SignalReqScheme_tags_1[0]), /* 1 */ + asn_DEF_SignalReqScheme_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalReqScheme_tags_1) + /sizeof(asn_DEF_SignalReqScheme_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SignalReqScheme_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SignalReqScheme_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SignalReqScheme_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalRequest.c b/src/tmx/Asn_J2735/src/r2020/SignalRequest.c new file mode 100644 index 000000000..86b026922 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalRequest.c @@ -0,0 +1,261 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalRequest.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_SignalRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_7 = { + sizeof(struct SignalRequest__regional), + offsetof(struct SignalRequest__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_7 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_7, + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]) - 1, /* 1 */ + asn_DEF_regional_tags_7, /* Same as above */ + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_7, + 1, /* Single element */ + &asn_SPC_regional_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SignalRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SignalRequest, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntersectionReferenceID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalRequest, requestID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "requestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalRequest, requestType), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PriorityRequestType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "requestType" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalRequest, inBoundLane), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_IntersectionAccessPoint, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "inBoundLane" + }, + { ATF_POINTER, 2, offsetof(struct SignalRequest, outBoundLane), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_IntersectionAccessPoint, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "outBoundLane" + }, + { ATF_POINTER, 1, offsetof(struct SignalRequest, regional), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + 0, + &asn_DEF_regional_7, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_SignalRequest_oms_1[] = { 4, 5 }; +static const ber_tlv_tag_t asn_DEF_SignalRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SignalRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* requestID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* requestType */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* inBoundLane */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* outBoundLane */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SignalRequest_specs_1 = { + sizeof(struct SignalRequest), + offsetof(struct SignalRequest, _asn_ctx), + asn_MAP_SignalRequest_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_SignalRequest_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalRequest = { + "SignalRequest", + "SignalRequest", + &asn_OP_SEQUENCE, + asn_DEF_SignalRequest_tags_1, + sizeof(asn_DEF_SignalRequest_tags_1) + /sizeof(asn_DEF_SignalRequest_tags_1[0]), /* 1 */ + asn_DEF_SignalRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalRequest_tags_1) + /sizeof(asn_DEF_SignalRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SignalRequest_1, + 6, /* Elements count */ + &asn_SPC_SignalRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalRequestList.c b/src/tmx/Asn_J2735/src/r2020/SignalRequestList.c new file mode 100644 index 000000000..7fe107462 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalRequestList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalRequestList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SignalRequestList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SignalRequestList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SignalRequestList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SignalRequestPackage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SignalRequestList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SignalRequestList_specs_1 = { + sizeof(struct SignalRequestList), + offsetof(struct SignalRequestList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalRequestList = { + "SignalRequestList", + "SignalRequestList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SignalRequestList_tags_1, + sizeof(asn_DEF_SignalRequestList_tags_1) + /sizeof(asn_DEF_SignalRequestList_tags_1[0]), /* 1 */ + asn_DEF_SignalRequestList_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalRequestList_tags_1) + /sizeof(asn_DEF_SignalRequestList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SignalRequestList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SignalRequestList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SignalRequestList_1, + 1, /* Single element */ + &asn_SPC_SignalRequestList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalRequestMessage.c b/src/tmx/Asn_J2735/src/r2020/SignalRequestMessage.c new file mode 100644 index 000000000..4eba2d084 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalRequestMessage.c @@ -0,0 +1,261 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalRequestMessage.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_SignalRequestMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_7 = { + sizeof(struct SignalRequestMessage__regional), + offsetof(struct SignalRequestMessage__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_7 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_7, + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]) - 1, /* 1 */ + asn_DEF_regional_tags_7, /* Same as above */ + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_7, + 1, /* Single element */ + &asn_SPC_regional_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SignalRequestMessage_1[] = { + { ATF_POINTER, 1, offsetof(struct SignalRequestMessage, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalRequestMessage, second), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "second" + }, + { ATF_POINTER, 2, offsetof(struct SignalRequestMessage, sequenceNumber), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sequenceNumber" + }, + { ATF_POINTER, 1, offsetof(struct SignalRequestMessage, requests), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignalRequestList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "requests" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalRequestMessage, requestor), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RequestorDescription, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "requestor" + }, + { ATF_POINTER, 1, offsetof(struct SignalRequestMessage, regional), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + 0, + &asn_DEF_regional_7, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_SignalRequestMessage_oms_1[] = { 0, 2, 3, 5 }; +static const ber_tlv_tag_t asn_DEF_SignalRequestMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SignalRequestMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* second */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sequenceNumber */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* requests */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* requestor */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SignalRequestMessage_specs_1 = { + sizeof(struct SignalRequestMessage), + offsetof(struct SignalRequestMessage, _asn_ctx), + asn_MAP_SignalRequestMessage_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_SignalRequestMessage_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalRequestMessage = { + "SignalRequestMessage", + "SignalRequestMessage", + &asn_OP_SEQUENCE, + asn_DEF_SignalRequestMessage_tags_1, + sizeof(asn_DEF_SignalRequestMessage_tags_1) + /sizeof(asn_DEF_SignalRequestMessage_tags_1[0]), /* 1 */ + asn_DEF_SignalRequestMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalRequestMessage_tags_1) + /sizeof(asn_DEF_SignalRequestMessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SignalRequestMessage_1, + 6, /* Elements count */ + &asn_SPC_SignalRequestMessage_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalRequestPackage.c b/src/tmx/Asn_J2735/src/r2020/SignalRequestPackage.c new file mode 100644 index 000000000..c0719c078 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalRequestPackage.c @@ -0,0 +1,243 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalRequestPackage.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_6[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_SignalRequestPackage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_6[] = { + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_6 = { + sizeof(struct SignalRequestPackage__regional), + offsetof(struct SignalRequestPackage__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_6 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_6, + sizeof(asn_DEF_regional_tags_6) + /sizeof(asn_DEF_regional_tags_6[0]) - 1, /* 1 */ + asn_DEF_regional_tags_6, /* Same as above */ + sizeof(asn_DEF_regional_tags_6) + /sizeof(asn_DEF_regional_tags_6[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_6, + 1, /* Single element */ + &asn_SPC_regional_specs_6 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SignalRequestPackage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SignalRequestPackage, request), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignalRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "request" + }, + { ATF_POINTER, 4, offsetof(struct SignalRequestPackage, minute), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "minute" + }, + { ATF_POINTER, 3, offsetof(struct SignalRequestPackage, second), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "second" + }, + { ATF_POINTER, 2, offsetof(struct SignalRequestPackage, duration), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "duration" + }, + { ATF_POINTER, 1, offsetof(struct SignalRequestPackage, regional), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + 0, + &asn_DEF_regional_6, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_SignalRequestPackage_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_SignalRequestPackage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SignalRequestPackage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* request */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* minute */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* second */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* duration */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SignalRequestPackage_specs_1 = { + sizeof(struct SignalRequestPackage), + offsetof(struct SignalRequestPackage, _asn_ctx), + asn_MAP_SignalRequestPackage_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_SignalRequestPackage_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalRequestPackage = { + "SignalRequestPackage", + "SignalRequestPackage", + &asn_OP_SEQUENCE, + asn_DEF_SignalRequestPackage_tags_1, + sizeof(asn_DEF_SignalRequestPackage_tags_1) + /sizeof(asn_DEF_SignalRequestPackage_tags_1[0]), /* 1 */ + asn_DEF_SignalRequestPackage_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalRequestPackage_tags_1) + /sizeof(asn_DEF_SignalRequestPackage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SignalRequestPackage_1, + 5, /* Elements count */ + &asn_SPC_SignalRequestPackage_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalRequesterInfo.c b/src/tmx/Asn_J2735/src/r2020/SignalRequesterInfo.c new file mode 100644 index 000000000..4f431059d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalRequesterInfo.c @@ -0,0 +1,140 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalRequesterInfo.h" + +asn_TYPE_member_t asn_MBR_SignalRequesterInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SignalRequesterInfo, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_VehicleID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalRequesterInfo, request), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "request" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalRequesterInfo, sequenceNumber), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sequenceNumber" + }, + { ATF_POINTER, 2, offsetof(struct SignalRequesterInfo, role), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BasicVehicleRole, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "role" + }, + { ATF_POINTER, 1, offsetof(struct SignalRequesterInfo, typeData), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RequestorType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "typeData" + }, +}; +static const int asn_MAP_SignalRequesterInfo_oms_1[] = { 3, 4 }; +static const ber_tlv_tag_t asn_DEF_SignalRequesterInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SignalRequesterInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* request */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sequenceNumber */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* role */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* typeData */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SignalRequesterInfo_specs_1 = { + sizeof(struct SignalRequesterInfo), + offsetof(struct SignalRequesterInfo, _asn_ctx), + asn_MAP_SignalRequesterInfo_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_SignalRequesterInfo_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalRequesterInfo = { + "SignalRequesterInfo", + "SignalRequesterInfo", + &asn_OP_SEQUENCE, + asn_DEF_SignalRequesterInfo_tags_1, + sizeof(asn_DEF_SignalRequesterInfo_tags_1) + /sizeof(asn_DEF_SignalRequesterInfo_tags_1[0]), /* 1 */ + asn_DEF_SignalRequesterInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalRequesterInfo_tags_1) + /sizeof(asn_DEF_SignalRequesterInfo_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SignalRequesterInfo_1, + 5, /* Elements count */ + &asn_SPC_SignalRequesterInfo_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalStatus.c b/src/tmx/Asn_J2735/src/r2020/SignalStatus.c new file mode 100644 index 000000000..5ae35e34d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalStatus.c @@ -0,0 +1,225 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalStatus.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_SignalStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_5 = { + sizeof(struct SignalStatus__regional), + offsetof(struct SignalStatus__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_5 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_5, + sizeof(asn_DEF_regional_tags_5) + /sizeof(asn_DEF_regional_tags_5[0]) - 1, /* 1 */ + asn_DEF_regional_tags_5, /* Same as above */ + sizeof(asn_DEF_regional_tags_5) + /sizeof(asn_DEF_regional_tags_5[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_5, + 1, /* Single element */ + &asn_SPC_regional_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SignalStatus_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SignalStatus, sequenceNumber), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sequenceNumber" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalStatus, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntersectionReferenceID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalStatus, sigStatus), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignalStatusPackageList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sigStatus" + }, + { ATF_POINTER, 1, offsetof(struct SignalStatus, regional), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_regional_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_SignalStatus_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_SignalStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SignalStatus_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sequenceNumber */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sigStatus */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SignalStatus_specs_1 = { + sizeof(struct SignalStatus), + offsetof(struct SignalStatus, _asn_ctx), + asn_MAP_SignalStatus_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_SignalStatus_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalStatus = { + "SignalStatus", + "SignalStatus", + &asn_OP_SEQUENCE, + asn_DEF_SignalStatus_tags_1, + sizeof(asn_DEF_SignalStatus_tags_1) + /sizeof(asn_DEF_SignalStatus_tags_1[0]), /* 1 */ + asn_DEF_SignalStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalStatus_tags_1) + /sizeof(asn_DEF_SignalStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SignalStatus_1, + 4, /* Elements count */ + &asn_SPC_SignalStatus_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalStatusList.c b/src/tmx/Asn_J2735/src/r2020/SignalStatusList.c new file mode 100644 index 000000000..c173876ba --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalStatusList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalStatusList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SignalStatusList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SignalStatusList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SignalStatusList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SignalStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SignalStatusList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SignalStatusList_specs_1 = { + sizeof(struct SignalStatusList), + offsetof(struct SignalStatusList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalStatusList = { + "SignalStatusList", + "SignalStatusList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SignalStatusList_tags_1, + sizeof(asn_DEF_SignalStatusList_tags_1) + /sizeof(asn_DEF_SignalStatusList_tags_1[0]), /* 1 */ + asn_DEF_SignalStatusList_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalStatusList_tags_1) + /sizeof(asn_DEF_SignalStatusList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SignalStatusList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SignalStatusList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SignalStatusList_1, + 1, /* Single element */ + &asn_SPC_SignalStatusList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalStatusMessage.c b/src/tmx/Asn_J2735/src/r2020/SignalStatusMessage.c new file mode 100644 index 000000000..0619df8dd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalStatusMessage.c @@ -0,0 +1,243 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalStatusMessage.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_6[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_SignalStatusMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_6[] = { + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_6 = { + sizeof(struct SignalStatusMessage__regional), + offsetof(struct SignalStatusMessage__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_6 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_6, + sizeof(asn_DEF_regional_tags_6) + /sizeof(asn_DEF_regional_tags_6[0]) - 1, /* 1 */ + asn_DEF_regional_tags_6, /* Same as above */ + sizeof(asn_DEF_regional_tags_6) + /sizeof(asn_DEF_regional_tags_6[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_6, + 1, /* Single element */ + &asn_SPC_regional_specs_6 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SignalStatusMessage_1[] = { + { ATF_POINTER, 1, offsetof(struct SignalStatusMessage, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalStatusMessage, second), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "second" + }, + { ATF_POINTER, 1, offsetof(struct SignalStatusMessage, sequenceNumber), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sequenceNumber" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalStatusMessage, status), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignalStatusList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "status" + }, + { ATF_POINTER, 1, offsetof(struct SignalStatusMessage, regional), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + 0, + &asn_DEF_regional_6, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_SignalStatusMessage_oms_1[] = { 0, 2, 4 }; +static const ber_tlv_tag_t asn_DEF_SignalStatusMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SignalStatusMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* second */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sequenceNumber */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* status */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SignalStatusMessage_specs_1 = { + sizeof(struct SignalStatusMessage), + offsetof(struct SignalStatusMessage, _asn_ctx), + asn_MAP_SignalStatusMessage_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_SignalStatusMessage_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalStatusMessage = { + "SignalStatusMessage", + "SignalStatusMessage", + &asn_OP_SEQUENCE, + asn_DEF_SignalStatusMessage_tags_1, + sizeof(asn_DEF_SignalStatusMessage_tags_1) + /sizeof(asn_DEF_SignalStatusMessage_tags_1[0]), /* 1 */ + asn_DEF_SignalStatusMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalStatusMessage_tags_1) + /sizeof(asn_DEF_SignalStatusMessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SignalStatusMessage_1, + 5, /* Elements count */ + &asn_SPC_SignalStatusMessage_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalStatusPackage.c b/src/tmx/Asn_J2735/src/r2020/SignalStatusPackage.c new file mode 100644 index 000000000..4237050b7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalStatusPackage.c @@ -0,0 +1,297 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalStatusPackage.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_SignalStatusPackage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_9[] = { + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_9 = { + sizeof(struct SignalStatusPackage__regional), + offsetof(struct SignalStatusPackage__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_9 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_9, + sizeof(asn_DEF_regional_tags_9) + /sizeof(asn_DEF_regional_tags_9[0]) - 1, /* 1 */ + asn_DEF_regional_tags_9, /* Same as above */ + sizeof(asn_DEF_regional_tags_9) + /sizeof(asn_DEF_regional_tags_9[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_9, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_9, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_9, + 1, /* Single element */ + &asn_SPC_regional_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SignalStatusPackage_1[] = { + { ATF_POINTER, 1, offsetof(struct SignalStatusPackage, requester), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignalRequesterInfo, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "requester" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalStatusPackage, inboundOn), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_IntersectionAccessPoint, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "inboundOn" + }, + { ATF_POINTER, 4, offsetof(struct SignalStatusPackage, outboundOn), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_IntersectionAccessPoint, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "outboundOn" + }, + { ATF_POINTER, 3, offsetof(struct SignalStatusPackage, minute), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "minute" + }, + { ATF_POINTER, 2, offsetof(struct SignalStatusPackage, second), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "second" + }, + { ATF_POINTER, 1, offsetof(struct SignalStatusPackage, duration), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "duration" + }, + { ATF_NOFLAGS, 0, offsetof(struct SignalStatusPackage, status), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrioritizationResponseStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "status" + }, + { ATF_POINTER, 1, offsetof(struct SignalStatusPackage, regional), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + 0, + &asn_DEF_regional_9, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_9, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_9, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_SignalStatusPackage_oms_1[] = { 0, 2, 3, 4, 5, 7 }; +static const ber_tlv_tag_t asn_DEF_SignalStatusPackage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SignalStatusPackage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requester */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* inboundOn */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* outboundOn */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* minute */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* second */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* duration */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* status */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SignalStatusPackage_specs_1 = { + sizeof(struct SignalStatusPackage), + offsetof(struct SignalStatusPackage, _asn_ctx), + asn_MAP_SignalStatusPackage_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_SignalStatusPackage_oms_1, /* Optional members */ + 6, 0, /* Root/Additions */ + 8, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalStatusPackage = { + "SignalStatusPackage", + "SignalStatusPackage", + &asn_OP_SEQUENCE, + asn_DEF_SignalStatusPackage_tags_1, + sizeof(asn_DEF_SignalStatusPackage_tags_1) + /sizeof(asn_DEF_SignalStatusPackage_tags_1[0]), /* 1 */ + asn_DEF_SignalStatusPackage_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalStatusPackage_tags_1) + /sizeof(asn_DEF_SignalStatusPackage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SignalStatusPackage_1, + 8, /* Elements count */ + &asn_SPC_SignalStatusPackage_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SignalStatusPackageList.c b/src/tmx/Asn_J2735/src/r2020/SignalStatusPackageList.c new file mode 100644 index 000000000..258152583 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SignalStatusPackageList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalStatusMessage" + * found in "J2735-SignalStatusMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SignalStatusPackageList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SignalStatusPackageList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SignalStatusPackageList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SignalStatusPackageList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SignalStatusPackage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SignalStatusPackageList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SignalStatusPackageList_specs_1 = { + sizeof(struct SignalStatusPackageList), + offsetof(struct SignalStatusPackageList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SignalStatusPackageList = { + "SignalStatusPackageList", + "SignalStatusPackageList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SignalStatusPackageList_tags_1, + sizeof(asn_DEF_SignalStatusPackageList_tags_1) + /sizeof(asn_DEF_SignalStatusPackageList_tags_1[0]), /* 1 */ + asn_DEF_SignalStatusPackageList_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalStatusPackageList_tags_1) + /sizeof(asn_DEF_SignalStatusPackageList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SignalStatusPackageList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SignalStatusPackageList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SignalStatusPackageList_1, + 1, /* Single element */ + &asn_SPC_SignalStatusPackageList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SirenInUse.c b/src/tmx/Asn_J2735/src/r2020/SirenInUse.c new file mode 100644 index 000000000..22bd6de7e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SirenInUse.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SirenInUse.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SirenInUse_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SirenInUse_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_SirenInUse_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 8, "notInUse" }, + { 2, 5, "inUse" }, + { 3, 8, "reserved" } +}; +static const unsigned int asn_MAP_SirenInUse_enum2value_1[] = { + 2, /* inUse(2) */ + 1, /* notInUse(1) */ + 3, /* reserved(3) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_SirenInUse_specs_1 = { + asn_MAP_SirenInUse_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SirenInUse_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SirenInUse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SirenInUse = { + "SirenInUse", + "SirenInUse", + &asn_OP_NativeEnumerated, + asn_DEF_SirenInUse_tags_1, + sizeof(asn_DEF_SirenInUse_tags_1) + /sizeof(asn_DEF_SirenInUse_tags_1[0]), /* 1 */ + asn_DEF_SirenInUse_tags_1, /* Same as above */ + sizeof(asn_DEF_SirenInUse_tags_1) + /sizeof(asn_DEF_SirenInUse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SirenInUse_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SirenInUse_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SirenInUse_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SizeValue.c b/src/tmx/Asn_J2735/src/r2020/SizeValue.c new file mode 100644 index 000000000..19ec9d837 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SizeValue.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "SizeValue.h" + +int +SizeValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_SizeValue_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..1023) */, + -1}; +asn_per_constraints_t asn_PER_type_SizeValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_SizeValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SizeValue = { + "SizeValue", + "SizeValue", + &asn_OP_NativeInteger, + asn_DEF_SizeValue_tags_1, + sizeof(asn_DEF_SizeValue_tags_1) + /sizeof(asn_DEF_SizeValue_tags_1[0]), /* 1 */ + asn_DEF_SizeValue_tags_1, /* Same as above */ + sizeof(asn_DEF_SizeValue_tags_1) + /sizeof(asn_DEF_SizeValue_tags_1[0]), /* 1 */ + { &asn_OER_type_SizeValue_constr_1, &asn_PER_type_SizeValue_constr_1, SizeValue_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SizeValueConfidence.c b/src/tmx/Asn_J2735/src/r2020/SizeValueConfidence.c new file mode 100644 index 000000000..ac70f8af5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SizeValueConfidence.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "SizeValueConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_SizeValueConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_SizeValueConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 13 } /* (0..13) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SizeValueConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 11, "size-100-00" }, + { 2, 11, "size-050-00" }, + { 3, 11, "size-020-00" }, + { 4, 11, "size-010-00" }, + { 5, 11, "size-005-00" }, + { 6, 11, "size-002-00" }, + { 7, 11, "size-001-00" }, + { 8, 11, "size-000-50" }, + { 9, 11, "size-000-20" }, + { 10, 11, "size-000-10" }, + { 11, 11, "size-000-05" }, + { 12, 11, "size-000-02" }, + { 13, 11, "size-000-01" } +}; +static const unsigned int asn_MAP_SizeValueConfidence_enum2value_1[] = { + 13, /* size-000-01(13) */ + 12, /* size-000-02(12) */ + 11, /* size-000-05(11) */ + 10, /* size-000-10(10) */ + 9, /* size-000-20(9) */ + 8, /* size-000-50(8) */ + 7, /* size-001-00(7) */ + 6, /* size-002-00(6) */ + 5, /* size-005-00(5) */ + 4, /* size-010-00(4) */ + 3, /* size-020-00(3) */ + 2, /* size-050-00(2) */ + 1, /* size-100-00(1) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_SizeValueConfidence_specs_1 = { + asn_MAP_SizeValueConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SizeValueConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 14, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SizeValueConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SizeValueConfidence = { + "SizeValueConfidence", + "SizeValueConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_SizeValueConfidence_tags_1, + sizeof(asn_DEF_SizeValueConfidence_tags_1) + /sizeof(asn_DEF_SizeValueConfidence_tags_1[0]), /* 1 */ + asn_DEF_SizeValueConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_SizeValueConfidence_tags_1) + /sizeof(asn_DEF_SizeValueConfidence_tags_1[0]), /* 1 */ + { &asn_OER_type_SizeValueConfidence_constr_1, &asn_PER_type_SizeValueConfidence_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SizeValueConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Snapshot.c b/src/tmx/Asn_J2735/src/r2020/Snapshot.c new file mode 100644 index 000000000..a4255d50a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Snapshot.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Snapshot.h" + +asn_TYPE_member_t asn_MBR_Snapshot_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Snapshot, thePosition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FullPositionVector, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "thePosition" + }, + { ATF_POINTER, 2, offsetof(struct Snapshot, safetyExt), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleSafetyExtensions, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "safetyExt" + }, + { ATF_POINTER, 1, offsetof(struct Snapshot, dataSet), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dataSet" + }, +}; +static const int asn_MAP_Snapshot_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_Snapshot_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Snapshot_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* thePosition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* safetyExt */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* dataSet */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Snapshot_specs_1 = { + sizeof(struct Snapshot), + offsetof(struct Snapshot, _asn_ctx), + asn_MAP_Snapshot_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_Snapshot_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Snapshot = { + "Snapshot", + "Snapshot", + &asn_OP_SEQUENCE, + asn_DEF_Snapshot_tags_1, + sizeof(asn_DEF_Snapshot_tags_1) + /sizeof(asn_DEF_Snapshot_tags_1[0]), /* 1 */ + asn_DEF_Snapshot_tags_1, /* Same as above */ + sizeof(asn_DEF_Snapshot_tags_1) + /sizeof(asn_DEF_Snapshot_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Snapshot_1, + 3, /* Elements count */ + &asn_SPC_Snapshot_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SnapshotDistance.c b/src/tmx/Asn_J2735/src/r2020/SnapshotDistance.c new file mode 100644 index 000000000..299a1f62a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SnapshotDistance.c @@ -0,0 +1,120 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SnapshotDistance.h" + +asn_TYPE_member_t asn_MBR_SnapshotDistance_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SnapshotDistance, distance1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GrossDistance, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "distance1" + }, + { ATF_NOFLAGS, 0, offsetof(struct SnapshotDistance, speed1), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GrossSpeed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed1" + }, + { ATF_NOFLAGS, 0, offsetof(struct SnapshotDistance, distance2), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GrossDistance, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "distance2" + }, + { ATF_NOFLAGS, 0, offsetof(struct SnapshotDistance, speed2), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GrossSpeed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed2" + }, +}; +static const ber_tlv_tag_t asn_DEF_SnapshotDistance_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SnapshotDistance_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* distance1 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* speed1 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* distance2 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* speed2 */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SnapshotDistance_specs_1 = { + sizeof(struct SnapshotDistance), + offsetof(struct SnapshotDistance, _asn_ctx), + asn_MAP_SnapshotDistance_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SnapshotDistance = { + "SnapshotDistance", + "SnapshotDistance", + &asn_OP_SEQUENCE, + asn_DEF_SnapshotDistance_tags_1, + sizeof(asn_DEF_SnapshotDistance_tags_1) + /sizeof(asn_DEF_SnapshotDistance_tags_1[0]), /* 1 */ + asn_DEF_SnapshotDistance_tags_1, /* Same as above */ + sizeof(asn_DEF_SnapshotDistance_tags_1) + /sizeof(asn_DEF_SnapshotDistance_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SnapshotDistance_1, + 4, /* Elements count */ + &asn_SPC_SnapshotDistance_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SnapshotTime.c b/src/tmx/Asn_J2735/src/r2020/SnapshotTime.c new file mode 100644 index 000000000..e218861c7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SnapshotTime.c @@ -0,0 +1,120 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SnapshotTime.h" + +asn_TYPE_member_t asn_MBR_SnapshotTime_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SnapshotTime, speed1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GrossSpeed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed1" + }, + { ATF_NOFLAGS, 0, offsetof(struct SnapshotTime, time1), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SecondOfTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "time1" + }, + { ATF_NOFLAGS, 0, offsetof(struct SnapshotTime, speed2), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GrossSpeed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed2" + }, + { ATF_NOFLAGS, 0, offsetof(struct SnapshotTime, time2), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SecondOfTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "time2" + }, +}; +static const ber_tlv_tag_t asn_DEF_SnapshotTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SnapshotTime_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* speed1 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* time1 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* speed2 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* time2 */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SnapshotTime_specs_1 = { + sizeof(struct SnapshotTime), + offsetof(struct SnapshotTime, _asn_ctx), + asn_MAP_SnapshotTime_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SnapshotTime = { + "SnapshotTime", + "SnapshotTime", + &asn_OP_SEQUENCE, + asn_DEF_SnapshotTime_tags_1, + sizeof(asn_DEF_SnapshotTime_tags_1) + /sizeof(asn_DEF_SnapshotTime_tags_1[0]), /* 1 */ + asn_DEF_SnapshotTime_tags_1, /* Same as above */ + sizeof(asn_DEF_SnapshotTime_tags_1) + /sizeof(asn_DEF_SnapshotTime_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SnapshotTime_1, + 4, /* Elements count */ + &asn_SPC_SnapshotTime_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SpecialVehicleExtensions.c b/src/tmx/Asn_J2735/src/r2020/SpecialVehicleExtensions.c new file mode 100644 index 000000000..092b8f1e8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SpecialVehicleExtensions.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SpecialVehicleExtensions.h" + +asn_TYPE_member_t asn_MBR_SpecialVehicleExtensions_1[] = { + { ATF_POINTER, 3, offsetof(struct SpecialVehicleExtensions, vehicleAlerts), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EmergencyDetails, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleAlerts" + }, + { ATF_POINTER, 2, offsetof(struct SpecialVehicleExtensions, description), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EventDescription, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "description" + }, + { ATF_POINTER, 1, offsetof(struct SpecialVehicleExtensions, trailers), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrailerData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trailers" + }, +}; +static const int asn_MAP_SpecialVehicleExtensions_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_SpecialVehicleExtensions_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SpecialVehicleExtensions_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vehicleAlerts */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* description */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* trailers */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SpecialVehicleExtensions_specs_1 = { + sizeof(struct SpecialVehicleExtensions), + offsetof(struct SpecialVehicleExtensions, _asn_ctx), + asn_MAP_SpecialVehicleExtensions_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_SpecialVehicleExtensions_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SpecialVehicleExtensions = { + "SpecialVehicleExtensions", + "SpecialVehicleExtensions", + &asn_OP_SEQUENCE, + asn_DEF_SpecialVehicleExtensions_tags_1, + sizeof(asn_DEF_SpecialVehicleExtensions_tags_1) + /sizeof(asn_DEF_SpecialVehicleExtensions_tags_1[0]), /* 1 */ + asn_DEF_SpecialVehicleExtensions_tags_1, /* Same as above */ + sizeof(asn_DEF_SpecialVehicleExtensions_tags_1) + /sizeof(asn_DEF_SpecialVehicleExtensions_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SpecialVehicleExtensions_1, + 3, /* Elements count */ + &asn_SPC_SpecialVehicleExtensions_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Speed.c b/src/tmx/Asn_J2735/src/r2020/Speed.c new file mode 100644 index 000000000..65fa742d7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Speed.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Speed.h" + +int +Speed_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 8191L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Speed_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..8191) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Speed_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 13, 13, 0, 8191 } /* (0..8191) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Speed_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Speed = { + "Speed", + "Speed", + &asn_OP_NativeInteger, + asn_DEF_Speed_tags_1, + sizeof(asn_DEF_Speed_tags_1) + /sizeof(asn_DEF_Speed_tags_1[0]), /* 1 */ + asn_DEF_Speed_tags_1, /* Same as above */ + sizeof(asn_DEF_Speed_tags_1) + /sizeof(asn_DEF_Speed_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Speed_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Speed_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Speed_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SpeedAdvice.c b/src/tmx/Asn_J2735/src/r2020/SpeedAdvice.c new file mode 100644 index 000000000..ad268b584 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SpeedAdvice.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SpeedAdvice.h" + +int +SpeedAdvice_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 500L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SpeedAdvice_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..500) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SpeedAdvice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, 0, 500 } /* (0..500) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SpeedAdvice_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpeedAdvice = { + "SpeedAdvice", + "SpeedAdvice", + &asn_OP_NativeInteger, + asn_DEF_SpeedAdvice_tags_1, + sizeof(asn_DEF_SpeedAdvice_tags_1) + /sizeof(asn_DEF_SpeedAdvice_tags_1[0]), /* 1 */ + asn_DEF_SpeedAdvice_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedAdvice_tags_1) + /sizeof(asn_DEF_SpeedAdvice_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SpeedAdvice_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SpeedAdvice_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SpeedAdvice_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SpeedConfidence.c b/src/tmx/Asn_J2735/src/r2020/SpeedConfidence.c new file mode 100644 index 000000000..00874768f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SpeedConfidence.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SpeedConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SpeedConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SpeedConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_SpeedConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 9, "prec100ms" }, + { 2, 8, "prec10ms" }, + { 3, 7, "prec5ms" }, + { 4, 7, "prec1ms" }, + { 5, 9, "prec0-1ms" }, + { 6, 10, "prec0-05ms" }, + { 7, 10, "prec0-01ms" } +}; +static const unsigned int asn_MAP_SpeedConfidence_enum2value_1[] = { + 7, /* prec0-01ms(7) */ + 6, /* prec0-05ms(6) */ + 5, /* prec0-1ms(5) */ + 1, /* prec100ms(1) */ + 2, /* prec10ms(2) */ + 4, /* prec1ms(4) */ + 3, /* prec5ms(3) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_SpeedConfidence_specs_1 = { + asn_MAP_SpeedConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SpeedConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SpeedConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpeedConfidence = { + "SpeedConfidence", + "SpeedConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_SpeedConfidence_tags_1, + sizeof(asn_DEF_SpeedConfidence_tags_1) + /sizeof(asn_DEF_SpeedConfidence_tags_1[0]), /* 1 */ + asn_DEF_SpeedConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedConfidence_tags_1) + /sizeof(asn_DEF_SpeedConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SpeedConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SpeedConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SpeedConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SpeedLimit.c b/src/tmx/Asn_J2735/src/r2020/SpeedLimit.c new file mode 100644 index 000000000..a92a0c9e9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SpeedLimit.c @@ -0,0 +1,215 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SpeedLimit.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_item_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_item_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SpeedLimit_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SpeedLimit_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_item_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct SpeedLimit__Member__item, choice.itis), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIScodes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "itis" + }, + { ATF_NOFLAGS, 0, offsetof(struct SpeedLimit__Member__item, choice.text), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIStextPhrase, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "text" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_item_tag2el_3[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* itis */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* text */ +}; +static asn_CHOICE_specifics_t asn_SPC_item_specs_3 = { + sizeof(struct SpeedLimit__Member__item), + offsetof(struct SpeedLimit__Member__item, _asn_ctx), + offsetof(struct SpeedLimit__Member__item, present), + sizeof(((struct SpeedLimit__Member__item *)0)->present), + asn_MAP_item_tag2el_3, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_item_3 = { + "item", + "item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_item_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_item_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_item_3, + 2, /* Elements count */ + &asn_SPC_item_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct SpeedLimit__Member, item), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_item_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "item" + }, +}; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* item */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct SpeedLimit__Member), + offsetof(struct SpeedLimit__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Member_2, + 1, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SpeedLimit_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SpeedLimit_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SpeedLimit_specs_1 = { + sizeof(struct SpeedLimit), + offsetof(struct SpeedLimit, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SpeedLimit = { + "SpeedLimit", + "SpeedLimit", + &asn_OP_SEQUENCE_OF, + asn_DEF_SpeedLimit_tags_1, + sizeof(asn_DEF_SpeedLimit_tags_1) + /sizeof(asn_DEF_SpeedLimit_tags_1[0]), /* 1 */ + asn_DEF_SpeedLimit_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedLimit_tags_1) + /sizeof(asn_DEF_SpeedLimit_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SpeedLimit_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SpeedLimit_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SpeedLimit_1, + 1, /* Single element */ + &asn_SPC_SpeedLimit_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SpeedLimitList.c b/src/tmx/Asn_J2735/src/r2020/SpeedLimitList.c new file mode 100644 index 000000000..79f2da88d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SpeedLimitList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SpeedLimitList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SpeedLimitList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..9)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SpeedLimitList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 9 } /* (SIZE(1..9)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SpeedLimitList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RegulatorySpeedLimit, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SpeedLimitList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SpeedLimitList_specs_1 = { + sizeof(struct SpeedLimitList), + offsetof(struct SpeedLimitList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SpeedLimitList = { + "SpeedLimitList", + "SpeedLimitList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SpeedLimitList_tags_1, + sizeof(asn_DEF_SpeedLimitList_tags_1) + /sizeof(asn_DEF_SpeedLimitList_tags_1[0]), /* 1 */ + asn_DEF_SpeedLimitList_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedLimitList_tags_1) + /sizeof(asn_DEF_SpeedLimitList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SpeedLimitList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SpeedLimitList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SpeedLimitList_1, + 1, /* Single element */ + &asn_SPC_SpeedLimitList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SpeedLimitType.c b/src/tmx/Asn_J2735/src/r2020/SpeedLimitType.c new file mode 100644 index 000000000..594dd4dbd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SpeedLimitType.c @@ -0,0 +1,92 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SpeedLimitType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SpeedLimitType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SpeedLimitType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 12 } /* (0..12,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_SpeedLimitType_value2enum_1[] = { + { 0, 7, "unknown" }, + { 1, 20, "maxSpeedInSchoolZone" }, + { 2, 42, "maxSpeedInSchoolZoneWhenChildrenArePresent" }, + { 3, 26, "maxSpeedInConstructionZone" }, + { 4, 15, "vehicleMinSpeed" }, + { 5, 15, "vehicleMaxSpeed" }, + { 6, 20, "vehicleNightMaxSpeed" }, + { 7, 13, "truckMinSpeed" }, + { 8, 13, "truckMaxSpeed" }, + { 9, 18, "truckNightMaxSpeed" }, + { 10, 28, "vehiclesWithTrailersMinSpeed" }, + { 11, 28, "vehiclesWithTrailersMaxSpeed" }, + { 12, 33, "vehiclesWithTrailersNightMaxSpeed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SpeedLimitType_enum2value_1[] = { + 3, /* maxSpeedInConstructionZone(3) */ + 1, /* maxSpeedInSchoolZone(1) */ + 2, /* maxSpeedInSchoolZoneWhenChildrenArePresent(2) */ + 8, /* truckMaxSpeed(8) */ + 7, /* truckMinSpeed(7) */ + 9, /* truckNightMaxSpeed(9) */ + 0, /* unknown(0) */ + 5, /* vehicleMaxSpeed(5) */ + 4, /* vehicleMinSpeed(4) */ + 6, /* vehicleNightMaxSpeed(6) */ + 11, /* vehiclesWithTrailersMaxSpeed(11) */ + 10, /* vehiclesWithTrailersMinSpeed(10) */ + 12 /* vehiclesWithTrailersNightMaxSpeed(12) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SpeedLimitType_specs_1 = { + asn_MAP_SpeedLimitType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SpeedLimitType_enum2value_1, /* N => "tag"; sorted by N */ + 13, /* Number of elements in the maps */ + 14, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SpeedLimitType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpeedLimitType = { + "SpeedLimitType", + "SpeedLimitType", + &asn_OP_NativeEnumerated, + asn_DEF_SpeedLimitType_tags_1, + sizeof(asn_DEF_SpeedLimitType_tags_1) + /sizeof(asn_DEF_SpeedLimitType_tags_1[0]), /* 1 */ + asn_DEF_SpeedLimitType_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedLimitType_tags_1) + /sizeof(asn_DEF_SpeedLimitType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SpeedLimitType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SpeedLimitType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SpeedLimitType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SpeedProfile.c b/src/tmx/Asn_J2735/src/r2020/SpeedProfile.c new file mode 100644 index 000000000..e3b54acf4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SpeedProfile.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SpeedProfile.h" + +asn_TYPE_member_t asn_MBR_SpeedProfile_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SpeedProfile, speedReports), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedProfileMeasurementList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedReports" + }, +}; +static const ber_tlv_tag_t asn_DEF_SpeedProfile_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SpeedProfile_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* speedReports */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SpeedProfile_specs_1 = { + sizeof(struct SpeedProfile), + offsetof(struct SpeedProfile, _asn_ctx), + asn_MAP_SpeedProfile_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SpeedProfile = { + "SpeedProfile", + "SpeedProfile", + &asn_OP_SEQUENCE, + asn_DEF_SpeedProfile_tags_1, + sizeof(asn_DEF_SpeedProfile_tags_1) + /sizeof(asn_DEF_SpeedProfile_tags_1[0]), /* 1 */ + asn_DEF_SpeedProfile_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedProfile_tags_1) + /sizeof(asn_DEF_SpeedProfile_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SpeedProfile_1, + 1, /* Elements count */ + &asn_SPC_SpeedProfile_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SpeedProfileMeasurement.c b/src/tmx/Asn_J2735/src/r2020/SpeedProfileMeasurement.c new file mode 100644 index 000000000..5e88ef80b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SpeedProfileMeasurement.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SpeedProfileMeasurement.h" + +int +SpeedProfileMeasurement_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 31L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using GrossSpeed, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SpeedProfileMeasurement_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..31) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SpeedProfileMeasurement_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 31 } /* (0..31) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SpeedProfileMeasurement_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpeedProfileMeasurement = { + "SpeedProfileMeasurement", + "SpeedProfileMeasurement", + &asn_OP_NativeInteger, + asn_DEF_SpeedProfileMeasurement_tags_1, + sizeof(asn_DEF_SpeedProfileMeasurement_tags_1) + /sizeof(asn_DEF_SpeedProfileMeasurement_tags_1[0]), /* 1 */ + asn_DEF_SpeedProfileMeasurement_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedProfileMeasurement_tags_1) + /sizeof(asn_DEF_SpeedProfileMeasurement_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SpeedProfileMeasurement_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SpeedProfileMeasurement_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SpeedProfileMeasurement_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SpeedProfileMeasurementList.c b/src/tmx/Asn_J2735/src/r2020/SpeedProfileMeasurementList.c new file mode 100644 index 000000000..970487df3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SpeedProfileMeasurementList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SpeedProfileMeasurementList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SpeedProfileMeasurementList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..20)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SpeedProfileMeasurementList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 20 } /* (SIZE(1..20)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SpeedProfileMeasurementList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SpeedProfileMeasurement, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SpeedProfileMeasurementList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SpeedProfileMeasurementList_specs_1 = { + sizeof(struct SpeedProfileMeasurementList), + offsetof(struct SpeedProfileMeasurementList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SpeedProfileMeasurementList = { + "SpeedProfileMeasurementList", + "SpeedProfileMeasurementList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SpeedProfileMeasurementList_tags_1, + sizeof(asn_DEF_SpeedProfileMeasurementList_tags_1) + /sizeof(asn_DEF_SpeedProfileMeasurementList_tags_1[0]), /* 1 */ + asn_DEF_SpeedProfileMeasurementList_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedProfileMeasurementList_tags_1) + /sizeof(asn_DEF_SpeedProfileMeasurementList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SpeedProfileMeasurementList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SpeedProfileMeasurementList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SpeedProfileMeasurementList_1, + 1, /* Single element */ + &asn_SPC_SpeedProfileMeasurementList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SpeedandHeadingandThrottleConfidence.c b/src/tmx/Asn_J2735/src/r2020/SpeedandHeadingandThrottleConfidence.c new file mode 100644 index 000000000..c8e37ed67 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SpeedandHeadingandThrottleConfidence.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SpeedandHeadingandThrottleConfidence.h" + +asn_TYPE_member_t asn_MBR_SpeedandHeadingandThrottleConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SpeedandHeadingandThrottleConfidence, heading), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "heading" + }, + { ATF_NOFLAGS, 0, offsetof(struct SpeedandHeadingandThrottleConfidence, speed), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed" + }, + { ATF_NOFLAGS, 0, offsetof(struct SpeedandHeadingandThrottleConfidence, throttle), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ThrottleConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "throttle" + }, +}; +static const ber_tlv_tag_t asn_DEF_SpeedandHeadingandThrottleConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SpeedandHeadingandThrottleConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* heading */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* speed */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* throttle */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SpeedandHeadingandThrottleConfidence_specs_1 = { + sizeof(struct SpeedandHeadingandThrottleConfidence), + offsetof(struct SpeedandHeadingandThrottleConfidence, _asn_ctx), + asn_MAP_SpeedandHeadingandThrottleConfidence_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SpeedandHeadingandThrottleConfidence = { + "SpeedandHeadingandThrottleConfidence", + "SpeedandHeadingandThrottleConfidence", + &asn_OP_SEQUENCE, + asn_DEF_SpeedandHeadingandThrottleConfidence_tags_1, + sizeof(asn_DEF_SpeedandHeadingandThrottleConfidence_tags_1) + /sizeof(asn_DEF_SpeedandHeadingandThrottleConfidence_tags_1[0]), /* 1 */ + asn_DEF_SpeedandHeadingandThrottleConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedandHeadingandThrottleConfidence_tags_1) + /sizeof(asn_DEF_SpeedandHeadingandThrottleConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SpeedandHeadingandThrottleConfidence_1, + 3, /* Elements count */ + &asn_SPC_SpeedandHeadingandThrottleConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/StabilityControlStatus.c b/src/tmx/Asn_J2735/src/r2020/StabilityControlStatus.c new file mode 100644 index 000000000..601c40a43 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/StabilityControlStatus.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "StabilityControlStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StabilityControlStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_StabilityControlStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_StabilityControlStatus_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 3, "off" }, + { 2, 2, "on" }, + { 3, 7, "engaged" } +}; +static const unsigned int asn_MAP_StabilityControlStatus_enum2value_1[] = { + 3, /* engaged(3) */ + 1, /* off(1) */ + 2, /* on(2) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_StabilityControlStatus_specs_1 = { + asn_MAP_StabilityControlStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_StabilityControlStatus_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_StabilityControlStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StabilityControlStatus = { + "StabilityControlStatus", + "StabilityControlStatus", + &asn_OP_NativeEnumerated, + asn_DEF_StabilityControlStatus_tags_1, + sizeof(asn_DEF_StabilityControlStatus_tags_1) + /sizeof(asn_DEF_StabilityControlStatus_tags_1[0]), /* 1 */ + asn_DEF_StabilityControlStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_StabilityControlStatus_tags_1) + /sizeof(asn_DEF_StabilityControlStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StabilityControlStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StabilityControlStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_StabilityControlStatus_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/StationID.c b/src/tmx/Asn_J2735/src/r2020/StationID.c new file mode 100644 index 000000000..e33e0feda --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/StationID.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "StationID.h" + +int +StationID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StationID_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..4294967295) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_StationID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +const asn_INTEGER_specifics_t asn_SPC_StationID_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_StationID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StationID = { + "StationID", + "StationID", + &asn_OP_NativeInteger, + asn_DEF_StationID_tags_1, + sizeof(asn_DEF_StationID_tags_1) + /sizeof(asn_DEF_StationID_tags_1[0]), /* 1 */ + asn_DEF_StationID_tags_1, /* Same as above */ + sizeof(asn_DEF_StationID_tags_1) + /sizeof(asn_DEF_StationID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StationID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StationID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + StationID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_StationID_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SteeringAxleLubePressure.c b/src/tmx/Asn_J2735/src/r2020/SteeringAxleLubePressure.c new file mode 100644 index 000000000..7923a297e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SteeringAxleLubePressure.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SteeringAxleLubePressure.h" + +int +SteeringAxleLubePressure_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 250L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SteeringAxleLubePressure_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..250) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SteeringAxleLubePressure_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 250 } /* (0..250) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SteeringAxleLubePressure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SteeringAxleLubePressure = { + "SteeringAxleLubePressure", + "SteeringAxleLubePressure", + &asn_OP_NativeInteger, + asn_DEF_SteeringAxleLubePressure_tags_1, + sizeof(asn_DEF_SteeringAxleLubePressure_tags_1) + /sizeof(asn_DEF_SteeringAxleLubePressure_tags_1[0]), /* 1 */ + asn_DEF_SteeringAxleLubePressure_tags_1, /* Same as above */ + sizeof(asn_DEF_SteeringAxleLubePressure_tags_1) + /sizeof(asn_DEF_SteeringAxleLubePressure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SteeringAxleLubePressure_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SteeringAxleLubePressure_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SteeringAxleLubePressure_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SteeringAxleTemperature.c b/src/tmx/Asn_J2735/src/r2020/SteeringAxleTemperature.c new file mode 100644 index 000000000..64df8f7db --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SteeringAxleTemperature.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SteeringAxleTemperature.h" + +int +SteeringAxleTemperature_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -40L && value <= 210L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SteeringAxleTemperature_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-40..210) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SteeringAxleTemperature_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -40, 210 } /* (-40..210) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SteeringAxleTemperature_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SteeringAxleTemperature = { + "SteeringAxleTemperature", + "SteeringAxleTemperature", + &asn_OP_NativeInteger, + asn_DEF_SteeringAxleTemperature_tags_1, + sizeof(asn_DEF_SteeringAxleTemperature_tags_1) + /sizeof(asn_DEF_SteeringAxleTemperature_tags_1[0]), /* 1 */ + asn_DEF_SteeringAxleTemperature_tags_1, /* Same as above */ + sizeof(asn_DEF_SteeringAxleTemperature_tags_1) + /sizeof(asn_DEF_SteeringAxleTemperature_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SteeringAxleTemperature_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SteeringAxleTemperature_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SteeringAxleTemperature_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SteeringWheelAngle.c b/src/tmx/Asn_J2735/src/r2020/SteeringWheelAngle.c new file mode 100644 index 000000000..211f193b7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SteeringWheelAngle.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SteeringWheelAngle.h" + +int +SteeringWheelAngle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -126L && value <= 127L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SteeringWheelAngle_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-126..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SteeringWheelAngle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -126, 127 } /* (-126..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SteeringWheelAngle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngle = { + "SteeringWheelAngle", + "SteeringWheelAngle", + &asn_OP_NativeInteger, + asn_DEF_SteeringWheelAngle_tags_1, + sizeof(asn_DEF_SteeringWheelAngle_tags_1) + /sizeof(asn_DEF_SteeringWheelAngle_tags_1[0]), /* 1 */ + asn_DEF_SteeringWheelAngle_tags_1, /* Same as above */ + sizeof(asn_DEF_SteeringWheelAngle_tags_1) + /sizeof(asn_DEF_SteeringWheelAngle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SteeringWheelAngle_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SteeringWheelAngle_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SteeringWheelAngle_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SteeringWheelAngleConfidence.c b/src/tmx/Asn_J2735/src/r2020/SteeringWheelAngleConfidence.c new file mode 100644 index 000000000..6c63a0ed0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SteeringWheelAngleConfidence.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SteeringWheelAngleConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SteeringWheelAngleConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SteeringWheelAngleConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_SteeringWheelAngleConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 8, "prec2deg" }, + { 2, 8, "prec1deg" }, + { 3, 11, "prec0-02deg" } +}; +static const unsigned int asn_MAP_SteeringWheelAngleConfidence_enum2value_1[] = { + 3, /* prec0-02deg(3) */ + 2, /* prec1deg(2) */ + 1, /* prec2deg(1) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_SteeringWheelAngleConfidence_specs_1 = { + asn_MAP_SteeringWheelAngleConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SteeringWheelAngleConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SteeringWheelAngleConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngleConfidence = { + "SteeringWheelAngleConfidence", + "SteeringWheelAngleConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_SteeringWheelAngleConfidence_tags_1, + sizeof(asn_DEF_SteeringWheelAngleConfidence_tags_1) + /sizeof(asn_DEF_SteeringWheelAngleConfidence_tags_1[0]), /* 1 */ + asn_DEF_SteeringWheelAngleConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_SteeringWheelAngleConfidence_tags_1) + /sizeof(asn_DEF_SteeringWheelAngleConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SteeringWheelAngleConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SteeringWheelAngleConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SteeringWheelAngleConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SteeringWheelAngleRateOfChange.c b/src/tmx/Asn_J2735/src/r2020/SteeringWheelAngleRateOfChange.c new file mode 100644 index 000000000..8eee628fb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SteeringWheelAngleRateOfChange.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SteeringWheelAngleRateOfChange.h" + +int +SteeringWheelAngleRateOfChange_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -127L && value <= 127L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SteeringWheelAngleRateOfChange_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-127..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SteeringWheelAngleRateOfChange_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -127, 127 } /* (-127..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SteeringWheelAngleRateOfChange_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngleRateOfChange = { + "SteeringWheelAngleRateOfChange", + "SteeringWheelAngleRateOfChange", + &asn_OP_NativeInteger, + asn_DEF_SteeringWheelAngleRateOfChange_tags_1, + sizeof(asn_DEF_SteeringWheelAngleRateOfChange_tags_1) + /sizeof(asn_DEF_SteeringWheelAngleRateOfChange_tags_1[0]), /* 1 */ + asn_DEF_SteeringWheelAngleRateOfChange_tags_1, /* Same as above */ + sizeof(asn_DEF_SteeringWheelAngleRateOfChange_tags_1) + /sizeof(asn_DEF_SteeringWheelAngleRateOfChange_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SteeringWheelAngleRateOfChange_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SteeringWheelAngleRateOfChange_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SteeringWheelAngleRateOfChange_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SummerTime.c b/src/tmx/Asn_J2735/src/r2020/SummerTime.c new file mode 100644 index 000000000..d47a25ae0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SummerTime.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SummerTime.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SummerTime_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SummerTime_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_SummerTime_value2enum_1[] = { + { 0, 15, "notInSummerTime" }, + { 1, 12, "inSummerTime" } +}; +static const unsigned int asn_MAP_SummerTime_enum2value_1[] = { + 1, /* inSummerTime(1) */ + 0 /* notInSummerTime(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_SummerTime_specs_1 = { + asn_MAP_SummerTime_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SummerTime_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SummerTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SummerTime = { + "SummerTime", + "SummerTime", + &asn_OP_NativeEnumerated, + asn_DEF_SummerTime_tags_1, + sizeof(asn_DEF_SummerTime_tags_1) + /sizeof(asn_DEF_SummerTime_tags_1[0]), /* 1 */ + asn_DEF_SummerTime_tags_1, /* Same as above */ + sizeof(asn_DEF_SummerTime_tags_1) + /sizeof(asn_DEF_SummerTime_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SummerTime_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SummerTime_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SummerTime_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SunSensor.c b/src/tmx/Asn_J2735/src/r2020/SunSensor.c new file mode 100644 index 000000000..b73277035 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SunSensor.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SunSensor.h" + +int +SunSensor_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 1000L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SunSensor_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..1000) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SunSensor_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1000 } /* (0..1000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SunSensor_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SunSensor = { + "SunSensor", + "SunSensor", + &asn_OP_NativeInteger, + asn_DEF_SunSensor_tags_1, + sizeof(asn_DEF_SunSensor_tags_1) + /sizeof(asn_DEF_SunSensor_tags_1[0]), /* 1 */ + asn_DEF_SunSensor_tags_1, /* Same as above */ + sizeof(asn_DEF_SunSensor_tags_1) + /sizeof(asn_DEF_SunSensor_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SunSensor_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SunSensor_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SunSensor_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/SupplementalVehicleExtensions.c b/src/tmx/Asn_J2735/src/r2020/SupplementalVehicleExtensions.c new file mode 100644 index 000000000..00a8313c8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/SupplementalVehicleExtensions.c @@ -0,0 +1,333 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "SupplementalVehicleExtensions.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_SupplementalVehicleExtensions, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_11[] = { + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_11 = { + sizeof(struct SupplementalVehicleExtensions__regional), + offsetof(struct SupplementalVehicleExtensions__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_11 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_11, + sizeof(asn_DEF_regional_tags_11) + /sizeof(asn_DEF_regional_tags_11[0]) - 1, /* 1 */ + asn_DEF_regional_tags_11, /* Same as above */ + sizeof(asn_DEF_regional_tags_11) + /sizeof(asn_DEF_regional_tags_11[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_11, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_11, + 1, /* Single element */ + &asn_SPC_regional_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SupplementalVehicleExtensions_1[] = { + { ATF_POINTER, 10, offsetof(struct SupplementalVehicleExtensions, classification), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BasicVehicleClass, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "classification" + }, + { ATF_POINTER, 9, offsetof(struct SupplementalVehicleExtensions, classDetails), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleClassification, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "classDetails" + }, + { ATF_POINTER, 8, offsetof(struct SupplementalVehicleExtensions, vehicleData), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleData" + }, + { ATF_POINTER, 7, offsetof(struct SupplementalVehicleExtensions, weatherReport), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WeatherReport, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "weatherReport" + }, + { ATF_POINTER, 6, offsetof(struct SupplementalVehicleExtensions, weatherProbe), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WeatherProbe, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "weatherProbe" + }, + { ATF_POINTER, 5, offsetof(struct SupplementalVehicleExtensions, obstacle), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObstacleDetection, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "obstacle" + }, + { ATF_POINTER, 4, offsetof(struct SupplementalVehicleExtensions, status), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DisabledVehicle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "status" + }, + { ATF_POINTER, 3, offsetof(struct SupplementalVehicleExtensions, speedProfile), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedProfile, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedProfile" + }, + { ATF_POINTER, 2, offsetof(struct SupplementalVehicleExtensions, theRTCM), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RTCMPackage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "theRTCM" + }, + { ATF_POINTER, 1, offsetof(struct SupplementalVehicleExtensions, regional), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + 0, + &asn_DEF_regional_11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_11, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_SupplementalVehicleExtensions_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; +static const ber_tlv_tag_t asn_DEF_SupplementalVehicleExtensions_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SupplementalVehicleExtensions_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* classification */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* classDetails */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* vehicleData */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* weatherReport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* weatherProbe */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* obstacle */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* status */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* speedProfile */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* theRTCM */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SupplementalVehicleExtensions_specs_1 = { + sizeof(struct SupplementalVehicleExtensions), + offsetof(struct SupplementalVehicleExtensions, _asn_ctx), + asn_MAP_SupplementalVehicleExtensions_tag2el_1, + 10, /* Count of tags in the map */ + asn_MAP_SupplementalVehicleExtensions_oms_1, /* Optional members */ + 10, 0, /* Root/Additions */ + 10, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SupplementalVehicleExtensions = { + "SupplementalVehicleExtensions", + "SupplementalVehicleExtensions", + &asn_OP_SEQUENCE, + asn_DEF_SupplementalVehicleExtensions_tags_1, + sizeof(asn_DEF_SupplementalVehicleExtensions_tags_1) + /sizeof(asn_DEF_SupplementalVehicleExtensions_tags_1[0]), /* 1 */ + asn_DEF_SupplementalVehicleExtensions_tags_1, /* Same as above */ + sizeof(asn_DEF_SupplementalVehicleExtensions_tags_1) + /sizeof(asn_DEF_SupplementalVehicleExtensions_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SupplementalVehicleExtensions_1, + 10, /* Elements count */ + &asn_SPC_SupplementalVehicleExtensions_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TemporaryID.c b/src/tmx/Asn_J2735/src/r2020/TemporaryID.c new file mode 100644 index 000000000..6a1ccb61c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TemporaryID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TemporaryID.h" + +int +TemporaryID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TemporaryID_constr_1 CC_NOTUSED = { + { 0, 0 }, + 4 /* (SIZE(4..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TemporaryID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TemporaryID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TemporaryID = { + "TemporaryID", + "TemporaryID", + &asn_OP_OCTET_STRING, + asn_DEF_TemporaryID_tags_1, + sizeof(asn_DEF_TemporaryID_tags_1) + /sizeof(asn_DEF_TemporaryID_tags_1[0]), /* 1 */ + asn_DEF_TemporaryID_tags_1, /* Same as above */ + sizeof(asn_DEF_TemporaryID_tags_1) + /sizeof(asn_DEF_TemporaryID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TemporaryID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TemporaryID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TemporaryID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TenthSecond.c b/src/tmx/Asn_J2735/src/r2020/TenthSecond.c new file mode 100644 index 000000000..b41390cd3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TenthSecond.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TenthSecond.h" + +int +TenthSecond_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 9L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TenthSecond_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..9) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TenthSecond_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 9 } /* (0..9) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TenthSecond_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TenthSecond = { + "TenthSecond", + "TenthSecond", + &asn_OP_NativeInteger, + asn_DEF_TenthSecond_tags_1, + sizeof(asn_DEF_TenthSecond_tags_1) + /sizeof(asn_DEF_TenthSecond_tags_1[0]), /* 1 */ + asn_DEF_TenthSecond_tags_1, /* Same as above */ + sizeof(asn_DEF_TenthSecond_tags_1) + /sizeof(asn_DEF_TenthSecond_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TenthSecond_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TenthSecond_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TenthSecond_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TermDistance.c b/src/tmx/Asn_J2735/src/r2020/TermDistance.c new file mode 100644 index 000000000..6e9de5fb2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TermDistance.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TermDistance.h" + +int +TermDistance_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 30000L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TermDistance_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..30000) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TermDistance_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 1, 30000 } /* (1..30000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TermDistance_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TermDistance = { + "TermDistance", + "TermDistance", + &asn_OP_NativeInteger, + asn_DEF_TermDistance_tags_1, + sizeof(asn_DEF_TermDistance_tags_1) + /sizeof(asn_DEF_TermDistance_tags_1[0]), /* 1 */ + asn_DEF_TermDistance_tags_1, /* Same as above */ + sizeof(asn_DEF_TermDistance_tags_1) + /sizeof(asn_DEF_TermDistance_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TermDistance_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TermDistance_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TermDistance_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TermTime.c b/src/tmx/Asn_J2735/src/r2020/TermTime.c new file mode 100644 index 000000000..ffe08941c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TermTime.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TermTime.h" + +int +TermTime_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 1800L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TermTime_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..1800) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TermTime_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 1, 1800 } /* (1..1800) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TermTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TermTime = { + "TermTime", + "TermTime", + &asn_OP_NativeInteger, + asn_DEF_TermTime_tags_1, + sizeof(asn_DEF_TermTime_tags_1) + /sizeof(asn_DEF_TermTime_tags_1[0]), /* 1 */ + asn_DEF_TermTime_tags_1, /* Same as above */ + sizeof(asn_DEF_TermTime_tags_1) + /sizeof(asn_DEF_TermTime_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TermTime_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TermTime_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TermTime_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage00.c b/src/tmx/Asn_J2735/src/r2020/TestMessage00.c new file mode 100644 index 000000000..ffeadc578 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage00.c @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TestMessage00.h" + +asn_TYPE_member_t asn_MBR_TestMessage00_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TestMessage00, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "header" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestMessage00, body), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "body" + }, +}; +static const ber_tlv_tag_t asn_DEF_TestMessage00_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage00_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage00_specs_1 = { + sizeof(struct TestMessage00), + offsetof(struct TestMessage00, _asn_ctx), + asn_MAP_TestMessage00_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage00 = { + "TestMessage00", + "TestMessage00", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage00_tags_1, + sizeof(asn_DEF_TestMessage00_tags_1) + /sizeof(asn_DEF_TestMessage00_tags_1[0]), /* 1 */ + asn_DEF_TestMessage00_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage00_tags_1) + /sizeof(asn_DEF_TestMessage00_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TestMessage00_1, + 2, /* Elements count */ + &asn_SPC_TestMessage00_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage01.c b/src/tmx/Asn_J2735/src/r2020/TestMessage01.c new file mode 100644 index 000000000..6d60abebd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage01.c @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TestMessage01.h" + +asn_TYPE_member_t asn_MBR_TestMessage01_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TestMessage01, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "header" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestMessage01, body), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "body" + }, +}; +static const ber_tlv_tag_t asn_DEF_TestMessage01_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage01_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage01_specs_1 = { + sizeof(struct TestMessage01), + offsetof(struct TestMessage01, _asn_ctx), + asn_MAP_TestMessage01_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage01 = { + "TestMessage01", + "TestMessage01", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage01_tags_1, + sizeof(asn_DEF_TestMessage01_tags_1) + /sizeof(asn_DEF_TestMessage01_tags_1[0]), /* 1 */ + asn_DEF_TestMessage01_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage01_tags_1) + /sizeof(asn_DEF_TestMessage01_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TestMessage01_1, + 2, /* Elements count */ + &asn_SPC_TestMessage01_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage02.c b/src/tmx/Asn_J2735/src/r2020/TestMessage02.c new file mode 100644 index 000000000..3912b666c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage02.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TestMessage02.h" + +asn_TYPE_member_t asn_MBR_TestMessage02_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TestMessage02, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "header" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestMessage02, body), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityPath, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "body" + }, +}; +static const ber_tlv_tag_t asn_DEF_TestMessage02_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage02_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* body */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage02_specs_1 = { + sizeof(struct TestMessage02), + offsetof(struct TestMessage02, _asn_ctx), + asn_MAP_TestMessage02_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage02 = { + "TestMessage02", + "TestMessage02", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage02_tags_1, + sizeof(asn_DEF_TestMessage02_tags_1) + /sizeof(asn_DEF_TestMessage02_tags_1[0]), /* 1 */ + asn_DEF_TestMessage02_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage02_tags_1) + /sizeof(asn_DEF_TestMessage02_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TestMessage02_1, + 2, /* Elements count */ + &asn_SPC_TestMessage02_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage03.c b/src/tmx/Asn_J2735/src/r2020/TestMessage03.c new file mode 100644 index 000000000..e3044146f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage03.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603.asn1" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "TestMessage03.h" + +asn_TYPE_member_t asn_MBR_TestMessage03_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TestMessage03, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "header" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestMessage03, body), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MobilityOperation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "body" + }, +}; +static const ber_tlv_tag_t asn_DEF_TestMessage03_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage03_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* body */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage03_specs_1 = { + sizeof(struct TestMessage03), + offsetof(struct TestMessage03, _asn_ctx), + asn_MAP_TestMessage03_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage03 = { + "TestMessage03", + "TestMessage03", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage03_tags_1, + sizeof(asn_DEF_TestMessage03_tags_1) + /sizeof(asn_DEF_TestMessage03_tags_1[0]), /* 1 */ + asn_DEF_TestMessage03_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage03_tags_1) + /sizeof(asn_DEF_TestMessage03_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TestMessage03_1, + 2, /* Elements count */ + &asn_SPC_TestMessage03_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage04.c b/src/tmx/Asn_J2735/src/r2020/TestMessage04.c new file mode 100644 index 000000000..03fd4978f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage04.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TestMessage04.h" + +asn_TYPE_member_t asn_MBR_TestMessage04_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TestMessage04, body), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_TrafficControlRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "body" + }, +}; +static const ber_tlv_tag_t asn_DEF_TestMessage04_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage04_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* body */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage04_specs_1 = { + sizeof(struct TestMessage04), + offsetof(struct TestMessage04, _asn_ctx), + asn_MAP_TestMessage04_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage04 = { + "TestMessage04", + "TestMessage04", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage04_tags_1, + sizeof(asn_DEF_TestMessage04_tags_1) + /sizeof(asn_DEF_TestMessage04_tags_1[0]), /* 1 */ + asn_DEF_TestMessage04_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage04_tags_1) + /sizeof(asn_DEF_TestMessage04_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TestMessage04_1, + 1, /* Elements count */ + &asn_SPC_TestMessage04_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage05.c b/src/tmx/Asn_J2735/src/r2020/TestMessage05.c new file mode 100644 index 000000000..6772392f4 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage05.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TestMessage05.h" + +asn_TYPE_member_t asn_MBR_TestMessage05_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TestMessage05, body), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_TrafficControlMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "body" + }, +}; +static const ber_tlv_tag_t asn_DEF_TestMessage05_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage05_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* body */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage05_specs_1 = { + sizeof(struct TestMessage05), + offsetof(struct TestMessage05, _asn_ctx), + asn_MAP_TestMessage05_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage05 = { + "TestMessage05", + "TestMessage05", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage05_tags_1, + sizeof(asn_DEF_TestMessage05_tags_1) + /sizeof(asn_DEF_TestMessage05_tags_1[0]), /* 1 */ + asn_DEF_TestMessage05_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage05_tags_1) + /sizeof(asn_DEF_TestMessage05_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TestMessage05_1, + 1, /* Elements count */ + &asn_SPC_TestMessage05_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage06.c b/src/tmx/Asn_J2735/src/r2020/TestMessage06.c new file mode 100644 index 000000000..32354d15a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage06.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage06" + * found in "J2735-TestMessage06.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TestMessage06.h" + +asn_TYPE_member_t asn_MBR_TestMessage06_1[] = { + { ATF_POINTER, 2, offsetof(struct TestMessage06, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Header, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "header" + }, + { ATF_POINTER, 1, offsetof(struct TestMessage06, regional), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_TestMessage06, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_TestMessage06_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_TestMessage06_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage06_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage06_specs_1 = { + sizeof(struct TestMessage06), + offsetof(struct TestMessage06, _asn_ctx), + asn_MAP_TestMessage06_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TestMessage06_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage06 = { + "TestMessage06", + "TestMessage06", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage06_tags_1, + sizeof(asn_DEF_TestMessage06_tags_1) + /sizeof(asn_DEF_TestMessage06_tags_1[0]), /* 1 */ + asn_DEF_TestMessage06_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage06_tags_1) + /sizeof(asn_DEF_TestMessage06_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TestMessage06_1, + 2, /* Elements count */ + &asn_SPC_TestMessage06_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage07.c b/src/tmx/Asn_J2735/src/r2020/TestMessage07.c new file mode 100644 index 000000000..dc3064430 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage07.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage07" + * found in "J2735-TestMessage07.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TestMessage07.h" + +asn_TYPE_member_t asn_MBR_TestMessage07_1[] = { + { ATF_POINTER, 2, offsetof(struct TestMessage07, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Header, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "header" + }, + { ATF_POINTER, 1, offsetof(struct TestMessage07, regional), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_TestMessage07, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_TestMessage07_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_TestMessage07_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage07_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage07_specs_1 = { + sizeof(struct TestMessage07), + offsetof(struct TestMessage07, _asn_ctx), + asn_MAP_TestMessage07_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TestMessage07_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage07 = { + "TestMessage07", + "TestMessage07", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage07_tags_1, + sizeof(asn_DEF_TestMessage07_tags_1) + /sizeof(asn_DEF_TestMessage07_tags_1[0]), /* 1 */ + asn_DEF_TestMessage07_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage07_tags_1) + /sizeof(asn_DEF_TestMessage07_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TestMessage07_1, + 2, /* Elements count */ + &asn_SPC_TestMessage07_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage08.c b/src/tmx/Asn_J2735/src/r2020/TestMessage08.c new file mode 100644 index 000000000..ebc7729c9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage08.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage08" + * found in "J2735-TestMessage08.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TestMessage08.h" + +asn_TYPE_member_t asn_MBR_TestMessage08_1[] = { + { ATF_POINTER, 2, offsetof(struct TestMessage08, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Header, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "header" + }, + { ATF_POINTER, 1, offsetof(struct TestMessage08, regional), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_TestMessage08, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_TestMessage08_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_TestMessage08_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage08_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage08_specs_1 = { + sizeof(struct TestMessage08), + offsetof(struct TestMessage08, _asn_ctx), + asn_MAP_TestMessage08_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TestMessage08_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage08 = { + "TestMessage08", + "TestMessage08", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage08_tags_1, + sizeof(asn_DEF_TestMessage08_tags_1) + /sizeof(asn_DEF_TestMessage08_tags_1[0]), /* 1 */ + asn_DEF_TestMessage08_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage08_tags_1) + /sizeof(asn_DEF_TestMessage08_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TestMessage08_1, + 2, /* Elements count */ + &asn_SPC_TestMessage08_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage09.c b/src/tmx/Asn_J2735/src/r2020/TestMessage09.c new file mode 100644 index 000000000..5d5e574c3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage09.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage09" + * found in "J2735-TestMessage09.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TestMessage09.h" + +asn_TYPE_member_t asn_MBR_TestMessage09_1[] = { + { ATF_POINTER, 2, offsetof(struct TestMessage09, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Header, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "header" + }, + { ATF_POINTER, 1, offsetof(struct TestMessage09, regional), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_TestMessage09, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_TestMessage09_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_TestMessage09_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage09_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage09_specs_1 = { + sizeof(struct TestMessage09), + offsetof(struct TestMessage09, _asn_ctx), + asn_MAP_TestMessage09_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TestMessage09_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage09 = { + "TestMessage09", + "TestMessage09", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage09_tags_1, + sizeof(asn_DEF_TestMessage09_tags_1) + /sizeof(asn_DEF_TestMessage09_tags_1[0]), /* 1 */ + asn_DEF_TestMessage09_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage09_tags_1) + /sizeof(asn_DEF_TestMessage09_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TestMessage09_1, + 2, /* Elements count */ + &asn_SPC_TestMessage09_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage10.c b/src/tmx/Asn_J2735/src/r2020/TestMessage10.c new file mode 100644 index 000000000..efea42531 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage10.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage10" + * found in "J2735-TestMessage10.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TestMessage10.h" + +asn_TYPE_member_t asn_MBR_TestMessage10_1[] = { + { ATF_POINTER, 2, offsetof(struct TestMessage10, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Header, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "header" + }, + { ATF_POINTER, 1, offsetof(struct TestMessage10, regional), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_TestMessage10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_TestMessage10_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_TestMessage10_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage10_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage10_specs_1 = { + sizeof(struct TestMessage10), + offsetof(struct TestMessage10, _asn_ctx), + asn_MAP_TestMessage10_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TestMessage10_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage10 = { + "TestMessage10", + "TestMessage10", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage10_tags_1, + sizeof(asn_DEF_TestMessage10_tags_1) + /sizeof(asn_DEF_TestMessage10_tags_1[0]), /* 1 */ + asn_DEF_TestMessage10_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage10_tags_1) + /sizeof(asn_DEF_TestMessage10_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TestMessage10_1, + 2, /* Elements count */ + &asn_SPC_TestMessage10_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage11.c b/src/tmx/Asn_J2735/src/r2020/TestMessage11.c new file mode 100644 index 000000000..6a8048c34 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage11.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage11" + * found in "J2735-TestMessage11.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TestMessage11.h" + +asn_TYPE_member_t asn_MBR_TestMessage11_1[] = { + { ATF_POINTER, 2, offsetof(struct TestMessage11, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Header, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "header" + }, + { ATF_POINTER, 1, offsetof(struct TestMessage11, regional), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_TestMessage11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_TestMessage11_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_TestMessage11_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage11_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage11_specs_1 = { + sizeof(struct TestMessage11), + offsetof(struct TestMessage11, _asn_ctx), + asn_MAP_TestMessage11_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TestMessage11_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage11 = { + "TestMessage11", + "TestMessage11", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage11_tags_1, + sizeof(asn_DEF_TestMessage11_tags_1) + /sizeof(asn_DEF_TestMessage11_tags_1[0]), /* 1 */ + asn_DEF_TestMessage11_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage11_tags_1) + /sizeof(asn_DEF_TestMessage11_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TestMessage11_1, + 2, /* Elements count */ + &asn_SPC_TestMessage11_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage12.c b/src/tmx/Asn_J2735/src/r2020/TestMessage12.c new file mode 100644 index 000000000..fc2e17766 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage12.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage12" + * found in "J2735-TestMessage12.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TestMessage12.h" + +asn_TYPE_member_t asn_MBR_TestMessage12_1[] = { + { ATF_POINTER, 2, offsetof(struct TestMessage12, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Header, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "header" + }, + { ATF_POINTER, 1, offsetof(struct TestMessage12, regional), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_TestMessage12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_TestMessage12_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_TestMessage12_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage12_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage12_specs_1 = { + sizeof(struct TestMessage12), + offsetof(struct TestMessage12, _asn_ctx), + asn_MAP_TestMessage12_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TestMessage12_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage12 = { + "TestMessage12", + "TestMessage12", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage12_tags_1, + sizeof(asn_DEF_TestMessage12_tags_1) + /sizeof(asn_DEF_TestMessage12_tags_1[0]), /* 1 */ + asn_DEF_TestMessage12_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage12_tags_1) + /sizeof(asn_DEF_TestMessage12_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TestMessage12_1, + 2, /* Elements count */ + &asn_SPC_TestMessage12_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage13.c b/src/tmx/Asn_J2735/src/r2020/TestMessage13.c new file mode 100644 index 000000000..f52fa935e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage13.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage13" + * found in "J2735-TestMessage13.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TestMessage13.h" + +asn_TYPE_member_t asn_MBR_TestMessage13_1[] = { + { ATF_POINTER, 2, offsetof(struct TestMessage13, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Header, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "header" + }, + { ATF_POINTER, 1, offsetof(struct TestMessage13, regional), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_TestMessage13, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_TestMessage13_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_TestMessage13_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage13_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage13_specs_1 = { + sizeof(struct TestMessage13), + offsetof(struct TestMessage13, _asn_ctx), + asn_MAP_TestMessage13_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TestMessage13_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage13 = { + "TestMessage13", + "TestMessage13", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage13_tags_1, + sizeof(asn_DEF_TestMessage13_tags_1) + /sizeof(asn_DEF_TestMessage13_tags_1[0]), /* 1 */ + asn_DEF_TestMessage13_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage13_tags_1) + /sizeof(asn_DEF_TestMessage13_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TestMessage13_1, + 2, /* Elements count */ + &asn_SPC_TestMessage13_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage14.c b/src/tmx/Asn_J2735/src/r2020/TestMessage14.c new file mode 100644 index 000000000..39c44d08c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage14.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage14" + * found in "J2735-TestMessage14.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TestMessage14.h" + +asn_TYPE_member_t asn_MBR_TestMessage14_1[] = { + { ATF_POINTER, 2, offsetof(struct TestMessage14, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Header, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "header" + }, + { ATF_POINTER, 1, offsetof(struct TestMessage14, regional), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_TestMessage14, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_TestMessage14_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_TestMessage14_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage14_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage14_specs_1 = { + sizeof(struct TestMessage14), + offsetof(struct TestMessage14, _asn_ctx), + asn_MAP_TestMessage14_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TestMessage14_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage14 = { + "TestMessage14", + "TestMessage14", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage14_tags_1, + sizeof(asn_DEF_TestMessage14_tags_1) + /sizeof(asn_DEF_TestMessage14_tags_1[0]), /* 1 */ + asn_DEF_TestMessage14_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage14_tags_1) + /sizeof(asn_DEF_TestMessage14_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TestMessage14_1, + 2, /* Elements count */ + &asn_SPC_TestMessage14_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TestMessage15.c b/src/tmx/Asn_J2735/src/r2020/TestMessage15.c new file mode 100644 index 000000000..9460238bc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TestMessage15.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TestMessage15" + * found in "J2735-TestMessage15.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TestMessage15.h" + +asn_TYPE_member_t asn_MBR_TestMessage15_1[] = { + { ATF_POINTER, 2, offsetof(struct TestMessage15, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Header, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "header" + }, + { ATF_POINTER, 1, offsetof(struct TestMessage15, regional), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_TestMessage15, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_TestMessage15_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_TestMessage15_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestMessage15_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestMessage15_specs_1 = { + sizeof(struct TestMessage15), + offsetof(struct TestMessage15, _asn_ctx), + asn_MAP_TestMessage15_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TestMessage15_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestMessage15 = { + "TestMessage15", + "TestMessage15", + &asn_OP_SEQUENCE, + asn_DEF_TestMessage15_tags_1, + sizeof(asn_DEF_TestMessage15_tags_1) + /sizeof(asn_DEF_TestMessage15_tags_1[0]), /* 1 */ + asn_DEF_TestMessage15_tags_1, /* Same as above */ + sizeof(asn_DEF_TestMessage15_tags_1) + /sizeof(asn_DEF_TestMessage15_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TestMessage15_1, + 2, /* Elements count */ + &asn_SPC_TestMessage15_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ThrottleConfidence.c b/src/tmx/Asn_J2735/src/r2020/ThrottleConfidence.c new file mode 100644 index 000000000..4beebb6a5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ThrottleConfidence.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ThrottleConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ThrottleConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ThrottleConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_ThrottleConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 13, "prec10percent" }, + { 2, 12, "prec1percent" }, + { 3, 14, "prec0-5percent" } +}; +static const unsigned int asn_MAP_ThrottleConfidence_enum2value_1[] = { + 3, /* prec0-5percent(3) */ + 1, /* prec10percent(1) */ + 2, /* prec1percent(2) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_ThrottleConfidence_specs_1 = { + asn_MAP_ThrottleConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ThrottleConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ThrottleConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ThrottleConfidence = { + "ThrottleConfidence", + "ThrottleConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_ThrottleConfidence_tags_1, + sizeof(asn_DEF_ThrottleConfidence_tags_1) + /sizeof(asn_DEF_ThrottleConfidence_tags_1[0]), /* 1 */ + asn_DEF_ThrottleConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_ThrottleConfidence_tags_1) + /sizeof(asn_DEF_ThrottleConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ThrottleConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ThrottleConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ThrottleConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ThrottlePosition.c b/src/tmx/Asn_J2735/src/r2020/ThrottlePosition.c new file mode 100644 index 000000000..168fa6f5a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ThrottlePosition.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ThrottlePosition.h" + +int +ThrottlePosition_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 200L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ThrottlePosition_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..200) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ThrottlePosition_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 200 } /* (0..200) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ThrottlePosition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ThrottlePosition = { + "ThrottlePosition", + "ThrottlePosition", + &asn_OP_NativeInteger, + asn_DEF_ThrottlePosition_tags_1, + sizeof(asn_DEF_ThrottlePosition_tags_1) + /sizeof(asn_DEF_ThrottlePosition_tags_1[0]), /* 1 */ + asn_DEF_ThrottlePosition_tags_1, /* Same as above */ + sizeof(asn_DEF_ThrottlePosition_tags_1) + /sizeof(asn_DEF_ThrottlePosition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ThrottlePosition_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ThrottlePosition_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ThrottlePosition_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TimeChangeDetails.c b/src/tmx/Asn_J2735/src/r2020/TimeChangeDetails.c new file mode 100644 index 000000000..48169bf76 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TimeChangeDetails.c @@ -0,0 +1,158 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TimeChangeDetails.h" + +asn_TYPE_member_t asn_MBR_TimeChangeDetails_1[] = { + { ATF_POINTER, 1, offsetof(struct TimeChangeDetails, startTime), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SPAT_TimeMark, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "startTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct TimeChangeDetails, minEndTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SPAT_TimeMark, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "minEndTime" + }, + { ATF_POINTER, 4, offsetof(struct TimeChangeDetails, maxEndTime), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SPAT_TimeMark, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "maxEndTime" + }, + { ATF_POINTER, 3, offsetof(struct TimeChangeDetails, likelyTime), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SPAT_TimeMark, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "likelyTime" + }, + { ATF_POINTER, 2, offsetof(struct TimeChangeDetails, confidence), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeIntervalConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, + { ATF_POINTER, 1, offsetof(struct TimeChangeDetails, nextTime), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SPAT_TimeMark, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nextTime" + }, +}; +static const int asn_MAP_TimeChangeDetails_oms_1[] = { 0, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_TimeChangeDetails_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TimeChangeDetails_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* startTime */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* minEndTime */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxEndTime */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* likelyTime */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* confidence */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* nextTime */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TimeChangeDetails_specs_1 = { + sizeof(struct TimeChangeDetails), + offsetof(struct TimeChangeDetails, _asn_ctx), + asn_MAP_TimeChangeDetails_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_TimeChangeDetails_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TimeChangeDetails = { + "TimeChangeDetails", + "TimeChangeDetails", + &asn_OP_SEQUENCE, + asn_DEF_TimeChangeDetails_tags_1, + sizeof(asn_DEF_TimeChangeDetails_tags_1) + /sizeof(asn_DEF_TimeChangeDetails_tags_1[0]), /* 1 */ + asn_DEF_TimeChangeDetails_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeChangeDetails_tags_1) + /sizeof(asn_DEF_TimeChangeDetails_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TimeChangeDetails_1, + 6, /* Elements count */ + &asn_SPC_TimeChangeDetails_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TimeConfidence.c b/src/tmx/Asn_J2735/src/r2020/TimeConfidence.c new file mode 100644 index 000000000..ea3960e07 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TimeConfidence.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TimeConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TimeConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TimeConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 39 } /* (0..39) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TimeConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 12, "time-100-000" }, + { 2, 12, "time-050-000" }, + { 3, 12, "time-020-000" }, + { 4, 12, "time-010-000" }, + { 5, 12, "time-002-000" }, + { 6, 12, "time-001-000" }, + { 7, 12, "time-000-500" }, + { 8, 12, "time-000-200" }, + { 9, 12, "time-000-100" }, + { 10, 12, "time-000-050" }, + { 11, 12, "time-000-020" }, + { 12, 12, "time-000-010" }, + { 13, 12, "time-000-005" }, + { 14, 12, "time-000-002" }, + { 15, 12, "time-000-001" }, + { 16, 14, "time-000-000-5" }, + { 17, 14, "time-000-000-2" }, + { 18, 14, "time-000-000-1" }, + { 19, 15, "time-000-000-05" }, + { 20, 15, "time-000-000-02" }, + { 21, 15, "time-000-000-01" }, + { 22, 16, "time-000-000-005" }, + { 23, 16, "time-000-000-002" }, + { 24, 16, "time-000-000-001" }, + { 25, 18, "time-000-000-000-5" }, + { 26, 18, "time-000-000-000-2" }, + { 27, 18, "time-000-000-000-1" }, + { 28, 19, "time-000-000-000-05" }, + { 29, 19, "time-000-000-000-02" }, + { 30, 19, "time-000-000-000-01" }, + { 31, 20, "time-000-000-000-005" }, + { 32, 20, "time-000-000-000-002" }, + { 33, 20, "time-000-000-000-001" }, + { 34, 22, "time-000-000-000-000-5" }, + { 35, 22, "time-000-000-000-000-2" }, + { 36, 22, "time-000-000-000-000-1" }, + { 37, 23, "time-000-000-000-000-05" }, + { 38, 23, "time-000-000-000-000-02" }, + { 39, 23, "time-000-000-000-000-01" } +}; +static const unsigned int asn_MAP_TimeConfidence_enum2value_1[] = { + 39, /* time-000-000-000-000-01(39) */ + 38, /* time-000-000-000-000-02(38) */ + 37, /* time-000-000-000-000-05(37) */ + 36, /* time-000-000-000-000-1(36) */ + 35, /* time-000-000-000-000-2(35) */ + 34, /* time-000-000-000-000-5(34) */ + 33, /* time-000-000-000-001(33) */ + 32, /* time-000-000-000-002(32) */ + 31, /* time-000-000-000-005(31) */ + 30, /* time-000-000-000-01(30) */ + 29, /* time-000-000-000-02(29) */ + 28, /* time-000-000-000-05(28) */ + 27, /* time-000-000-000-1(27) */ + 26, /* time-000-000-000-2(26) */ + 25, /* time-000-000-000-5(25) */ + 24, /* time-000-000-001(24) */ + 23, /* time-000-000-002(23) */ + 22, /* time-000-000-005(22) */ + 21, /* time-000-000-01(21) */ + 20, /* time-000-000-02(20) */ + 19, /* time-000-000-05(19) */ + 18, /* time-000-000-1(18) */ + 17, /* time-000-000-2(17) */ + 16, /* time-000-000-5(16) */ + 15, /* time-000-001(15) */ + 14, /* time-000-002(14) */ + 13, /* time-000-005(13) */ + 12, /* time-000-010(12) */ + 11, /* time-000-020(11) */ + 10, /* time-000-050(10) */ + 9, /* time-000-100(9) */ + 8, /* time-000-200(8) */ + 7, /* time-000-500(7) */ + 6, /* time-001-000(6) */ + 5, /* time-002-000(5) */ + 4, /* time-010-000(4) */ + 3, /* time-020-000(3) */ + 2, /* time-050-000(2) */ + 1, /* time-100-000(1) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TimeConfidence_specs_1 = { + asn_MAP_TimeConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TimeConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 40, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TimeConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeConfidence = { + "TimeConfidence", + "TimeConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_TimeConfidence_tags_1, + sizeof(asn_DEF_TimeConfidence_tags_1) + /sizeof(asn_DEF_TimeConfidence_tags_1[0]), /* 1 */ + asn_DEF_TimeConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeConfidence_tags_1) + /sizeof(asn_DEF_TimeConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TimeConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TimeConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TimeConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TimeIntervalConfidence.c b/src/tmx/Asn_J2735/src/r2020/TimeIntervalConfidence.c new file mode 100644 index 000000000..b248faaa3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TimeIntervalConfidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TimeIntervalConfidence.h" + +int +TimeIntervalConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 15L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TimeIntervalConfidence_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..15) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TimeIntervalConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TimeIntervalConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeIntervalConfidence = { + "TimeIntervalConfidence", + "TimeIntervalConfidence", + &asn_OP_NativeInteger, + asn_DEF_TimeIntervalConfidence_tags_1, + sizeof(asn_DEF_TimeIntervalConfidence_tags_1) + /sizeof(asn_DEF_TimeIntervalConfidence_tags_1[0]), /* 1 */ + asn_DEF_TimeIntervalConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeIntervalConfidence_tags_1) + /sizeof(asn_DEF_TimeIntervalConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TimeIntervalConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TimeIntervalConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TimeIntervalConfidence_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TimeOffset.c b/src/tmx/Asn_J2735/src/r2020/TimeOffset.c new file mode 100644 index 000000000..2471acc99 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TimeOffset.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TimeOffset.h" + +int +TimeOffset_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TimeOffset_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TimeOffset_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (1..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TimeOffset_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeOffset = { + "TimeOffset", + "TimeOffset", + &asn_OP_NativeInteger, + asn_DEF_TimeOffset_tags_1, + sizeof(asn_DEF_TimeOffset_tags_1) + /sizeof(asn_DEF_TimeOffset_tags_1[0]), /* 1 */ + asn_DEF_TimeOffset_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeOffset_tags_1) + /sizeof(asn_DEF_TimeOffset_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TimeOffset_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TimeOffset_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TimeOffset_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TimeRemaining.c b/src/tmx/Asn_J2735/src/r2020/TimeRemaining.c new file mode 100644 index 000000000..30b9cd348 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TimeRemaining.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TimeRemaining.h" + +int +TimeRemaining_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 9001L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TimeRemaining_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..9001) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TimeRemaining_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 0, 9001 } /* (0..9001) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TimeRemaining_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeRemaining = { + "TimeRemaining", + "TimeRemaining", + &asn_OP_NativeInteger, + asn_DEF_TimeRemaining_tags_1, + sizeof(asn_DEF_TimeRemaining_tags_1) + /sizeof(asn_DEF_TimeRemaining_tags_1[0]), /* 1 */ + asn_DEF_TimeRemaining_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeRemaining_tags_1) + /sizeof(asn_DEF_TimeRemaining_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TimeRemaining_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TimeRemaining_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TimeRemaining_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TireData.c b/src/tmx/Asn_J2735/src/r2020/TireData.c new file mode 100644 index 000000000..96a956878 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TireData.c @@ -0,0 +1,176 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TireData.h" + +asn_TYPE_member_t asn_MBR_TireData_1[] = { + { ATF_POINTER, 7, offsetof(struct TireData, location), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TireLocation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "location" + }, + { ATF_POINTER, 6, offsetof(struct TireData, pressure), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TirePressure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pressure" + }, + { ATF_POINTER, 5, offsetof(struct TireData, temp), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TireTemp, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "temp" + }, + { ATF_POINTER, 4, offsetof(struct TireData, wheelSensorStatus), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WheelSensorStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "wheelSensorStatus" + }, + { ATF_POINTER, 3, offsetof(struct TireData, wheelEndElectFault), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WheelEndElectFault, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "wheelEndElectFault" + }, + { ATF_POINTER, 2, offsetof(struct TireData, leakageRate), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TireLeakageRate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "leakageRate" + }, + { ATF_POINTER, 1, offsetof(struct TireData, detection), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TirePressureThresholdDetection, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "detection" + }, +}; +static const int asn_MAP_TireData_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_TireData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TireData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* location */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pressure */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* temp */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* wheelSensorStatus */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* wheelEndElectFault */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* leakageRate */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* detection */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TireData_specs_1 = { + sizeof(struct TireData), + offsetof(struct TireData, _asn_ctx), + asn_MAP_TireData_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_TireData_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TireData = { + "TireData", + "TireData", + &asn_OP_SEQUENCE, + asn_DEF_TireData_tags_1, + sizeof(asn_DEF_TireData_tags_1) + /sizeof(asn_DEF_TireData_tags_1[0]), /* 1 */ + asn_DEF_TireData_tags_1, /* Same as above */ + sizeof(asn_DEF_TireData_tags_1) + /sizeof(asn_DEF_TireData_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TireData_1, + 7, /* Elements count */ + &asn_SPC_TireData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TireDataList.c b/src/tmx/Asn_J2735/src/r2020/TireDataList.c new file mode 100644 index 000000000..354908273 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TireDataList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TireDataList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TireDataList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TireDataList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_TireDataList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TireData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TireDataList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TireDataList_specs_1 = { + sizeof(struct TireDataList), + offsetof(struct TireDataList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TireDataList = { + "TireDataList", + "TireDataList", + &asn_OP_SEQUENCE_OF, + asn_DEF_TireDataList_tags_1, + sizeof(asn_DEF_TireDataList_tags_1) + /sizeof(asn_DEF_TireDataList_tags_1[0]), /* 1 */ + asn_DEF_TireDataList_tags_1, /* Same as above */ + sizeof(asn_DEF_TireDataList_tags_1) + /sizeof(asn_DEF_TireDataList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TireDataList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TireDataList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_TireDataList_1, + 1, /* Single element */ + &asn_SPC_TireDataList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TireLeakageRate.c b/src/tmx/Asn_J2735/src/r2020/TireLeakageRate.c new file mode 100644 index 000000000..a26f0103e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TireLeakageRate.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TireLeakageRate.h" + +int +TireLeakageRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 64255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TireLeakageRate_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..64255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TireLeakageRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 64255 } /* (0..64255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TireLeakageRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TireLeakageRate = { + "TireLeakageRate", + "TireLeakageRate", + &asn_OP_NativeInteger, + asn_DEF_TireLeakageRate_tags_1, + sizeof(asn_DEF_TireLeakageRate_tags_1) + /sizeof(asn_DEF_TireLeakageRate_tags_1[0]), /* 1 */ + asn_DEF_TireLeakageRate_tags_1, /* Same as above */ + sizeof(asn_DEF_TireLeakageRate_tags_1) + /sizeof(asn_DEF_TireLeakageRate_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TireLeakageRate_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TireLeakageRate_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TireLeakageRate_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TireLocation.c b/src/tmx/Asn_J2735/src/r2020/TireLocation.c new file mode 100644 index 000000000..764187a22 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TireLocation.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TireLocation.h" + +int +TireLocation_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TireLocation_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TireLocation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TireLocation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TireLocation = { + "TireLocation", + "TireLocation", + &asn_OP_NativeInteger, + asn_DEF_TireLocation_tags_1, + sizeof(asn_DEF_TireLocation_tags_1) + /sizeof(asn_DEF_TireLocation_tags_1[0]), /* 1 */ + asn_DEF_TireLocation_tags_1, /* Same as above */ + sizeof(asn_DEF_TireLocation_tags_1) + /sizeof(asn_DEF_TireLocation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TireLocation_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TireLocation_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TireLocation_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TirePressure.c b/src/tmx/Asn_J2735/src/r2020/TirePressure.c new file mode 100644 index 000000000..2a593eddc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TirePressure.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TirePressure.h" + +int +TirePressure_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 250L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TirePressure_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..250) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TirePressure_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 250 } /* (0..250) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TirePressure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TirePressure = { + "TirePressure", + "TirePressure", + &asn_OP_NativeInteger, + asn_DEF_TirePressure_tags_1, + sizeof(asn_DEF_TirePressure_tags_1) + /sizeof(asn_DEF_TirePressure_tags_1[0]), /* 1 */ + asn_DEF_TirePressure_tags_1, /* Same as above */ + sizeof(asn_DEF_TirePressure_tags_1) + /sizeof(asn_DEF_TirePressure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TirePressure_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TirePressure_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TirePressure_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TirePressureThresholdDetection.c b/src/tmx/Asn_J2735/src/r2020/TirePressureThresholdDetection.c new file mode 100644 index 000000000..24e168b59 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TirePressureThresholdDetection.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TirePressureThresholdDetection.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TirePressureThresholdDetection_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TirePressureThresholdDetection_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TirePressureThresholdDetection_value2enum_1[] = { + { 0, 6, "noData" }, + { 1, 12, "overPressure" }, + { 2, 17, "noWarningPressure" }, + { 3, 13, "underPressure" }, + { 4, 20, "extremeUnderPressure" }, + { 5, 9, "undefined" }, + { 6, 14, "errorIndicator" }, + { 7, 12, "notAvailable" } +}; +static const unsigned int asn_MAP_TirePressureThresholdDetection_enum2value_1[] = { + 6, /* errorIndicator(6) */ + 4, /* extremeUnderPressure(4) */ + 0, /* noData(0) */ + 2, /* noWarningPressure(2) */ + 7, /* notAvailable(7) */ + 1, /* overPressure(1) */ + 5, /* undefined(5) */ + 3 /* underPressure(3) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TirePressureThresholdDetection_specs_1 = { + asn_MAP_TirePressureThresholdDetection_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TirePressureThresholdDetection_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TirePressureThresholdDetection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TirePressureThresholdDetection = { + "TirePressureThresholdDetection", + "TirePressureThresholdDetection", + &asn_OP_NativeEnumerated, + asn_DEF_TirePressureThresholdDetection_tags_1, + sizeof(asn_DEF_TirePressureThresholdDetection_tags_1) + /sizeof(asn_DEF_TirePressureThresholdDetection_tags_1[0]), /* 1 */ + asn_DEF_TirePressureThresholdDetection_tags_1, /* Same as above */ + sizeof(asn_DEF_TirePressureThresholdDetection_tags_1) + /sizeof(asn_DEF_TirePressureThresholdDetection_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TirePressureThresholdDetection_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TirePressureThresholdDetection_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TirePressureThresholdDetection_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TireTemp.c b/src/tmx/Asn_J2735/src/r2020/TireTemp.c new file mode 100644 index 000000000..8b7e21c9f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TireTemp.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TireTemp.h" + +int +TireTemp_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -8736L && value <= 55519L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TireTemp_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-8736..55519) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TireTemp_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -8736, 55519 } /* (-8736..55519) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TireTemp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TireTemp = { + "TireTemp", + "TireTemp", + &asn_OP_NativeInteger, + asn_DEF_TireTemp_tags_1, + sizeof(asn_DEF_TireTemp_tags_1) + /sizeof(asn_DEF_TireTemp_tags_1[0]), /* 1 */ + asn_DEF_TireTemp_tags_1, /* Same as above */ + sizeof(asn_DEF_TireTemp_tags_1) + /sizeof(asn_DEF_TireTemp_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TireTemp_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TireTemp_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TireTemp_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TractionControlStatus.c b/src/tmx/Asn_J2735/src/r2020/TractionControlStatus.c new file mode 100644 index 000000000..919267c9c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TractionControlStatus.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TractionControlStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TractionControlStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TractionControlStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TractionControlStatus_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 3, "off" }, + { 2, 2, "on" }, + { 3, 7, "engaged" } +}; +static const unsigned int asn_MAP_TractionControlStatus_enum2value_1[] = { + 3, /* engaged(3) */ + 1, /* off(1) */ + 2, /* on(2) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TractionControlStatus_specs_1 = { + asn_MAP_TractionControlStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TractionControlStatus_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TractionControlStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TractionControlStatus = { + "TractionControlStatus", + "TractionControlStatus", + &asn_OP_NativeEnumerated, + asn_DEF_TractionControlStatus_tags_1, + sizeof(asn_DEF_TractionControlStatus_tags_1) + /sizeof(asn_DEF_TractionControlStatus_tags_1[0]), /* 1 */ + asn_DEF_TractionControlStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_TractionControlStatus_tags_1) + /sizeof(asn_DEF_TractionControlStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TractionControlStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TractionControlStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TractionControlStatus_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlBounds.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlBounds.c new file mode 100644 index 000000000..f69a96226 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlBounds.c @@ -0,0 +1,159 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TrafficControlBounds.h" + +static int +memb_offsets_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size == 3)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_type_offsets_constr_5 CC_NOTUSED = { + { 0, 0 }, + 3 /* (SIZE(3..3)) */}; +static asn_per_constraints_t asn_PER_type_offsets_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_offsets_constr_5 CC_NOTUSED = { + { 0, 0 }, + 3 /* (SIZE(3..3)) */}; +static asn_per_constraints_t asn_PER_memb_offsets_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_offsets_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_OffsetPoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_offsets_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_offsets_specs_5 = { + sizeof(struct TrafficControlBounds__offsets), + offsetof(struct TrafficControlBounds__offsets, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_offsets_5 = { + "offsets", + "offsets", + &asn_OP_SEQUENCE_OF, + asn_DEF_offsets_tags_5, + sizeof(asn_DEF_offsets_tags_5) + /sizeof(asn_DEF_offsets_tags_5[0]) - 1, /* 1 */ + asn_DEF_offsets_tags_5, /* Same as above */ + sizeof(asn_DEF_offsets_tags_5) + /sizeof(asn_DEF_offsets_tags_5[0]), /* 2 */ + { &asn_OER_type_offsets_constr_5, &asn_PER_type_offsets_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_offsets_5, + 1, /* Single element */ + &asn_SPC_offsets_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TrafficControlBounds_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlBounds, oldest), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EpochMins, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "oldest" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlBounds, reflon), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reflon" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlBounds, reflat), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reflat" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlBounds, offsets), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_offsets_5, + 0, + { &asn_OER_memb_offsets_constr_5, &asn_PER_memb_offsets_constr_5, memb_offsets_constraint_1 }, + 0, 0, /* No default value */ + "offsets" + }, +}; +static const ber_tlv_tag_t asn_DEF_TrafficControlBounds_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlBounds_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oldest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reflon */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reflat */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* offsets */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrafficControlBounds_specs_1 = { + sizeof(struct TrafficControlBounds), + offsetof(struct TrafficControlBounds, _asn_ctx), + asn_MAP_TrafficControlBounds_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlBounds = { + "TrafficControlBounds", + "TrafficControlBounds", + &asn_OP_SEQUENCE, + asn_DEF_TrafficControlBounds_tags_1, + sizeof(asn_DEF_TrafficControlBounds_tags_1) + /sizeof(asn_DEF_TrafficControlBounds_tags_1[0]), /* 1 */ + asn_DEF_TrafficControlBounds_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficControlBounds_tags_1) + /sizeof(asn_DEF_TrafficControlBounds_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TrafficControlBounds_1, + 4, /* Elements count */ + &asn_SPC_TrafficControlBounds_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlDetail.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlDetail.c new file mode 100644 index 000000000..f3e78883a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlDetail.c @@ -0,0 +1,1053 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "CARMA-CLOUD" + * found in "asn/cc_traffic_control_messages_asn1.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "TrafficControlDetail.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_signal_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size <= 63)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_latperm_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size == 2)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_minspeed_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_maxspeed_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_minhdwy_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 2047)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_maxvehmass_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_maxvehheight_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_maxvehwidth_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_maxvehlength_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_maxvehaxles_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 2 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_minvehocc_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_maxplatoonsize_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 63)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_minplatoonhdwy_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 2047)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + + +static asn_oer_constraints_t asn_OER_type_closed_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_closed_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 5 } /* (0..5) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_chains_constr_14 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_chains_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_direction_constr_18 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_direction_constr_18 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_lataffinity_constr_21 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_lataffinity_constr_21 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_Member_constr_25 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_Member_constr_25 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_latperm_constr_24 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +static asn_per_constraints_t asn_PER_type_latperm_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_parking_constr_30 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_parking_constr_30 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_signal_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..63)) */}; +static asn_per_constraints_t asn_PER_memb_signal_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 63 } /* (SIZE(0..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_latperm_constr_24 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +static asn_per_constraints_t asn_PER_memb_latperm_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; + +static asn_oer_constraints_t asn_OER_memb_minspeed_constr_34 CC_NOTUSED = { + { 2, 1 } /* (0..1023) */, + -1}; +static asn_per_constraints_t asn_PER_memb_minspeed_constr_34 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_maxspeed_constr_35 CC_NOTUSED = { + { 2, 1 } /* (0..1023) */, + -1}; +static asn_per_constraints_t asn_PER_memb_maxspeed_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_minhdwy_constr_36 CC_NOTUSED = { + { 2, 1 } /* (0..2047) */, + -1}; +static asn_per_constraints_t asn_PER_memb_minhdwy_constr_36 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 2047 } /* (0..2047) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_maxvehmass_constr_37 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_maxvehmass_constr_37 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_maxvehheight_constr_38 CC_NOTUSED = { + { 1, 1 } /* (0..127) */, + -1}; +static asn_per_constraints_t asn_PER_memb_maxvehheight_constr_38 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_maxvehwidth_constr_39 CC_NOTUSED = { + { 1, 1 } /* (0..127) */, + -1}; +static asn_per_constraints_t asn_PER_memb_maxvehwidth_constr_39 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_maxvehlength_constr_40 CC_NOTUSED = { + { 2, 1 } /* (0..1023) */, + -1}; +static asn_per_constraints_t asn_PER_memb_maxvehlength_constr_40 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_maxvehaxles_constr_41 CC_NOTUSED = { + { 1, 1 } /* (2..15) */, + -1}; +static asn_per_constraints_t asn_PER_memb_maxvehaxles_constr_41 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 2, 15 } /* (2..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_minvehocc_constr_42 CC_NOTUSED = { + { 1, 1 } /* (1..15) */, + -1}; +static asn_per_constraints_t asn_PER_memb_minvehocc_constr_42 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 1, 15 } /* (1..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_maxplatoonsize_constr_43 CC_NOTUSED = { + { 1, 1 } /* (1..63) */, + -1}; +static asn_per_constraints_t asn_PER_memb_maxplatoonsize_constr_43 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (1..63) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_minplatoonhdwy_constr_44 CC_NOTUSED = { + { 2, 1 } /* (0..2047) */, + -1}; +static asn_per_constraints_t asn_PER_memb_minplatoonhdwy_constr_44 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 2047 } /* (0..2047) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; + +static asn_oer_constraints_t asn_OER_type_TrafficControlDetail_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; + asn_per_constraints_t asn_PER_type_TrafficControlDetail_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 21 } /* (0..21,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_closed_value2enum_7[] = { + { 0, 4, "open" }, + { 1, 6, "notopen" }, + { 2, 9, "taperleft" }, + { 3, 10, "taperright" }, + { 4, 8, "openleft" }, + { 5, 9, "openright" } +}; +static const unsigned int asn_MAP_closed_enum2value_7[] = { + 1, /* notopen(1) */ + 0, /* open(0) */ + 4, /* openleft(4) */ + 5, /* openright(5) */ + 2, /* taperleft(2) */ + 3 /* taperright(3) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_closed_specs_7 = { + asn_MAP_closed_value2enum_7, /* "tag" => N; sorted by tag */ + asn_MAP_closed_enum2value_7, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_closed_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_closed_7 = { + "closed", + "closed", + &asn_OP_NativeEnumerated, + asn_DEF_closed_tags_7, + sizeof(asn_DEF_closed_tags_7) + /sizeof(asn_DEF_closed_tags_7[0]) - 1, /* 1 */ + asn_DEF_closed_tags_7, /* Same as above */ + sizeof(asn_DEF_closed_tags_7) + /sizeof(asn_DEF_closed_tags_7[0]), /* 2 */ + { &asn_OER_type_closed_constr_7, &asn_PER_type_closed_constr_7, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_closed_specs_7 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_chains_value2enum_14[] = { + { 0, 2, "no" }, + { 1, 9, "permitted" }, + { 2, 8, "required" } +}; +static const unsigned int asn_MAP_chains_enum2value_14[] = { + 0, /* no(0) */ + 1, /* permitted(1) */ + 2 /* required(2) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_chains_specs_14 = { + asn_MAP_chains_value2enum_14, /* "tag" => N; sorted by tag */ + asn_MAP_chains_enum2value_14, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_chains_tags_14[] = { + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_chains_14 = { + "chains", + "chains", + &asn_OP_NativeEnumerated, + asn_DEF_chains_tags_14, + sizeof(asn_DEF_chains_tags_14) + /sizeof(asn_DEF_chains_tags_14[0]) - 1, /* 1 */ + asn_DEF_chains_tags_14, /* Same as above */ + sizeof(asn_DEF_chains_tags_14) + /sizeof(asn_DEF_chains_tags_14[0]), /* 2 */ + { &asn_OER_type_chains_constr_14, &asn_PER_type_chains_constr_14, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_chains_specs_14 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_direction_value2enum_18[] = { + { 0, 7, "forward" }, + { 1, 7, "reverse" } +}; +static const unsigned int asn_MAP_direction_enum2value_18[] = { + 0, /* forward(0) */ + 1 /* reverse(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_direction_specs_18 = { + asn_MAP_direction_value2enum_18, /* "tag" => N; sorted by tag */ + asn_MAP_direction_enum2value_18, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_direction_tags_18[] = { + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_direction_18 = { + "direction", + "direction", + &asn_OP_NativeEnumerated, + asn_DEF_direction_tags_18, + sizeof(asn_DEF_direction_tags_18) + /sizeof(asn_DEF_direction_tags_18[0]) - 1, /* 1 */ + asn_DEF_direction_tags_18, /* Same as above */ + sizeof(asn_DEF_direction_tags_18) + /sizeof(asn_DEF_direction_tags_18[0]), /* 2 */ + { &asn_OER_type_direction_constr_18, &asn_PER_type_direction_constr_18, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_direction_specs_18 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_lataffinity_value2enum_21[] = { + { 0, 4, "left" }, + { 1, 5, "right" } +}; +static const unsigned int asn_MAP_lataffinity_enum2value_21[] = { + 0, /* left(0) */ + 1 /* right(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_lataffinity_specs_21 = { + asn_MAP_lataffinity_value2enum_21, /* "tag" => N; sorted by tag */ + asn_MAP_lataffinity_enum2value_21, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_lataffinity_tags_21[] = { + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_lataffinity_21 = { + "lataffinity", + "lataffinity", + &asn_OP_NativeEnumerated, + asn_DEF_lataffinity_tags_21, + sizeof(asn_DEF_lataffinity_tags_21) + /sizeof(asn_DEF_lataffinity_tags_21[0]) - 1, /* 1 */ + asn_DEF_lataffinity_tags_21, /* Same as above */ + sizeof(asn_DEF_lataffinity_tags_21) + /sizeof(asn_DEF_lataffinity_tags_21[0]), /* 2 */ + { &asn_OER_type_lataffinity_constr_21, &asn_PER_type_lataffinity_constr_21, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_lataffinity_specs_21 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_Member_value2enum_25[] = { + { 0, 4, "none" }, + { 1, 9, "permitted" }, + { 2, 12, "passing-only" }, + { 3, 14, "emergency-only" } +}; +static const unsigned int asn_MAP_Member_enum2value_25[] = { + 3, /* emergency-only(3) */ + 0, /* none(0) */ + 2, /* passing-only(2) */ + 1 /* permitted(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_Member_specs_25 = { + asn_MAP_Member_value2enum_25, /* "tag" => N; sorted by tag */ + asn_MAP_Member_enum2value_25, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Member_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_25 = { + "ENUMERATED", + "ENUMERATED", + &asn_OP_NativeEnumerated, + asn_DEF_Member_tags_25, + sizeof(asn_DEF_Member_tags_25) + /sizeof(asn_DEF_Member_tags_25[0]), /* 1 */ + asn_DEF_Member_tags_25, /* Same as above */ + sizeof(asn_DEF_Member_tags_25) + /sizeof(asn_DEF_Member_tags_25[0]), /* 1 */ + { &asn_OER_type_Member_constr_25, &asn_PER_type_Member_constr_25, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Member_specs_25 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_latperm_24[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Member_25, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_latperm_tags_24[] = { + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_latperm_specs_24 = { + sizeof(struct TrafficControlDetail__latperm), + offsetof(struct TrafficControlDetail__latperm, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_latperm_24 = { + "latperm", + "latperm", + &asn_OP_SEQUENCE_OF, + asn_DEF_latperm_tags_24, + sizeof(asn_DEF_latperm_tags_24) + /sizeof(asn_DEF_latperm_tags_24[0]) - 1, /* 1 */ + asn_DEF_latperm_tags_24, /* Same as above */ + sizeof(asn_DEF_latperm_tags_24) + /sizeof(asn_DEF_latperm_tags_24[0]), /* 2 */ + { &asn_OER_type_latperm_constr_24, &asn_PER_type_latperm_constr_24, SEQUENCE_OF_constraint }, + asn_MBR_latperm_24, + 1, /* Single element */ + &asn_SPC_latperm_specs_24 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_parking_value2enum_30[] = { + { 0, 2, "no" }, + { 1, 8, "parallel" }, + { 2, 6, "angled" } +}; +static const unsigned int asn_MAP_parking_enum2value_30[] = { + 2, /* angled(2) */ + 0, /* no(0) */ + 1 /* parallel(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_parking_specs_30 = { + asn_MAP_parking_value2enum_30, /* "tag" => N; sorted by tag */ + asn_MAP_parking_enum2value_30, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_parking_tags_30[] = { + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_parking_30 = { + "parking", + "parking", + &asn_OP_NativeEnumerated, + asn_DEF_parking_tags_30, + sizeof(asn_DEF_parking_tags_30) + /sizeof(asn_DEF_parking_tags_30[0]) - 1, /* 1 */ + asn_DEF_parking_tags_30, /* Same as above */ + sizeof(asn_DEF_parking_tags_30) + /sizeof(asn_DEF_parking_tags_30[0]), /* 2 */ + { &asn_OER_type_parking_constr_30, &asn_PER_type_parking_constr_30, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_parking_specs_30 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TrafficControlDetail_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.signal), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { &asn_OER_memb_signal_constr_2, &asn_PER_memb_signal_constr_2, memb_signal_constraint_1 }, + 0, 0, /* No default value */ + "signal" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.stop), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "stop" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.yield), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "yield" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.notowing), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "notowing" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.restricted), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "restricted" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.closed), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_closed_7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "closed" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.chains), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_chains_14, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "chains" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.direction), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_direction_18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "direction" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.lataffinity), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_lataffinity_21, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "lataffinity" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.latperm), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + 0, + &asn_DEF_latperm_24, + 0, + { &asn_OER_memb_latperm_constr_24, &asn_PER_memb_latperm_constr_24, memb_latperm_constraint_1 }, + 0, 0, /* No default value */ + "latperm" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.parking), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_parking_30, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "parking" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.minspeed), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_minspeed_constr_34, &asn_PER_memb_minspeed_constr_34, memb_minspeed_constraint_1 }, + 0, 0, /* No default value */ + "minspeed" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.maxspeed), + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_maxspeed_constr_35, &asn_PER_memb_maxspeed_constr_35, memb_maxspeed_constraint_1 }, + 0, 0, /* No default value */ + "maxspeed" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.minhdwy), + (ASN_TAG_CLASS_CONTEXT | (13 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_minhdwy_constr_36, &asn_PER_memb_minhdwy_constr_36, memb_minhdwy_constraint_1 }, + 0, 0, /* No default value */ + "minhdwy" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.maxvehmass), + (ASN_TAG_CLASS_CONTEXT | (14 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_maxvehmass_constr_37, &asn_PER_memb_maxvehmass_constr_37, memb_maxvehmass_constraint_1 }, + 0, 0, /* No default value */ + "maxvehmass" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.maxvehheight), + (ASN_TAG_CLASS_CONTEXT | (15 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_maxvehheight_constr_38, &asn_PER_memb_maxvehheight_constr_38, memb_maxvehheight_constraint_1 }, + 0, 0, /* No default value */ + "maxvehheight" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.maxvehwidth), + (ASN_TAG_CLASS_CONTEXT | (16 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_maxvehwidth_constr_39, &asn_PER_memb_maxvehwidth_constr_39, memb_maxvehwidth_constraint_1 }, + 0, 0, /* No default value */ + "maxvehwidth" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.maxvehlength), + (ASN_TAG_CLASS_CONTEXT | (17 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_maxvehlength_constr_40, &asn_PER_memb_maxvehlength_constr_40, memb_maxvehlength_constraint_1 }, + 0, 0, /* No default value */ + "maxvehlength" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.maxvehaxles), + (ASN_TAG_CLASS_CONTEXT | (18 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_maxvehaxles_constr_41, &asn_PER_memb_maxvehaxles_constr_41, memb_maxvehaxles_constraint_1 }, + 0, 0, /* No default value */ + "maxvehaxles" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.minvehocc), + (ASN_TAG_CLASS_CONTEXT | (19 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_minvehocc_constr_42, &asn_PER_memb_minvehocc_constr_42, memb_minvehocc_constraint_1 }, + 0, 0, /* No default value */ + "minvehocc" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.maxplatoonsize), + (ASN_TAG_CLASS_CONTEXT | (20 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_maxplatoonsize_constr_43, &asn_PER_memb_maxplatoonsize_constr_43, memb_maxplatoonsize_constraint_1 }, + 0, 0, /* No default value */ + "maxplatoonsize" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlDetail, choice.minplatoonhdwy), + (ASN_TAG_CLASS_CONTEXT | (21 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_minplatoonhdwy_constr_44, &asn_PER_memb_minplatoonhdwy_constr_44, memb_minplatoonhdwy_constraint_1 }, + 0, 0, /* No default value */ + "minplatoonhdwy" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlDetail_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* signal */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* stop */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* yield */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* notowing */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* restricted */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* closed */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* chains */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* direction */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* lataffinity */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* latperm */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* parking */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* minspeed */ + { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* maxspeed */ + { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* minhdwy */ + { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* maxvehmass */ + { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* maxvehheight */ + { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* maxvehwidth */ + { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* maxvehlength */ + { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* maxvehaxles */ + { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* minvehocc */ + { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* maxplatoonsize */ + { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 } /* minplatoonhdwy */ +}; + asn_CHOICE_specifics_t asn_SPC_TrafficControlDetail_specs_1 = { + sizeof(struct TrafficControlDetail), + offsetof(struct TrafficControlDetail, _asn_ctx), + offsetof(struct TrafficControlDetail, present), + sizeof(((struct TrafficControlDetail *)0)->present), + asn_MAP_TrafficControlDetail_tag2el_1, + 22, /* Count of tags in the map */ + 0, 0, + 22 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlDetail = { + "TrafficControlDetail", + "TrafficControlDetail", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_TrafficControlDetail_constr_1, &asn_PER_type_TrafficControlDetail_constr_1, CHOICE_constraint }, + asn_MBR_TrafficControlDetail_1, + 22, /* Elements count */ + &asn_SPC_TrafficControlDetail_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlGeometry.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlGeometry.c new file mode 100644 index 000000000..7ed724ff0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlGeometry.c @@ -0,0 +1,372 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "CARMA-CLOUD" + * found in "asn/cc_traffic_control_messages_asn1.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "TrafficControlGeometry.h" + +static int check_permitted_alphabet_2(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +static int check_permitted_alphabet_3(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +static int +memb_proj_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size <= 63) + && !check_permitted_alphabet_2(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_datum_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size <= 63) + && !check_permitted_alphabet_3(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_refwidth_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_heading_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3599)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_nodes_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 255)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_type_nodes_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +static asn_per_constraints_t asn_PER_type_nodes_constr_10 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_proj_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..63)) */}; +static asn_per_constraints_t asn_PER_memb_proj_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 6, 6, 0, 63 } /* (SIZE(0..63)) */, + 0, 0 /* No PER character map necessary */ +}; +static asn_oer_constraints_t asn_OER_memb_datum_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..63)) */}; +static asn_per_constraints_t asn_PER_memb_datum_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 6, 6, 0, 63 } /* (SIZE(0..63)) */, + 0, 0 /* No PER character map necessary */ +}; +static asn_oer_constraints_t asn_OER_memb_refwidth_constr_8 CC_NOTUSED = { + { 2, 1 } /* (0..32767) */, + -1}; +static asn_per_constraints_t asn_PER_memb_refwidth_constr_8 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32767 } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_heading_constr_9 CC_NOTUSED = { + { 2, 1 } /* (0..3599) */, + -1}; +static asn_per_constraints_t asn_PER_memb_heading_constr_9 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 3599 } /* (0..3599) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_nodes_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +static asn_per_constraints_t asn_PER_memb_nodes_constr_10 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_nodes_10[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PathNode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_nodes_tags_10[] = { + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_nodes_specs_10 = { + sizeof(struct TrafficControlGeometry__nodes), + offsetof(struct TrafficControlGeometry__nodes, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_nodes_10 = { + "nodes", + "nodes", + &asn_OP_SEQUENCE_OF, + asn_DEF_nodes_tags_10, + sizeof(asn_DEF_nodes_tags_10) + /sizeof(asn_DEF_nodes_tags_10[0]) - 1, /* 1 */ + asn_DEF_nodes_tags_10, /* Same as above */ + sizeof(asn_DEF_nodes_tags_10) + /sizeof(asn_DEF_nodes_tags_10[0]), /* 2 */ + { &asn_OER_type_nodes_constr_10, &asn_PER_type_nodes_constr_10, SEQUENCE_OF_constraint }, + asn_MBR_nodes_10, + 1, /* Single element */ + &asn_SPC_nodes_specs_10 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TrafficControlGeometry_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlGeometry, proj), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IA5String, + 0, + { &asn_OER_memb_proj_constr_2, &asn_PER_memb_proj_constr_2, memb_proj_constraint_1 }, + 0, 0, /* No default value */ + "proj" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlGeometry, datum), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IA5String, + 0, + { &asn_OER_memb_datum_constr_3, &asn_PER_memb_datum_constr_3, memb_datum_constraint_1 }, + 0, 0, /* No default value */ + "datum" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlGeometry, reftime), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EpochMins, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reftime" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlGeometry, reflon), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reflon" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlGeometry, reflat), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reflat" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlGeometry, refelv), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_Elevation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "refelv" + }, + { ATF_POINTER, 1, offsetof(struct TrafficControlGeometry, refwidth), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_refwidth_constr_8, &asn_PER_memb_refwidth_constr_8, memb_refwidth_constraint_1 }, + 0, 0, /* No default value */ + "refwidth" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlGeometry, heading), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_heading_constr_9, &asn_PER_memb_heading_constr_9, memb_heading_constraint_1 }, + 0, 0, /* No default value */ + "heading" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlGeometry, nodes), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + 0, + &asn_DEF_nodes_10, + 0, + { &asn_OER_memb_nodes_constr_10, &asn_PER_memb_nodes_constr_10, memb_nodes_constraint_1 }, + 0, 0, /* No default value */ + "nodes" + }, +}; +static const int asn_MAP_TrafficControlGeometry_oms_1[] = { 6 }; +static const ber_tlv_tag_t asn_DEF_TrafficControlGeometry_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlGeometry_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* proj */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* datum */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reftime */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* reflon */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* reflat */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* refelv */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* refwidth */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* heading */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* nodes */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrafficControlGeometry_specs_1 = { + sizeof(struct TrafficControlGeometry), + offsetof(struct TrafficControlGeometry, _asn_ctx), + asn_MAP_TrafficControlGeometry_tag2el_1, + 9, /* Count of tags in the map */ + asn_MAP_TrafficControlGeometry_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlGeometry = { + "TrafficControlGeometry", + "TrafficControlGeometry", + &asn_OP_SEQUENCE, + asn_DEF_TrafficControlGeometry_tags_1, + sizeof(asn_DEF_TrafficControlGeometry_tags_1) + /sizeof(asn_DEF_TrafficControlGeometry_tags_1[0]), /* 1 */ + asn_DEF_TrafficControlGeometry_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficControlGeometry_tags_1) + /sizeof(asn_DEF_TrafficControlGeometry_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TrafficControlGeometry_1, + 9, /* Elements count */ + &asn_SPC_TrafficControlGeometry_specs_1 /* Additional specs */ +}; diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlMessage.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlMessage.c new file mode 100644 index 000000000..23100a8f0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlMessage.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TrafficControlMessage.h" + +static asn_oer_constraints_t asn_OER_type_TrafficControlMessage_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_TrafficControlMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_TrafficControlMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlMessage, choice.reserved), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reserved" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlMessage, choice.tcmV01), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrafficControlMessageV01, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tcmV01" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reserved */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tcmV01 */ +}; +asn_CHOICE_specifics_t asn_SPC_TrafficControlMessage_specs_1 = { + sizeof(struct TrafficControlMessage), + offsetof(struct TrafficControlMessage, _asn_ctx), + offsetof(struct TrafficControlMessage, present), + sizeof(((struct TrafficControlMessage *)0)->present), + asn_MAP_TrafficControlMessage_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlMessage = { + "TrafficControlMessage", + "TrafficControlMessage", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_TrafficControlMessage_constr_1, &asn_PER_type_TrafficControlMessage_constr_1, CHOICE_constraint }, + asn_MBR_TrafficControlMessage_1, + 2, /* Elements count */ + &asn_SPC_TrafficControlMessage_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlMessageV01.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlMessageV01.c new file mode 100644 index 000000000..55193d392 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlMessageV01.c @@ -0,0 +1,231 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TrafficControlMessageV01.h" + +static int +memb_reqseq_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_msgtot_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_msgnum_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_reqseq_constr_3 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +static asn_per_constraints_t asn_PER_memb_reqseq_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_msgtot_constr_4 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_msgtot_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_msgnum_constr_5 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_msgnum_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_TrafficControlMessageV01_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlMessageV01, reqid), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_Id64b, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reqid" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlMessageV01, reqseq), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_reqseq_constr_3, &asn_PER_memb_reqseq_constr_3, memb_reqseq_constraint_1 }, + 0, 0, /* No default value */ + "reqseq" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlMessageV01, msgtot), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_msgtot_constr_4, &asn_PER_memb_msgtot_constr_4, memb_msgtot_constraint_1 }, + 0, 0, /* No default value */ + "msgtot" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlMessageV01, msgnum), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_msgnum_constr_5, &asn_PER_memb_msgnum_constr_5, memb_msgnum_constraint_1 }, + 0, 0, /* No default value */ + "msgnum" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlMessageV01, id), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_Id128b, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlMessageV01, updated), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_EpochMins, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "updated" + }, + { ATF_POINTER, 3, offsetof(struct TrafficControlMessageV01, package), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrafficControlPackage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "package" + }, + { ATF_POINTER, 2, offsetof(struct TrafficControlMessageV01, params), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrafficControlParams, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "params" + }, + { ATF_POINTER, 1, offsetof(struct TrafficControlMessageV01, geometry), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrafficControlGeometry, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "geometry" + }, +}; +static const int asn_MAP_TrafficControlMessageV01_oms_1[] = { 6, 7, 8 }; +static const ber_tlv_tag_t asn_DEF_TrafficControlMessageV01_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlMessageV01_tag2el_1[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 3 }, /* reqseq */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 2 }, /* msgtot */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 1 }, /* msgnum */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -3, 0 }, /* updated */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, 0, 1 }, /* reqid */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -1, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 6, 0, 0 }, /* package */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 7, 0, 0 }, /* params */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 8, 0, 0 } /* geometry */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrafficControlMessageV01_specs_1 = { + sizeof(struct TrafficControlMessageV01), + offsetof(struct TrafficControlMessageV01, _asn_ctx), + asn_MAP_TrafficControlMessageV01_tag2el_1, + 9, /* Count of tags in the map */ + asn_MAP_TrafficControlMessageV01_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlMessageV01 = { + "TrafficControlMessageV01", + "TrafficControlMessageV01", + &asn_OP_SEQUENCE, + asn_DEF_TrafficControlMessageV01_tags_1, + sizeof(asn_DEF_TrafficControlMessageV01_tags_1) + /sizeof(asn_DEF_TrafficControlMessageV01_tags_1[0]), /* 1 */ + asn_DEF_TrafficControlMessageV01_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficControlMessageV01_tags_1) + /sizeof(asn_DEF_TrafficControlMessageV01_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TrafficControlMessageV01_1, + 9, /* Elements count */ + &asn_SPC_TrafficControlMessageV01_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlPackage.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlPackage.c new file mode 100644 index 000000000..882463f7d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlPackage.c @@ -0,0 +1,189 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TrafficControlPackage.h" + +static int check_permitted_alphabet_2(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +static int +memb_label_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 63) + && !check_permitted_alphabet_2(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_tcids_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 63)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_type_tcids_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..63)) */}; +static asn_per_constraints_t asn_PER_type_tcids_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_label_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..63)) */}; +static asn_per_constraints_t asn_PER_memb_label_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER character map necessary */ +}; +static asn_oer_constraints_t asn_OER_memb_tcids_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..63)) */}; +static asn_per_constraints_t asn_PER_memb_tcids_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_tcids_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_Id128b, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_tcids_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_tcids_specs_3 = { + sizeof(struct TrafficControlPackage__tcids), + offsetof(struct TrafficControlPackage__tcids, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_tcids_3 = { + "tcids", + "tcids", + &asn_OP_SEQUENCE_OF, + asn_DEF_tcids_tags_3, + sizeof(asn_DEF_tcids_tags_3) + /sizeof(asn_DEF_tcids_tags_3[0]) - 1, /* 1 */ + asn_DEF_tcids_tags_3, /* Same as above */ + sizeof(asn_DEF_tcids_tags_3) + /sizeof(asn_DEF_tcids_tags_3[0]), /* 2 */ + { &asn_OER_type_tcids_constr_3, &asn_PER_type_tcids_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_tcids_3, + 1, /* Single element */ + &asn_SPC_tcids_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TrafficControlPackage_1[] = { + { ATF_POINTER, 1, offsetof(struct TrafficControlPackage, label), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IA5String, + 0, + { &asn_OER_memb_label_constr_2, &asn_PER_memb_label_constr_2, memb_label_constraint_1 }, + 0, 0, /* No default value */ + "label" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlPackage, tcids), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_tcids_3, + 0, + { &asn_OER_memb_tcids_constr_3, &asn_PER_memb_tcids_constr_3, memb_tcids_constraint_1 }, + 0, 0, /* No default value */ + "tcids" + }, +}; +static const int asn_MAP_TrafficControlPackage_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_TrafficControlPackage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlPackage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* label */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tcids */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrafficControlPackage_specs_1 = { + sizeof(struct TrafficControlPackage), + offsetof(struct TrafficControlPackage, _asn_ctx), + asn_MAP_TrafficControlPackage_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TrafficControlPackage_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlPackage = { + "TrafficControlPackage", + "TrafficControlPackage", + &asn_OP_SEQUENCE, + asn_DEF_TrafficControlPackage_tags_1, + sizeof(asn_DEF_TrafficControlPackage_tags_1) + /sizeof(asn_DEF_TrafficControlPackage_tags_1[0]), /* 1 */ + asn_DEF_TrafficControlPackage_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficControlPackage_tags_1) + /sizeof(asn_DEF_TrafficControlPackage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TrafficControlPackage_1, + 2, /* Elements count */ + &asn_SPC_TrafficControlPackage_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlParams.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlParams.c new file mode 100644 index 000000000..59ec71b5c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlParams.c @@ -0,0 +1,159 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TrafficControlParams.h" + +static int +memb_vclasses_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 255)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_type_vclasses_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +static asn_per_constraints_t asn_PER_type_vclasses_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_vclasses_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +static asn_per_constraints_t asn_PER_memb_vclasses_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_vclasses_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TrafficControlVehClass, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_vclasses_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_vclasses_specs_2 = { + sizeof(struct TrafficControlParams__vclasses), + offsetof(struct TrafficControlParams__vclasses, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_vclasses_2 = { + "vclasses", + "vclasses", + &asn_OP_SEQUENCE_OF, + asn_DEF_vclasses_tags_2, + sizeof(asn_DEF_vclasses_tags_2) + /sizeof(asn_DEF_vclasses_tags_2[0]) - 1, /* 1 */ + asn_DEF_vclasses_tags_2, /* Same as above */ + sizeof(asn_DEF_vclasses_tags_2) + /sizeof(asn_DEF_vclasses_tags_2[0]), /* 2 */ + { &asn_OER_type_vclasses_constr_2, &asn_PER_type_vclasses_constr_2, SEQUENCE_OF_constraint }, + asn_MBR_vclasses_2, + 1, /* Single element */ + &asn_SPC_vclasses_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TrafficControlParams_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlParams, vclasses), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_vclasses_2, + 0, + { &asn_OER_memb_vclasses_constr_2, &asn_PER_memb_vclasses_constr_2, memb_vclasses_constraint_1 }, + 0, 0, /* No default value */ + "vclasses" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlParams, schedule), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrafficControlSchedule, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "schedule" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlParams, regulatory), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "regulatory" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlParams, detail), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_TrafficControlDetail, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "detail" + }, +}; +static const ber_tlv_tag_t asn_DEF_TrafficControlParams_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlParams_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vclasses */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* schedule */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* regulatory */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* detail */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrafficControlParams_specs_1 = { + sizeof(struct TrafficControlParams), + offsetof(struct TrafficControlParams, _asn_ctx), + asn_MAP_TrafficControlParams_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlParams = { + "TrafficControlParams", + "TrafficControlParams", + &asn_OP_SEQUENCE, + asn_DEF_TrafficControlParams_tags_1, + sizeof(asn_DEF_TrafficControlParams_tags_1) + /sizeof(asn_DEF_TrafficControlParams_tags_1[0]), /* 1 */ + asn_DEF_TrafficControlParams_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficControlParams_tags_1) + /sizeof(asn_DEF_TrafficControlParams_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TrafficControlParams_1, + 4, /* Elements count */ + &asn_SPC_TrafficControlParams_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlPathPart.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlPathPart.c new file mode 100644 index 000000000..d42958adf --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlPathPart.c @@ -0,0 +1,265 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "TrafficControlPathPart.h" + +static int +memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_updated_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 9223372036854775807)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_pathindex_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_points_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 120)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_type_points_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..120)) */}; +static asn_per_constraints_t asn_PER_type_points_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 1, 120 } /* (SIZE(1..120)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_id_constr_2 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_updated_constr_3 CC_NOTUSED = { + { 8, 1 } /* (0..9223372036854775807) */, + -1}; +static asn_per_constraints_t asn_PER_memb_updated_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 63, -1, 0, 9223372036854775807 } /* (0..9223372036854775807) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_pathindex_constr_4 CC_NOTUSED = { + { 1, 1 } /* (1..127) */, + -1}; +static asn_per_constraints_t asn_PER_memb_pathindex_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 127 } /* (1..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_points_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..120)) */}; +static asn_per_constraints_t asn_PER_memb_points_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 1, 120 } /* (SIZE(1..120)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_points_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Point, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_points_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_points_specs_5 = { + sizeof(struct TrafficControlPathPart__points), + offsetof(struct TrafficControlPathPart__points, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_points_5 = { + "points", + "points", + &asn_OP_SEQUENCE_OF, + asn_DEF_points_tags_5, + sizeof(asn_DEF_points_tags_5) + /sizeof(asn_DEF_points_tags_5[0]) - 1, /* 1 */ + asn_DEF_points_tags_5, /* Same as above */ + sizeof(asn_DEF_points_tags_5) + /sizeof(asn_DEF_points_tags_5[0]), /* 2 */ + { &asn_OER_type_points_constr_5, &asn_PER_type_points_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_points_5, + 1, /* Single element */ + &asn_SPC_points_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_TrafficControlPathPart_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlPathPart, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { &asn_OER_memb_id_constr_2, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlPathPart, updated), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_INTEGER, + 0, + { &asn_OER_memb_updated_constr_3, &asn_PER_memb_updated_constr_3, memb_updated_constraint_1 }, + 0, 0, /* No default value */ + "updated" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlPathPart, pathindex), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_pathindex_constr_4, &asn_PER_memb_pathindex_constr_4, memb_pathindex_constraint_1 }, + 0, 0, /* No default value */ + "pathindex" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlPathPart, points), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_points_5, + 0, + { &asn_OER_memb_points_constr_5, &asn_PER_memb_points_constr_5, memb_points_constraint_1 }, + 0, 0, /* No default value */ + "points" + }, +}; +static const ber_tlv_tag_t asn_DEF_TrafficControlPathPart_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlPathPart_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* updated */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pathindex */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* points */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_TrafficControlPathPart_specs_1 = { + sizeof(struct TrafficControlPathPart), + offsetof(struct TrafficControlPathPart, _asn_ctx), + asn_MAP_TrafficControlPathPart_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlPathPart = { + "TrafficControlPathPart", + "TrafficControlPathPart", + &asn_OP_SEQUENCE, + asn_DEF_TrafficControlPathPart_tags_1, + sizeof(asn_DEF_TrafficControlPathPart_tags_1) + /sizeof(asn_DEF_TrafficControlPathPart_tags_1[0]), /* 1 */ + asn_DEF_TrafficControlPathPart_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficControlPathPart_tags_1) + /sizeof(asn_DEF_TrafficControlPathPart_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TrafficControlPathPart_1, + 4, /* Elements count */ + &asn_SPC_TrafficControlPathPart_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlRequest.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlRequest.c new file mode 100644 index 000000000..0807baa01 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlRequest.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TrafficControlRequest.h" + +static asn_oer_constraints_t asn_OER_type_TrafficControlRequest_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_TrafficControlRequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_TrafficControlRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlRequest, choice.reserved), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reserved" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlRequest, choice.tcrV01), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrafficControlRequestV01, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tcrV01" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reserved */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tcrV01 */ +}; +asn_CHOICE_specifics_t asn_SPC_TrafficControlRequest_specs_1 = { + sizeof(struct TrafficControlRequest), + offsetof(struct TrafficControlRequest, _asn_ctx), + offsetof(struct TrafficControlRequest, present), + sizeof(((struct TrafficControlRequest *)0)->present), + asn_MAP_TrafficControlRequest_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlRequest = { + "TrafficControlRequest", + "TrafficControlRequest", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_TrafficControlRequest_constr_1, &asn_PER_type_TrafficControlRequest_constr_1, CHOICE_constraint }, + asn_MBR_TrafficControlRequest_1, + 2, /* Elements count */ + &asn_SPC_TrafficControlRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlRequestV01.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlRequestV01.c new file mode 100644 index 000000000..875c387ca --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlRequestV01.c @@ -0,0 +1,225 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TrafficControlRequestV01.h" + +static int +memb_reqseq_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_scale_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -3 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_bounds_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 63)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_type_bounds_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..63)) */}; +static asn_per_constraints_t asn_PER_type_bounds_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_reqseq_constr_3 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +static asn_per_constraints_t asn_PER_memb_reqseq_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_scale_constr_4 CC_NOTUSED = { + { 1, 0 } /* (-3..3) */, + -1}; +static asn_per_constraints_t asn_PER_memb_scale_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, -3, 3 } /* (-3..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_bounds_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..63)) */}; +static asn_per_constraints_t asn_PER_memb_bounds_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_bounds_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TrafficControlBounds, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_bounds_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_bounds_specs_5 = { + sizeof(struct TrafficControlRequestV01__bounds), + offsetof(struct TrafficControlRequestV01__bounds, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_bounds_5 = { + "bounds", + "bounds", + &asn_OP_SEQUENCE_OF, + asn_DEF_bounds_tags_5, + sizeof(asn_DEF_bounds_tags_5) + /sizeof(asn_DEF_bounds_tags_5[0]) - 1, /* 1 */ + asn_DEF_bounds_tags_5, /* Same as above */ + sizeof(asn_DEF_bounds_tags_5) + /sizeof(asn_DEF_bounds_tags_5[0]), /* 2 */ + { &asn_OER_type_bounds_constr_5, &asn_PER_type_bounds_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_bounds_5, + 1, /* Single element */ + &asn_SPC_bounds_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TrafficControlRequestV01_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlRequestV01, reqid), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Id64b, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reqid" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlRequestV01, reqseq), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_reqseq_constr_3, &asn_PER_memb_reqseq_constr_3, memb_reqseq_constraint_1 }, + 0, 0, /* No default value */ + "reqseq" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlRequestV01, scale), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_scale_constr_4, &asn_PER_memb_scale_constr_4, memb_scale_constraint_1 }, + 0, 0, /* No default value */ + "scale" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlRequestV01, bounds), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_bounds_5, + 0, + { &asn_OER_memb_bounds_constr_5, &asn_PER_memb_bounds_constr_5, memb_bounds_constraint_1 }, + 0, 0, /* No default value */ + "bounds" + }, +}; +static const ber_tlv_tag_t asn_DEF_TrafficControlRequestV01_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlRequestV01_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reqid */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reqseq */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scale */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* bounds */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrafficControlRequestV01_specs_1 = { + sizeof(struct TrafficControlRequestV01), + offsetof(struct TrafficControlRequestV01, _asn_ctx), + asn_MAP_TrafficControlRequestV01_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlRequestV01 = { + "TrafficControlRequestV01", + "TrafficControlRequestV01", + &asn_OP_SEQUENCE, + asn_DEF_TrafficControlRequestV01_tags_1, + sizeof(asn_DEF_TrafficControlRequestV01_tags_1) + /sizeof(asn_DEF_TrafficControlRequestV01_tags_1[0]), /* 1 */ + asn_DEF_TrafficControlRequestV01_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficControlRequestV01_tags_1) + /sizeof(asn_DEF_TrafficControlRequestV01_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TrafficControlRequestV01_1, + 4, /* Elements count */ + &asn_SPC_TrafficControlRequestV01_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlSchedule.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlSchedule.c new file mode 100644 index 000000000..9080cd190 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlSchedule.c @@ -0,0 +1,171 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TrafficControlSchedule.h" + +static int +memb_between_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 63)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_type_between_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..63)) */}; +static asn_per_constraints_t asn_PER_type_between_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_between_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..63)) */}; +static asn_per_constraints_t asn_PER_memb_between_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_between_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DailySchedule, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_between_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_between_specs_5 = { + sizeof(struct TrafficControlSchedule__between), + offsetof(struct TrafficControlSchedule__between, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_between_5 = { + "between", + "between", + &asn_OP_SEQUENCE_OF, + asn_DEF_between_tags_5, + sizeof(asn_DEF_between_tags_5) + /sizeof(asn_DEF_between_tags_5[0]) - 1, /* 1 */ + asn_DEF_between_tags_5, /* Same as above */ + sizeof(asn_DEF_between_tags_5) + /sizeof(asn_DEF_between_tags_5[0]), /* 2 */ + { &asn_OER_type_between_constr_5, &asn_PER_type_between_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_between_5, + 1, /* Single element */ + &asn_SPC_between_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TrafficControlSchedule_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlSchedule, start), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_EpochMins, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "start" + }, + { ATF_POINTER, 4, offsetof(struct TrafficControlSchedule, end), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EpochMins, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "end" + }, + { ATF_POINTER, 3, offsetof(struct TrafficControlSchedule, dow), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DSRC_DayOfWeek, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dow" + }, + { ATF_POINTER, 2, offsetof(struct TrafficControlSchedule, between), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + 0, + &asn_DEF_between_5, + 0, + { &asn_OER_memb_between_constr_5, &asn_PER_memb_between_constr_5, memb_between_constraint_1 }, + 0, 0, /* No default value */ + "between" + }, + { ATF_POINTER, 1, offsetof(struct TrafficControlSchedule, repeat), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RepeatParams, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "repeat" + }, +}; +static const int asn_MAP_TrafficControlSchedule_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_TrafficControlSchedule_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlSchedule_tag2el_1[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* start */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* end */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* dow */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* between */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 4, 0, 0 } /* repeat */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrafficControlSchedule_specs_1 = { + sizeof(struct TrafficControlSchedule), + offsetof(struct TrafficControlSchedule, _asn_ctx), + asn_MAP_TrafficControlSchedule_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_TrafficControlSchedule_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlSchedule = { + "TrafficControlSchedule", + "TrafficControlSchedule", + &asn_OP_SEQUENCE, + asn_DEF_TrafficControlSchedule_tags_1, + sizeof(asn_DEF_TrafficControlSchedule_tags_1) + /sizeof(asn_DEF_TrafficControlSchedule_tags_1[0]), /* 1 */ + asn_DEF_TrafficControlSchedule_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficControlSchedule_tags_1) + /sizeof(asn_DEF_TrafficControlSchedule_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TrafficControlSchedule_1, + 5, /* Elements count */ + &asn_SPC_TrafficControlSchedule_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlType.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlType.c new file mode 100644 index 000000000..5a6453819 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlType.c @@ -0,0 +1,98 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "TrafficControlType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_TrafficControlType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_TrafficControlType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 22 } /* (0..22) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TrafficControlType_value2enum_1[] = { + { 0, 6, "signal" }, + { 1, 4, "stop" }, + { 2, 5, "yield" }, + { 3, 8, "notowing" }, + { 4, 10, "restricted" }, + { 5, 6, "closed" }, + { 6, 6, "chains" }, + { 7, 9, "direction" }, + { 8, 11, "lataffinity" }, + { 9, 8, "leftperm" }, + { 10, 9, "rightperm" }, + { 11, 7, "opening" }, + { 12, 7, "closing" }, + { 13, 7, "parking" }, + { 14, 8, "minspeed" }, + { 15, 8, "maxspeed" }, + { 16, 7, "minhdwy" }, + { 17, 10, "maxvehmass" }, + { 18, 12, "maxvehheight" }, + { 19, 11, "maxvehwidth" }, + { 20, 12, "maxvehlength" }, + { 21, 8, "maxaxles" }, + { 22, 9, "minvehocc" } +}; +static const unsigned int asn_MAP_TrafficControlType_enum2value_1[] = { + 6, /* chains(6) */ + 5, /* closed(5) */ + 12, /* closing(12) */ + 7, /* direction(7) */ + 8, /* lataffinity(8) */ + 9, /* leftperm(9) */ + 21, /* maxaxles(21) */ + 15, /* maxspeed(15) */ + 18, /* maxvehheight(18) */ + 20, /* maxvehlength(20) */ + 17, /* maxvehmass(17) */ + 19, /* maxvehwidth(19) */ + 16, /* minhdwy(16) */ + 14, /* minspeed(14) */ + 22, /* minvehocc(22) */ + 3, /* notowing(3) */ + 11, /* opening(11) */ + 13, /* parking(13) */ + 4, /* restricted(4) */ + 10, /* rightperm(10) */ + 0, /* signal(0) */ + 1, /* stop(1) */ + 2 /* yield(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TrafficControlType_specs_1 = { + asn_MAP_TrafficControlType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TrafficControlType_enum2value_1, /* N => "tag"; sorted by N */ + 23, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TrafficControlType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlType = { + "TrafficControlType", + "TrafficControlType", + &asn_OP_NativeEnumerated, + asn_DEF_TrafficControlType_tags_1, + sizeof(asn_DEF_TrafficControlType_tags_1) + /sizeof(asn_DEF_TrafficControlType_tags_1[0]), /* 1 */ + asn_DEF_TrafficControlType_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficControlType_tags_1) + /sizeof(asn_DEF_TrafficControlType_tags_1[0]), /* 1 */ + { &asn_OER_type_TrafficControlType_constr_1, &asn_PER_type_TrafficControlType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TrafficControlType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlValue.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlValue.c new file mode 100644 index 000000000..585fd29c9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlValue.c @@ -0,0 +1,539 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "TrafficControlValue.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_chains_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_chains_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_direction_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_direction_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_lataffinity_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_lataffinity_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_leftperm_constr_13 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_leftperm_constr_13 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_rightperm_constr_18 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_rightperm_constr_18 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_opening_constr_23 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_opening_constr_23 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_closing_constr_26 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_closing_constr_26 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_parking_constr_29 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_parking_constr_29 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_TrafficControlValue_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_TrafficControlValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 8 } /* (0..8) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_chains_value2enum_3[] = { + { 0, 2, "no" }, + { 1, 9, "permitted" }, + { 2, 8, "required" } +}; +static const unsigned int asn_MAP_chains_enum2value_3[] = { + 0, /* no(0) */ + 1, /* permitted(1) */ + 2 /* required(2) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_chains_specs_3 = { + asn_MAP_chains_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_chains_enum2value_3, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_chains_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_chains_3 = { + "chains", + "chains", + &asn_OP_NativeEnumerated, + asn_DEF_chains_tags_3, + sizeof(asn_DEF_chains_tags_3) + /sizeof(asn_DEF_chains_tags_3[0]) - 1, /* 1 */ + asn_DEF_chains_tags_3, /* Same as above */ + sizeof(asn_DEF_chains_tags_3) + /sizeof(asn_DEF_chains_tags_3[0]), /* 2 */ + { &asn_OER_type_chains_constr_3, &asn_PER_type_chains_constr_3, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_chains_specs_3 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_direction_value2enum_7[] = { + { 0, 7, "forward" }, + { 1, 7, "reverse" } +}; +static const unsigned int asn_MAP_direction_enum2value_7[] = { + 0, /* forward(0) */ + 1 /* reverse(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_direction_specs_7 = { + asn_MAP_direction_value2enum_7, /* "tag" => N; sorted by tag */ + asn_MAP_direction_enum2value_7, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_direction_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_direction_7 = { + "direction", + "direction", + &asn_OP_NativeEnumerated, + asn_DEF_direction_tags_7, + sizeof(asn_DEF_direction_tags_7) + /sizeof(asn_DEF_direction_tags_7[0]) - 1, /* 1 */ + asn_DEF_direction_tags_7, /* Same as above */ + sizeof(asn_DEF_direction_tags_7) + /sizeof(asn_DEF_direction_tags_7[0]), /* 2 */ + { &asn_OER_type_direction_constr_7, &asn_PER_type_direction_constr_7, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_direction_specs_7 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_lataffinity_value2enum_10[] = { + { 0, 4, "left" }, + { 1, 5, "right" } +}; +static const unsigned int asn_MAP_lataffinity_enum2value_10[] = { + 0, /* left(0) */ + 1 /* right(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_lataffinity_specs_10 = { + asn_MAP_lataffinity_value2enum_10, /* "tag" => N; sorted by tag */ + asn_MAP_lataffinity_enum2value_10, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_lataffinity_tags_10[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_lataffinity_10 = { + "lataffinity", + "lataffinity", + &asn_OP_NativeEnumerated, + asn_DEF_lataffinity_tags_10, + sizeof(asn_DEF_lataffinity_tags_10) + /sizeof(asn_DEF_lataffinity_tags_10[0]) - 1, /* 1 */ + asn_DEF_lataffinity_tags_10, /* Same as above */ + sizeof(asn_DEF_lataffinity_tags_10) + /sizeof(asn_DEF_lataffinity_tags_10[0]), /* 2 */ + { &asn_OER_type_lataffinity_constr_10, &asn_PER_type_lataffinity_constr_10, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_lataffinity_specs_10 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_leftperm_value2enum_13[] = { + { 0, 4, "none" }, + { 1, 9, "permitted" }, + { 2, 12, "passing-only" }, + { 3, 14, "emergency-only" } +}; +static const unsigned int asn_MAP_leftperm_enum2value_13[] = { + 3, /* emergency-only(3) */ + 0, /* none(0) */ + 2, /* passing-only(2) */ + 1 /* permitted(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_leftperm_specs_13 = { + asn_MAP_leftperm_value2enum_13, /* "tag" => N; sorted by tag */ + asn_MAP_leftperm_enum2value_13, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_leftperm_tags_13[] = { + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_leftperm_13 = { + "leftperm", + "leftperm", + &asn_OP_NativeEnumerated, + asn_DEF_leftperm_tags_13, + sizeof(asn_DEF_leftperm_tags_13) + /sizeof(asn_DEF_leftperm_tags_13[0]) - 1, /* 1 */ + asn_DEF_leftperm_tags_13, /* Same as above */ + sizeof(asn_DEF_leftperm_tags_13) + /sizeof(asn_DEF_leftperm_tags_13[0]), /* 2 */ + { &asn_OER_type_leftperm_constr_13, &asn_PER_type_leftperm_constr_13, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_leftperm_specs_13 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_rightperm_value2enum_18[] = { + { 0, 4, "none" }, + { 1, 9, "permitted" }, + { 2, 12, "passing-only" }, + { 3, 14, "emergency-only" } +}; +static const unsigned int asn_MAP_rightperm_enum2value_18[] = { + 3, /* emergency-only(3) */ + 0, /* none(0) */ + 2, /* passing-only(2) */ + 1 /* permitted(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_rightperm_specs_18 = { + asn_MAP_rightperm_value2enum_18, /* "tag" => N; sorted by tag */ + asn_MAP_rightperm_enum2value_18, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_rightperm_tags_18[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_rightperm_18 = { + "rightperm", + "rightperm", + &asn_OP_NativeEnumerated, + asn_DEF_rightperm_tags_18, + sizeof(asn_DEF_rightperm_tags_18) + /sizeof(asn_DEF_rightperm_tags_18[0]) - 1, /* 1 */ + asn_DEF_rightperm_tags_18, /* Same as above */ + sizeof(asn_DEF_rightperm_tags_18) + /sizeof(asn_DEF_rightperm_tags_18[0]), /* 2 */ + { &asn_OER_type_rightperm_constr_18, &asn_PER_type_rightperm_constr_18, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_rightperm_specs_18 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_opening_value2enum_23[] = { + { 0, 4, "left" }, + { 1, 5, "right" } +}; +static const unsigned int asn_MAP_opening_enum2value_23[] = { + 0, /* left(0) */ + 1 /* right(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_opening_specs_23 = { + asn_MAP_opening_value2enum_23, /* "tag" => N; sorted by tag */ + asn_MAP_opening_enum2value_23, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_opening_tags_23[] = { + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_opening_23 = { + "opening", + "opening", + &asn_OP_NativeEnumerated, + asn_DEF_opening_tags_23, + sizeof(asn_DEF_opening_tags_23) + /sizeof(asn_DEF_opening_tags_23[0]) - 1, /* 1 */ + asn_DEF_opening_tags_23, /* Same as above */ + sizeof(asn_DEF_opening_tags_23) + /sizeof(asn_DEF_opening_tags_23[0]), /* 2 */ + { &asn_OER_type_opening_constr_23, &asn_PER_type_opening_constr_23, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_opening_specs_23 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_closing_value2enum_26[] = { + { 0, 4, "left" }, + { 1, 5, "right" } +}; +static const unsigned int asn_MAP_closing_enum2value_26[] = { + 0, /* left(0) */ + 1 /* right(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_closing_specs_26 = { + asn_MAP_closing_value2enum_26, /* "tag" => N; sorted by tag */ + asn_MAP_closing_enum2value_26, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_closing_tags_26[] = { + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_closing_26 = { + "closing", + "closing", + &asn_OP_NativeEnumerated, + asn_DEF_closing_tags_26, + sizeof(asn_DEF_closing_tags_26) + /sizeof(asn_DEF_closing_tags_26[0]) - 1, /* 1 */ + asn_DEF_closing_tags_26, /* Same as above */ + sizeof(asn_DEF_closing_tags_26) + /sizeof(asn_DEF_closing_tags_26[0]), /* 2 */ + { &asn_OER_type_closing_constr_26, &asn_PER_type_closing_constr_26, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_closing_specs_26 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_parking_value2enum_29[] = { + { 0, 2, "no" }, + { 1, 8, "parallel" }, + { 2, 6, "angled" } +}; +static const unsigned int asn_MAP_parking_enum2value_29[] = { + 2, /* angled(2) */ + 0, /* no(0) */ + 1 /* parallel(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_parking_specs_29 = { + asn_MAP_parking_value2enum_29, /* "tag" => N; sorted by tag */ + asn_MAP_parking_enum2value_29, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_parking_tags_29[] = { + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_parking_29 = { + "parking", + "parking", + &asn_OP_NativeEnumerated, + asn_DEF_parking_tags_29, + sizeof(asn_DEF_parking_tags_29) + /sizeof(asn_DEF_parking_tags_29[0]) - 1, /* 1 */ + asn_DEF_parking_tags_29, /* Same as above */ + sizeof(asn_DEF_parking_tags_29) + /sizeof(asn_DEF_parking_tags_29[0]), /* 2 */ + { &asn_OER_type_parking_constr_29, &asn_PER_type_parking_constr_29, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_parking_specs_29 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TrafficControlValue_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlValue, choice.value), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "value" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlValue, choice.chains), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_chains_3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "chains" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlValue, choice.direction), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_direction_7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "direction" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlValue, choice.lataffinity), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_lataffinity_10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "lataffinity" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlValue, choice.leftperm), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_leftperm_13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "leftperm" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlValue, choice.rightperm), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_rightperm_18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rightperm" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlValue, choice.opening), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_opening_23, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "opening" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlValue, choice.closing), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_closing_26, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "closing" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficControlValue, choice.parking), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_parking_29, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "parking" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficControlValue_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* value */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* chains */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* direction */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* lataffinity */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* leftperm */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* rightperm */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* opening */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* closing */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* parking */ +}; +asn_CHOICE_specifics_t asn_SPC_TrafficControlValue_specs_1 = { + sizeof(struct TrafficControlValue), + offsetof(struct TrafficControlValue, _asn_ctx), + offsetof(struct TrafficControlValue, present), + sizeof(((struct TrafficControlValue *)0)->present), + asn_MAP_TrafficControlValue_tag2el_1, + 9, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlValue = { + "TrafficControlValue", + "TrafficControlValue", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_TrafficControlValue_constr_1, &asn_PER_type_TrafficControlValue_constr_1, CHOICE_constraint }, + asn_MBR_TrafficControlValue_1, + 9, /* Elements count */ + &asn_SPC_TrafficControlValue_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrafficControlVehClass.c b/src/tmx/Asn_J2735/src/r2020/TrafficControlVehClass.c new file mode 100644 index 000000000..935c39902 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrafficControlVehClass.c @@ -0,0 +1,92 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted -fskeletons-copy` + */ + +#include "TrafficControlVehClass.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_TrafficControlVehClass_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_TrafficControlVehClass_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 18 } /* (0..18,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TrafficControlVehClass_value2enum_1[] = { + { 0, 3, "any" }, + { 1, 10, "pedestrian" }, + { 2, 7, "bicycle" }, + { 3, 11, "micromobile" }, + { 4, 10, "motorcycle" }, + { 5, 13, "passenger-car" }, + { 6, 15, "light-truck-van" }, + { 7, 3, "bus" }, + { 8, 35, "two-axle-six-tire-single-unit-truck" }, + { 9, 28, "three-axle-single-unit-truck" }, + { 10, 35, "four-or-more-axle-single-unit-truck" }, + { 11, 39, "four-or-fewer-axle-single-trailer-truck" }, + { 12, 30, "five-axle-single-trailer-truck" }, + { 13, 37, "six-or-more-axle-single-trailer-truck" }, + { 14, 38, "five-or-fewer-axle-multi-trailer-truck" }, + { 15, 28, "six-axle-multi-trailer-truck" }, + { 16, 38, "seven-or-more-axle-multi-trailer-truck" }, + { 17, 4, "rail" }, + { 18, 12, "unclassified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TrafficControlVehClass_enum2value_1[] = { + 0, /* any(0) */ + 2, /* bicycle(2) */ + 7, /* bus(7) */ + 12, /* five-axle-single-trailer-truck(12) */ + 14, /* five-or-fewer-axle-multi-trailer-truck(14) */ + 11, /* four-or-fewer-axle-single-trailer-truck(11) */ + 10, /* four-or-more-axle-single-unit-truck(10) */ + 6, /* light-truck-van(6) */ + 3, /* micromobile(3) */ + 4, /* motorcycle(4) */ + 5, /* passenger-car(5) */ + 1, /* pedestrian(1) */ + 17, /* rail(17) */ + 16, /* seven-or-more-axle-multi-trailer-truck(16) */ + 15, /* six-axle-multi-trailer-truck(15) */ + 13, /* six-or-more-axle-single-trailer-truck(13) */ + 9, /* three-axle-single-unit-truck(9) */ + 8, /* two-axle-six-tire-single-unit-truck(8) */ + 18 /* unclassified(18) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TrafficControlVehClass_specs_1 = { + asn_MAP_TrafficControlVehClass_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TrafficControlVehClass_enum2value_1, /* N => "tag"; sorted by N */ + 19, /* Number of elements in the maps */ + 20, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TrafficControlVehClass_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TrafficControlVehClass = { + "TrafficControlVehClass", + "TrafficControlVehClass", + &asn_OP_NativeEnumerated, + asn_DEF_TrafficControlVehClass_tags_1, + sizeof(asn_DEF_TrafficControlVehClass_tags_1) + /sizeof(asn_DEF_TrafficControlVehClass_tags_1[0]), /* 1 */ + asn_DEF_TrafficControlVehClass_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficControlVehClass_tags_1) + /sizeof(asn_DEF_TrafficControlVehClass_tags_1[0]), /* 1 */ + { &asn_OER_type_TrafficControlVehClass_constr_1, &asn_PER_type_TrafficControlVehClass_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TrafficControlVehClass_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrailerData.c b/src/tmx/Asn_J2735/src/r2020/TrailerData.c new file mode 100644 index 000000000..bf427d222 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrailerData.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TrailerData.h" + +asn_TYPE_member_t asn_MBR_TrailerData_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrailerData, notUsed), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SSPindex, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "notUsed" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrailerData, connection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PivotPointDescription, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "connection" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrailerData, units), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrailerUnitDescriptionList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "units" + }, +}; +static const ber_tlv_tag_t asn_DEF_TrailerData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrailerData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* notUsed */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* connection */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* units */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrailerData_specs_1 = { + sizeof(struct TrailerData), + offsetof(struct TrailerData, _asn_ctx), + asn_MAP_TrailerData_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrailerData = { + "TrailerData", + "TrailerData", + &asn_OP_SEQUENCE, + asn_DEF_TrailerData_tags_1, + sizeof(asn_DEF_TrailerData_tags_1) + /sizeof(asn_DEF_TrailerData_tags_1[0]), /* 1 */ + asn_DEF_TrailerData_tags_1, /* Same as above */ + sizeof(asn_DEF_TrailerData_tags_1) + /sizeof(asn_DEF_TrailerData_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TrailerData_1, + 3, /* Elements count */ + &asn_SPC_TrailerData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrailerHistoryPoint.c b/src/tmx/Asn_J2735/src/r2020/TrailerHistoryPoint.c new file mode 100644 index 000000000..d35fdf97e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrailerHistoryPoint.c @@ -0,0 +1,140 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TrailerHistoryPoint.h" + +asn_TYPE_member_t asn_MBR_TrailerHistoryPoint_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrailerHistoryPoint, pivotAngle), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_Angle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pivotAngle" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrailerHistoryPoint, timeOffset), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeOffset, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeOffset" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrailerHistoryPoint, positionOffset), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_XY_24b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "positionOffset" + }, + { ATF_POINTER, 2, offsetof(struct TrailerHistoryPoint, elevationOffset), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VertOffset_B07, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elevationOffset" + }, + { ATF_POINTER, 1, offsetof(struct TrailerHistoryPoint, heading), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CoarseHeading, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "heading" + }, +}; +static const int asn_MAP_TrailerHistoryPoint_oms_1[] = { 3, 4 }; +static const ber_tlv_tag_t asn_DEF_TrailerHistoryPoint_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrailerHistoryPoint_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pivotAngle */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timeOffset */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* positionOffset */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* elevationOffset */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* heading */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrailerHistoryPoint_specs_1 = { + sizeof(struct TrailerHistoryPoint), + offsetof(struct TrailerHistoryPoint, _asn_ctx), + asn_MAP_TrailerHistoryPoint_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_TrailerHistoryPoint_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrailerHistoryPoint = { + "TrailerHistoryPoint", + "TrailerHistoryPoint", + &asn_OP_SEQUENCE, + asn_DEF_TrailerHistoryPoint_tags_1, + sizeof(asn_DEF_TrailerHistoryPoint_tags_1) + /sizeof(asn_DEF_TrailerHistoryPoint_tags_1[0]), /* 1 */ + asn_DEF_TrailerHistoryPoint_tags_1, /* Same as above */ + sizeof(asn_DEF_TrailerHistoryPoint_tags_1) + /sizeof(asn_DEF_TrailerHistoryPoint_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TrailerHistoryPoint_1, + 5, /* Elements count */ + &asn_SPC_TrailerHistoryPoint_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrailerHistoryPointList.c b/src/tmx/Asn_J2735/src/r2020/TrailerHistoryPointList.c new file mode 100644 index 000000000..a9a5bf61a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrailerHistoryPointList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TrailerHistoryPointList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrailerHistoryPointList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..23)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TrailerHistoryPointList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 23 } /* (SIZE(1..23)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_TrailerHistoryPointList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TrailerHistoryPoint, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TrailerHistoryPointList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TrailerHistoryPointList_specs_1 = { + sizeof(struct TrailerHistoryPointList), + offsetof(struct TrailerHistoryPointList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TrailerHistoryPointList = { + "TrailerHistoryPointList", + "TrailerHistoryPointList", + &asn_OP_SEQUENCE_OF, + asn_DEF_TrailerHistoryPointList_tags_1, + sizeof(asn_DEF_TrailerHistoryPointList_tags_1) + /sizeof(asn_DEF_TrailerHistoryPointList_tags_1[0]), /* 1 */ + asn_DEF_TrailerHistoryPointList_tags_1, /* Same as above */ + sizeof(asn_DEF_TrailerHistoryPointList_tags_1) + /sizeof(asn_DEF_TrailerHistoryPointList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrailerHistoryPointList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrailerHistoryPointList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_TrailerHistoryPointList_1, + 1, /* Single element */ + &asn_SPC_TrailerHistoryPointList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrailerMass.c b/src/tmx/Asn_J2735/src/r2020/TrailerMass.c new file mode 100644 index 000000000..d33648a11 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrailerMass.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TrailerMass.h" + +int +TrailerMass_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrailerMass_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TrailerMass_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TrailerMass_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TrailerMass = { + "TrailerMass", + "TrailerMass", + &asn_OP_NativeInteger, + asn_DEF_TrailerMass_tags_1, + sizeof(asn_DEF_TrailerMass_tags_1) + /sizeof(asn_DEF_TrailerMass_tags_1[0]), /* 1 */ + asn_DEF_TrailerMass_tags_1, /* Same as above */ + sizeof(asn_DEF_TrailerMass_tags_1) + /sizeof(asn_DEF_TrailerMass_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrailerMass_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrailerMass_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TrailerMass_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrailerUnitDescription.c b/src/tmx/Asn_J2735/src/r2020/TrailerUnitDescription.c new file mode 100644 index 000000000..e6391a995 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrailerUnitDescription.c @@ -0,0 +1,284 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TrailerUnitDescription.h" + +asn_TYPE_member_t asn_MBR_TrailerUnitDescription_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrailerUnitDescription, isDolly), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IsDolly, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "isDolly" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrailerUnitDescription, width), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleWidth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "width" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrailerUnitDescription, length), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleLength, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "length" + }, + { ATF_POINTER, 4, offsetof(struct TrailerUnitDescription, height), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleHeight, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "height" + }, + { ATF_POINTER, 3, offsetof(struct TrailerUnitDescription, mass), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrailerMass, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mass" + }, + { ATF_POINTER, 2, offsetof(struct TrailerUnitDescription, bumperHeights), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BumperHeights, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "bumperHeights" + }, + { ATF_POINTER, 1, offsetof(struct TrailerUnitDescription, centerOfGravity), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleHeight, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "centerOfGravity" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrailerUnitDescription, frontPivot), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PivotPointDescription, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "frontPivot" + }, + { ATF_POINTER, 2, offsetof(struct TrailerUnitDescription, rearPivot), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PivotPointDescription, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rearPivot" + }, + { ATF_POINTER, 1, offsetof(struct TrailerUnitDescription, rearWheelOffset), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Offset_B12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rearWheelOffset" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrailerUnitDescription, positionOffset), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Node_XY_24b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "positionOffset" + }, + { ATF_POINTER, 2, offsetof(struct TrailerUnitDescription, elevationOffset), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VertOffset_B07, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elevationOffset" + }, + { ATF_POINTER, 1, offsetof(struct TrailerUnitDescription, crumbData), + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrailerHistoryPointList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "crumbData" + }, +}; +static const int asn_MAP_TrailerUnitDescription_oms_1[] = { 3, 4, 5, 6, 8, 9, 11, 12 }; +static const ber_tlv_tag_t asn_DEF_TrailerUnitDescription_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrailerUnitDescription_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* isDolly */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* width */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* length */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* height */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* mass */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* bumperHeights */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* centerOfGravity */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* frontPivot */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* rearPivot */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* rearWheelOffset */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* positionOffset */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* elevationOffset */ + { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 } /* crumbData */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrailerUnitDescription_specs_1 = { + sizeof(struct TrailerUnitDescription), + offsetof(struct TrailerUnitDescription, _asn_ctx), + asn_MAP_TrailerUnitDescription_tag2el_1, + 13, /* Count of tags in the map */ + asn_MAP_TrailerUnitDescription_oms_1, /* Optional members */ + 8, 0, /* Root/Additions */ + 13, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrailerUnitDescription = { + "TrailerUnitDescription", + "TrailerUnitDescription", + &asn_OP_SEQUENCE, + asn_DEF_TrailerUnitDescription_tags_1, + sizeof(asn_DEF_TrailerUnitDescription_tags_1) + /sizeof(asn_DEF_TrailerUnitDescription_tags_1[0]), /* 1 */ + asn_DEF_TrailerUnitDescription_tags_1, /* Same as above */ + sizeof(asn_DEF_TrailerUnitDescription_tags_1) + /sizeof(asn_DEF_TrailerUnitDescription_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TrailerUnitDescription_1, + 13, /* Elements count */ + &asn_SPC_TrailerUnitDescription_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrailerUnitDescriptionList.c b/src/tmx/Asn_J2735/src/r2020/TrailerUnitDescriptionList.c new file mode 100644 index 000000000..527a15be5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrailerUnitDescriptionList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TrailerUnitDescriptionList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrailerUnitDescriptionList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TrailerUnitDescriptionList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_TrailerUnitDescriptionList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TrailerUnitDescription, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TrailerUnitDescriptionList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TrailerUnitDescriptionList_specs_1 = { + sizeof(struct TrailerUnitDescriptionList), + offsetof(struct TrailerUnitDescriptionList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TrailerUnitDescriptionList = { + "TrailerUnitDescriptionList", + "TrailerUnitDescriptionList", + &asn_OP_SEQUENCE_OF, + asn_DEF_TrailerUnitDescriptionList_tags_1, + sizeof(asn_DEF_TrailerUnitDescriptionList_tags_1) + /sizeof(asn_DEF_TrailerUnitDescriptionList_tags_1[0]), /* 1 */ + asn_DEF_TrailerUnitDescriptionList_tags_1, /* Same as above */ + sizeof(asn_DEF_TrailerUnitDescriptionList_tags_1) + /sizeof(asn_DEF_TrailerUnitDescriptionList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrailerUnitDescriptionList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrailerUnitDescriptionList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_TrailerUnitDescriptionList_1, + 1, /* Single element */ + &asn_SPC_TrailerUnitDescriptionList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TrailerWeight.c b/src/tmx/Asn_J2735/src/r2020/TrailerWeight.c new file mode 100644 index 000000000..01269149f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TrailerWeight.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TrailerWeight.h" + +int +TrailerWeight_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 64255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrailerWeight_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..64255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TrailerWeight_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 64255 } /* (0..64255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TrailerWeight_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TrailerWeight = { + "TrailerWeight", + "TrailerWeight", + &asn_OP_NativeInteger, + asn_DEF_TrailerWeight_tags_1, + sizeof(asn_DEF_TrailerWeight_tags_1) + /sizeof(asn_DEF_TrailerWeight_tags_1[0]), /* 1 */ + asn_DEF_TrailerWeight_tags_1, /* Same as above */ + sizeof(asn_DEF_TrailerWeight_tags_1) + /sizeof(asn_DEF_TrailerWeight_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrailerWeight_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrailerWeight_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TrailerWeight_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TransitStatus.c b/src/tmx/Asn_J2735/src/r2020/TransitStatus.c new file mode 100644 index 000000000..c9a0812c5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TransitStatus.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TransitStatus.h" + +int +TransitStatus_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 6UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TransitStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + 6 /* (SIZE(6..6)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_TransitStatus_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 6, 6 } /* (SIZE(6..6)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TransitStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TransitStatus = { + "TransitStatus", + "TransitStatus", + &asn_OP_BIT_STRING, + asn_DEF_TransitStatus_tags_1, + sizeof(asn_DEF_TransitStatus_tags_1) + /sizeof(asn_DEF_TransitStatus_tags_1[0]), /* 1 */ + asn_DEF_TransitStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_TransitStatus_tags_1) + /sizeof(asn_DEF_TransitStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TransitStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TransitStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TransitStatus_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TransitVehicleOccupancy.c b/src/tmx/Asn_J2735/src/r2020/TransitVehicleOccupancy.c new file mode 100644 index 000000000..e03cd666a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TransitVehicleOccupancy.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TransitVehicleOccupancy.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TransitVehicleOccupancy_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TransitVehicleOccupancy_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TransitVehicleOccupancy_value2enum_1[] = { + { 0, 16, "occupancyUnknown" }, + { 1, 14, "occupancyEmpty" }, + { 2, 16, "occupancyVeryLow" }, + { 3, 12, "occupancyLow" }, + { 4, 12, "occupancyMed" }, + { 5, 13, "occupancyHigh" }, + { 6, 19, "occupancyNearlyFull" }, + { 7, 13, "occupancyFull" } +}; +static const unsigned int asn_MAP_TransitVehicleOccupancy_enum2value_1[] = { + 1, /* occupancyEmpty(1) */ + 7, /* occupancyFull(7) */ + 5, /* occupancyHigh(5) */ + 3, /* occupancyLow(3) */ + 4, /* occupancyMed(4) */ + 6, /* occupancyNearlyFull(6) */ + 0, /* occupancyUnknown(0) */ + 2 /* occupancyVeryLow(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TransitVehicleOccupancy_specs_1 = { + asn_MAP_TransitVehicleOccupancy_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TransitVehicleOccupancy_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TransitVehicleOccupancy_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TransitVehicleOccupancy = { + "TransitVehicleOccupancy", + "TransitVehicleOccupancy", + &asn_OP_NativeEnumerated, + asn_DEF_TransitVehicleOccupancy_tags_1, + sizeof(asn_DEF_TransitVehicleOccupancy_tags_1) + /sizeof(asn_DEF_TransitVehicleOccupancy_tags_1[0]), /* 1 */ + asn_DEF_TransitVehicleOccupancy_tags_1, /* Same as above */ + sizeof(asn_DEF_TransitVehicleOccupancy_tags_1) + /sizeof(asn_DEF_TransitVehicleOccupancy_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TransitVehicleOccupancy_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TransitVehicleOccupancy_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TransitVehicleOccupancy_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TransitVehicleStatus.c b/src/tmx/Asn_J2735/src/r2020/TransitVehicleStatus.c new file mode 100644 index 000000000..f9d4f1e0b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TransitVehicleStatus.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SignalRequestMessage" + * found in "J2735-SignalRequestMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TransitVehicleStatus.h" + +int +TransitVehicleStatus_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TransitVehicleStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + 8 /* (SIZE(8..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TransitVehicleStatus_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TransitVehicleStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TransitVehicleStatus = { + "TransitVehicleStatus", + "TransitVehicleStatus", + &asn_OP_BIT_STRING, + asn_DEF_TransitVehicleStatus_tags_1, + sizeof(asn_DEF_TransitVehicleStatus_tags_1) + /sizeof(asn_DEF_TransitVehicleStatus_tags_1[0]), /* 1 */ + asn_DEF_TransitVehicleStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_TransitVehicleStatus_tags_1) + /sizeof(asn_DEF_TransitVehicleStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TransitVehicleStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TransitVehicleStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TransitVehicleStatus_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TransmissionAndSpeed.c b/src/tmx/Asn_J2735/src/r2020/TransmissionAndSpeed.c new file mode 100644 index 000000000..b757889f7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TransmissionAndSpeed.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TransmissionAndSpeed.h" + +asn_TYPE_member_t asn_MBR_TransmissionAndSpeed_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TransmissionAndSpeed, transmisson), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransmissionState, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "transmisson" + }, + { ATF_NOFLAGS, 0, offsetof(struct TransmissionAndSpeed, speed), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Velocity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speed" + }, +}; +static const ber_tlv_tag_t asn_DEF_TransmissionAndSpeed_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TransmissionAndSpeed_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transmisson */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* speed */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TransmissionAndSpeed_specs_1 = { + sizeof(struct TransmissionAndSpeed), + offsetof(struct TransmissionAndSpeed, _asn_ctx), + asn_MAP_TransmissionAndSpeed_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TransmissionAndSpeed = { + "TransmissionAndSpeed", + "TransmissionAndSpeed", + &asn_OP_SEQUENCE, + asn_DEF_TransmissionAndSpeed_tags_1, + sizeof(asn_DEF_TransmissionAndSpeed_tags_1) + /sizeof(asn_DEF_TransmissionAndSpeed_tags_1[0]), /* 1 */ + asn_DEF_TransmissionAndSpeed_tags_1, /* Same as above */ + sizeof(asn_DEF_TransmissionAndSpeed_tags_1) + /sizeof(asn_DEF_TransmissionAndSpeed_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TransmissionAndSpeed_1, + 2, /* Elements count */ + &asn_SPC_TransmissionAndSpeed_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TransmissionState.c b/src/tmx/Asn_J2735/src/r2020/TransmissionState.c new file mode 100644 index 000000000..9aa9c336d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TransmissionState.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TransmissionState.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TransmissionState_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TransmissionState_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TransmissionState_value2enum_1[] = { + { 0, 7, "neutral" }, + { 1, 4, "park" }, + { 2, 12, "forwardGears" }, + { 3, 12, "reverseGears" }, + { 4, 9, "reserved1" }, + { 5, 9, "reserved2" }, + { 6, 9, "reserved3" }, + { 7, 11, "unavailable" } +}; +static const unsigned int asn_MAP_TransmissionState_enum2value_1[] = { + 2, /* forwardGears(2) */ + 0, /* neutral(0) */ + 1, /* park(1) */ + 4, /* reserved1(4) */ + 5, /* reserved2(5) */ + 6, /* reserved3(6) */ + 3, /* reverseGears(3) */ + 7 /* unavailable(7) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TransmissionState_specs_1 = { + asn_MAP_TransmissionState_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TransmissionState_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TransmissionState_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TransmissionState = { + "TransmissionState", + "TransmissionState", + &asn_OP_NativeEnumerated, + asn_DEF_TransmissionState_tags_1, + sizeof(asn_DEF_TransmissionState_tags_1) + /sizeof(asn_DEF_TransmissionState_tags_1[0]), /* 1 */ + asn_DEF_TransmissionState_tags_1, /* Same as above */ + sizeof(asn_DEF_TransmissionState_tags_1) + /sizeof(asn_DEF_TransmissionState_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TransmissionState_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TransmissionState_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TransmissionState_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TravelerDataFrame.c b/src/tmx/Asn_J2735/src/r2020/TravelerDataFrame.c new file mode 100644 index 000000000..1ae5d9b3d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TravelerDataFrame.c @@ -0,0 +1,611 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TravelerDataFrame.h" + +static int +memb_regions_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 16UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_msgId_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_msgId_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regions_constr_12 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regions_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_content_constr_16 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_content_constr_16 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 4 } /* (0..4) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regions_constr_12 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regions_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_msgId_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame__msgId, choice.furtherInfoID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FurtherInfoID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "furtherInfoID" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame__msgId, choice.roadSignID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadSignID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "roadSignID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_msgId_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* furtherInfoID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* roadSignID */ +}; +static asn_CHOICE_specifics_t asn_SPC_msgId_specs_4 = { + sizeof(struct TravelerDataFrame__msgId), + offsetof(struct TravelerDataFrame__msgId, _asn_ctx), + offsetof(struct TravelerDataFrame__msgId, present), + sizeof(((struct TravelerDataFrame__msgId *)0)->present), + asn_MAP_msgId_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_msgId_4 = { + "msgId", + "msgId", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_msgId_constr_4, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_msgId_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_msgId_4, + 2, /* Elements count */ + &asn_SPC_msgId_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_regions_12[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GeographicalPath, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regions_tags_12[] = { + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regions_specs_12 = { + sizeof(struct TravelerDataFrame__regions), + offsetof(struct TravelerDataFrame__regions, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regions_12 = { + "regions", + "regions", + &asn_OP_SEQUENCE_OF, + asn_DEF_regions_tags_12, + sizeof(asn_DEF_regions_tags_12) + /sizeof(asn_DEF_regions_tags_12[0]) - 1, /* 1 */ + asn_DEF_regions_tags_12, /* Same as above */ + sizeof(asn_DEF_regions_tags_12) + /sizeof(asn_DEF_regions_tags_12[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regions_constr_12, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regions_constr_12, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regions_12, + 1, /* Single element */ + &asn_SPC_regions_specs_12 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_content_16[] = { + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame__content, choice.advisory), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIScodesAndText, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "advisory" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame__content, choice.workZone), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WorkZone, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "workZone" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame__content, choice.genericSign), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GenericSignage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "genericSign" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame__content, choice.speedLimit), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedLimit, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedLimit" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame__content, choice.exitService), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExitService, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "exitService" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_content_tag2el_16[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* advisory */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* workZone */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* genericSign */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* speedLimit */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* exitService */ +}; +static asn_CHOICE_specifics_t asn_SPC_content_specs_16 = { + sizeof(struct TravelerDataFrame__content), + offsetof(struct TravelerDataFrame__content, _asn_ctx), + offsetof(struct TravelerDataFrame__content, present), + sizeof(((struct TravelerDataFrame__content *)0)->present), + asn_MAP_content_tag2el_16, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_content_16 = { + "content", + "content", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_content_constr_16, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_content_constr_16, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_content_16, + 5, /* Elements count */ + &asn_SPC_content_specs_16 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TravelerDataFrame_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame, notUsed), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SSPindex, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "notUsed" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame, frameType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TravelerInfoType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "frameType" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame, msgId), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_msgId_4, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgId" + }, + { ATF_POINTER, 1, offsetof(struct TravelerDataFrame, startYear), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "startYear" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame, startTime), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "startTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame, durationTime), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinutesDuration, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "durationTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame, priority), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignPrority, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "priority" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame, notUsed1), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SSPindex, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "notUsed1" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame, regions), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + 0, + &asn_DEF_regions_12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regions_constr_12, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regions_constr_12, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regions_constraint_1 + }, + 0, 0, /* No default value */ + "regions" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame, notUsed2), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SSPindex, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "notUsed2" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame, notUsed3), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SSPindex, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "notUsed3" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerDataFrame, content), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_content_16, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "content" + }, + { ATF_POINTER, 1, offsetof(struct TravelerDataFrame, url), + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_URL_Short, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "url" + }, +}; +static const int asn_MAP_TravelerDataFrame_oms_1[] = { 3, 12 }; +static const ber_tlv_tag_t asn_DEF_TravelerDataFrame_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TravelerDataFrame_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* notUsed */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* frameType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* msgId */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* startYear */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* startTime */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* durationTime */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* priority */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* notUsed1 */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* regions */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* notUsed2 */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* notUsed3 */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* content */ + { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 } /* url */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TravelerDataFrame_specs_1 = { + sizeof(struct TravelerDataFrame), + offsetof(struct TravelerDataFrame, _asn_ctx), + asn_MAP_TravelerDataFrame_tag2el_1, + 13, /* Count of tags in the map */ + asn_MAP_TravelerDataFrame_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 13, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TravelerDataFrame = { + "TravelerDataFrame", + "TravelerDataFrame", + &asn_OP_SEQUENCE, + asn_DEF_TravelerDataFrame_tags_1, + sizeof(asn_DEF_TravelerDataFrame_tags_1) + /sizeof(asn_DEF_TravelerDataFrame_tags_1[0]), /* 1 */ + asn_DEF_TravelerDataFrame_tags_1, /* Same as above */ + sizeof(asn_DEF_TravelerDataFrame_tags_1) + /sizeof(asn_DEF_TravelerDataFrame_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TravelerDataFrame_1, + 13, /* Elements count */ + &asn_SPC_TravelerDataFrame_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TravelerDataFrameList.c b/src/tmx/Asn_J2735/src/r2020/TravelerDataFrameList.c new file mode 100644 index 000000000..08020f8da --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TravelerDataFrameList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TravelerDataFrameList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TravelerDataFrameList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TravelerDataFrameList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_TravelerDataFrameList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TravelerDataFrame, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TravelerDataFrameList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TravelerDataFrameList_specs_1 = { + sizeof(struct TravelerDataFrameList), + offsetof(struct TravelerDataFrameList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TravelerDataFrameList = { + "TravelerDataFrameList", + "TravelerDataFrameList", + &asn_OP_SEQUENCE_OF, + asn_DEF_TravelerDataFrameList_tags_1, + sizeof(asn_DEF_TravelerDataFrameList_tags_1) + /sizeof(asn_DEF_TravelerDataFrameList_tags_1[0]), /* 1 */ + asn_DEF_TravelerDataFrameList_tags_1, /* Same as above */ + sizeof(asn_DEF_TravelerDataFrameList_tags_1) + /sizeof(asn_DEF_TravelerDataFrameList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TravelerDataFrameList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TravelerDataFrameList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_TravelerDataFrameList_1, + 1, /* Single element */ + &asn_SPC_TravelerDataFrameList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TravelerInfoType.c b/src/tmx/Asn_J2735/src/r2020/TravelerInfoType.c new file mode 100644 index 000000000..15ebe03d8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TravelerInfoType.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TravelerInfoType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TravelerInfoType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TravelerInfoType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TravelerInfoType_value2enum_1[] = { + { 0, 7, "unknown" }, + { 1, 8, "advisory" }, + { 2, 11, "roadSignage" }, + { 3, 17, "commercialSignage" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TravelerInfoType_enum2value_1[] = { + 1, /* advisory(1) */ + 3, /* commercialSignage(3) */ + 2, /* roadSignage(2) */ + 0 /* unknown(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TravelerInfoType_specs_1 = { + asn_MAP_TravelerInfoType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TravelerInfoType_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TravelerInfoType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TravelerInfoType = { + "TravelerInfoType", + "TravelerInfoType", + &asn_OP_NativeEnumerated, + asn_DEF_TravelerInfoType_tags_1, + sizeof(asn_DEF_TravelerInfoType_tags_1) + /sizeof(asn_DEF_TravelerInfoType_tags_1[0]), /* 1 */ + asn_DEF_TravelerInfoType_tags_1, /* Same as above */ + sizeof(asn_DEF_TravelerInfoType_tags_1) + /sizeof(asn_DEF_TravelerInfoType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TravelerInfoType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TravelerInfoType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TravelerInfoType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/TravelerInformation.c b/src/tmx/Asn_J2735/src/r2020/TravelerInformation.c new file mode 100644 index 000000000..e64502f4d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/TravelerInformation.c @@ -0,0 +1,261 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "TravelerInformation.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_TravelerInformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_7 = { + sizeof(struct TravelerInformation__regional), + offsetof(struct TravelerInformation__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_7 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_7, + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]) - 1, /* 1 */ + asn_DEF_regional_tags_7, /* Same as above */ + sizeof(asn_DEF_regional_tags_7) + /sizeof(asn_DEF_regional_tags_7[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_7, + 1, /* Single element */ + &asn_SPC_regional_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TravelerInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TravelerInformation, msgCnt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_MsgCount, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "msgCnt" + }, + { ATF_POINTER, 3, offsetof(struct TravelerInformation, timeStamp), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MinuteOfTheYear, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeStamp" + }, + { ATF_POINTER, 2, offsetof(struct TravelerInformation, packetID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UniqueMSGID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "packetID" + }, + { ATF_POINTER, 1, offsetof(struct TravelerInformation, urlB), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_URL_Base, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "urlB" + }, + { ATF_NOFLAGS, 0, offsetof(struct TravelerInformation, dataFrames), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TravelerDataFrameList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dataFrames" + }, + { ATF_POINTER, 1, offsetof(struct TravelerInformation, regional), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + 0, + &asn_DEF_regional_7, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_TravelerInformation_oms_1[] = { 1, 2, 3, 5 }; +static const ber_tlv_tag_t asn_DEF_TravelerInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TravelerInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* msgCnt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* packetID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* urlB */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dataFrames */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TravelerInformation_specs_1 = { + sizeof(struct TravelerInformation), + offsetof(struct TravelerInformation, _asn_ctx), + asn_MAP_TravelerInformation_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_TravelerInformation_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TravelerInformation = { + "TravelerInformation", + "TravelerInformation", + &asn_OP_SEQUENCE, + asn_DEF_TravelerInformation_tags_1, + sizeof(asn_DEF_TravelerInformation_tags_1) + /sizeof(asn_DEF_TravelerInformation_tags_1[0]), /* 1 */ + asn_DEF_TravelerInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_TravelerInformation_tags_1) + /sizeof(asn_DEF_TravelerInformation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TravelerInformation_1, + 6, /* Elements count */ + &asn_SPC_TravelerInformation_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/URL-Base.c b/src/tmx/Asn_J2735/src/r2020/URL-Base.c new file mode 100644 index 000000000..4fce151b5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/URL-Base.c @@ -0,0 +1,91 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "URL-Base.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127UL)) return -1; + } + return 0; +} + +int +URL_Base_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 45UL) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_URL_Base_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..45)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_URL_Base_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 6, 6, 1, 45 } /* (SIZE(1..45)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_URL_Base_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_URL_Base = { + "URL-Base", + "URL-Base", + &asn_OP_IA5String, + asn_DEF_URL_Base_tags_1, + sizeof(asn_DEF_URL_Base_tags_1) + /sizeof(asn_DEF_URL_Base_tags_1[0]), /* 1 */ + asn_DEF_URL_Base_tags_1, /* Same as above */ + sizeof(asn_DEF_URL_Base_tags_1) + /sizeof(asn_DEF_URL_Base_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_URL_Base_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_URL_Base_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + URL_Base_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/URL-Link.c b/src/tmx/Asn_J2735/src/r2020/URL-Link.c new file mode 100644 index 000000000..b82bfb658 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/URL-Link.c @@ -0,0 +1,91 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "URL-Link.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127UL)) return -1; + } + return 0; +} + +int +URL_Link_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 255UL) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_URL_Link_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..255)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_URL_Link_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_URL_Link_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_URL_Link = { + "URL-Link", + "URL-Link", + &asn_OP_IA5String, + asn_DEF_URL_Link_tags_1, + sizeof(asn_DEF_URL_Link_tags_1) + /sizeof(asn_DEF_URL_Link_tags_1[0]), /* 1 */ + asn_DEF_URL_Link_tags_1, /* Same as above */ + sizeof(asn_DEF_URL_Link_tags_1) + /sizeof(asn_DEF_URL_Link_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_URL_Link_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_URL_Link_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + URL_Link_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/URL-Short.c b/src/tmx/Asn_J2735/src/r2020/URL-Short.c new file mode 100644 index 000000000..db293fff6 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/URL-Short.c @@ -0,0 +1,91 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "URL-Short.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127UL)) return -1; + } + return 0; +} + +int +URL_Short_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 15UL) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_URL_Short_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..15)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_URL_Short_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_URL_Short_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_URL_Short = { + "URL-Short", + "URL-Short", + &asn_OP_IA5String, + asn_DEF_URL_Short_tags_1, + sizeof(asn_DEF_URL_Short_tags_1) + /sizeof(asn_DEF_URL_Short_tags_1[0]), /* 1 */ + asn_DEF_URL_Short_tags_1, /* Same as above */ + sizeof(asn_DEF_URL_Short_tags_1) + /sizeof(asn_DEF_URL_Short_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_URL_Short_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_URL_Short_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + URL_Short_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/UniqueMSGID.c b/src/tmx/Asn_J2735/src/r2020/UniqueMSGID.c new file mode 100644 index 000000000..e16b0d1e3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/UniqueMSGID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "UniqueMSGID.h" + +int +UniqueMSGID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 9UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_UniqueMSGID_constr_1 CC_NOTUSED = { + { 0, 0 }, + 9 /* (SIZE(9..9)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_UniqueMSGID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 9, 9 } /* (SIZE(9..9)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_UniqueMSGID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UniqueMSGID = { + "UniqueMSGID", + "UniqueMSGID", + &asn_OP_OCTET_STRING, + asn_DEF_UniqueMSGID_tags_1, + sizeof(asn_DEF_UniqueMSGID_tags_1) + /sizeof(asn_DEF_UniqueMSGID_tags_1[0]), /* 1 */ + asn_DEF_UniqueMSGID_tags_1, /* Same as above */ + sizeof(asn_DEF_UniqueMSGID_tags_1) + /sizeof(asn_DEF_UniqueMSGID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_UniqueMSGID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_UniqueMSGID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + UniqueMSGID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/UserSizeAndBehaviour.c b/src/tmx/Asn_J2735/src/r2020/UserSizeAndBehaviour.c new file mode 100644 index 000000000..ea110d451 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/UserSizeAndBehaviour.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "PersonalSafetyMessage" + * found in "J2735-PersonalSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "UserSizeAndBehaviour.h" + +int +UserSizeAndBehaviour_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 5UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_UserSizeAndBehaviour_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_UserSizeAndBehaviour_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 5, 5 } /* (SIZE(5..5,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_UserSizeAndBehaviour_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UserSizeAndBehaviour = { + "UserSizeAndBehaviour", + "UserSizeAndBehaviour", + &asn_OP_BIT_STRING, + asn_DEF_UserSizeAndBehaviour_tags_1, + sizeof(asn_DEF_UserSizeAndBehaviour_tags_1) + /sizeof(asn_DEF_UserSizeAndBehaviour_tags_1[0]), /* 1 */ + asn_DEF_UserSizeAndBehaviour_tags_1, /* Same as above */ + sizeof(asn_DEF_UserSizeAndBehaviour_tags_1) + /sizeof(asn_DEF_UserSizeAndBehaviour_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_UserSizeAndBehaviour_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_UserSizeAndBehaviour_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + UserSizeAndBehaviour_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VINstring.c b/src/tmx/Asn_J2735/src/r2020/VINstring.c new file mode 100644 index 000000000..6bc34e8ae --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VINstring.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VINstring.h" + +int +VINstring_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 17UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VINstring_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..17)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VINstring_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 17 } /* (SIZE(1..17)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VINstring_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VINstring = { + "VINstring", + "VINstring", + &asn_OP_OCTET_STRING, + asn_DEF_VINstring_tags_1, + sizeof(asn_DEF_VINstring_tags_1) + /sizeof(asn_DEF_VINstring_tags_1[0]), /* 1 */ + asn_DEF_VINstring_tags_1, /* Same as above */ + sizeof(asn_DEF_VINstring_tags_1) + /sizeof(asn_DEF_VINstring_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VINstring_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VINstring_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VINstring_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VType.c b/src/tmx/Asn_J2735/src/r2020/VType.c new file mode 100644 index 000000000..8cb73e011 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VType.c @@ -0,0 +1,88 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "DSRC" + * found in "J2735_201603_ASN_CC.asn" + * `asn1c -gen-PER -fcompound-names -fincludes-quoted` + */ + +#include "VType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_VType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_VType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 17 } /* (0..17) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_VType_value2enum_1[] = { + { 0, 10, "pedestrian" }, + { 1, 7, "bicycle" }, + { 2, 11, "micromobile" }, + { 3, 10, "motorcycle" }, + { 4, 13, "passenger-car" }, + { 5, 15, "light-truck-van" }, + { 6, 3, "bus" }, + { 7, 35, "two-axle-six-tire-single-unit-truck" }, + { 8, 28, "three-axle-single-unit-truck" }, + { 9, 35, "four-or-more-axle-single-unit-truck" }, + { 10, 39, "four-or-fewer-axle-single-trailer-truck" }, + { 11, 30, "five-axle-single-trailer-truck" }, + { 12, 37, "six-or-more-axle-single-trailer-truck" }, + { 13, 38, "five-or-fewer-axle-multi-trailer-truck" }, + { 14, 28, "six-axle-multi-trailer-truck" }, + { 15, 38, "seven-or-more-axle-multi-trailer-truck" }, + { 16, 4, "rail" }, + { 17, 12, "unclassified" } +}; +static const unsigned int asn_MAP_VType_enum2value_1[] = { + 1, /* bicycle(1) */ + 6, /* bus(6) */ + 11, /* five-axle-single-trailer-truck(11) */ + 13, /* five-or-fewer-axle-multi-trailer-truck(13) */ + 10, /* four-or-fewer-axle-single-trailer-truck(10) */ + 9, /* four-or-more-axle-single-unit-truck(9) */ + 5, /* light-truck-van(5) */ + 2, /* micromobile(2) */ + 3, /* motorcycle(3) */ + 4, /* passenger-car(4) */ + 0, /* pedestrian(0) */ + 16, /* rail(16) */ + 15, /* seven-or-more-axle-multi-trailer-truck(15) */ + 14, /* six-axle-multi-trailer-truck(14) */ + 12, /* six-or-more-axle-single-trailer-truck(12) */ + 8, /* three-axle-single-unit-truck(8) */ + 7, /* two-axle-six-tire-single-unit-truck(7) */ + 17 /* unclassified(17) */ +}; +const asn_INTEGER_specifics_t asn_SPC_VType_specs_1 = { + asn_MAP_VType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VType_enum2value_1, /* N => "tag"; sorted by N */ + 18, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VType = { + "VType", + "VType", + &asn_OP_NativeEnumerated, + asn_DEF_VType_tags_1, + sizeof(asn_DEF_VType_tags_1) + /sizeof(asn_DEF_VType_tags_1[0]), /* 1 */ + asn_DEF_VType_tags_1, /* Same as above */ + sizeof(asn_DEF_VType_tags_1) + /sizeof(asn_DEF_VType_tags_1[0]), /* 1 */ + { &asn_OER_type_VType_constr_1, &asn_PER_type_VType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ValidRegion.c b/src/tmx/Asn_J2735/src/r2020/ValidRegion.c new file mode 100644 index 000000000..e500c2fc2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ValidRegion.c @@ -0,0 +1,207 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ValidRegion.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_area_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_area_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_area_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct ValidRegion__area, choice.shapePointSet), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ShapePointSet, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "shapePointSet" + }, + { ATF_NOFLAGS, 0, offsetof(struct ValidRegion__area, choice.circle), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Circle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "circle" + }, + { ATF_NOFLAGS, 0, offsetof(struct ValidRegion__area, choice.regionPointSet), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RegionPointSet, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regionPointSet" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_area_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* shapePointSet */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* circle */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* regionPointSet */ +}; +static asn_CHOICE_specifics_t asn_SPC_area_specs_4 = { + sizeof(struct ValidRegion__area), + offsetof(struct ValidRegion__area, _asn_ctx), + offsetof(struct ValidRegion__area, present), + sizeof(((struct ValidRegion__area *)0)->present), + asn_MAP_area_tag2el_4, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_area_4 = { + "area", + "area", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_area_constr_4, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_area_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_area_4, + 3, /* Elements count */ + &asn_SPC_area_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ValidRegion_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ValidRegion, direction), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingSlice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "direction" + }, + { ATF_POINTER, 1, offsetof(struct ValidRegion, extent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Extent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "extent" + }, + { ATF_NOFLAGS, 0, offsetof(struct ValidRegion, area), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_area_4, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "area" + }, +}; +static const int asn_MAP_ValidRegion_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ValidRegion_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ValidRegion_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* direction */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* extent */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* area */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ValidRegion_specs_1 = { + sizeof(struct ValidRegion), + offsetof(struct ValidRegion, _asn_ctx), + asn_MAP_ValidRegion_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ValidRegion_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ValidRegion = { + "ValidRegion", + "ValidRegion", + &asn_OP_SEQUENCE, + asn_DEF_ValidRegion_tags_1, + sizeof(asn_DEF_ValidRegion_tags_1) + /sizeof(asn_DEF_ValidRegion_tags_1[0]), /* 1 */ + asn_DEF_ValidRegion_tags_1, /* Same as above */ + sizeof(asn_DEF_ValidRegion_tags_1) + /sizeof(asn_DEF_ValidRegion_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ValidRegion_1, + 3, /* Elements count */ + &asn_SPC_ValidRegion_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleClassification.c b/src/tmx/Asn_J2735/src/r2020/VehicleClassification.c new file mode 100644 index 000000000..a34c4a55d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleClassification.c @@ -0,0 +1,315 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleClassification.h" + +static int +memb_regional_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 4UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_regional_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_regional_constr_10 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_regional_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_regional_constr_10 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_regional_10[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Reg_VehicleClassification, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_regional_tags_10[] = { + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_regional_specs_10 = { + sizeof(struct VehicleClassification__regional), + offsetof(struct VehicleClassification__regional, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_regional_10 = { + "regional", + "regional", + &asn_OP_SEQUENCE_OF, + asn_DEF_regional_tags_10, + sizeof(asn_DEF_regional_tags_10) + /sizeof(asn_DEF_regional_tags_10[0]) - 1, /* 1 */ + asn_DEF_regional_tags_10, /* Same as above */ + sizeof(asn_DEF_regional_tags_10) + /sizeof(asn_DEF_regional_tags_10[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_regional_constr_10, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_regional_constr_10, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_regional_10, + 1, /* Single element */ + &asn_SPC_regional_specs_10 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_VehicleClassification_1[] = { + { ATF_POINTER, 9, offsetof(struct VehicleClassification, keyType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BasicVehicleClass, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "keyType" + }, + { ATF_POINTER, 8, offsetof(struct VehicleClassification, role), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BasicVehicleRole, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "role" + }, + { ATF_POINTER, 7, offsetof(struct VehicleClassification, iso3883), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Iso3833VehicleType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "iso3883" + }, + { ATF_POINTER, 6, offsetof(struct VehicleClassification, hpmsType), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hpmsType" + }, + { ATF_POINTER, 5, offsetof(struct VehicleClassification, vehicleType), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleGroupAffected, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleType" + }, + { ATF_POINTER, 4, offsetof(struct VehicleClassification, responseEquip), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IncidentResponseEquipment, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "responseEquip" + }, + { ATF_POINTER, 3, offsetof(struct VehicleClassification, responderType), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponderGroupAffected, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "responderType" + }, + { ATF_POINTER, 2, offsetof(struct VehicleClassification, fuelType), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FuelType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "fuelType" + }, + { ATF_POINTER, 1, offsetof(struct VehicleClassification, regional), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + 0, + &asn_DEF_regional_10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_regional_constr_10, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_regional_constr_10, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_regional_constraint_1 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const int asn_MAP_VehicleClassification_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; +static const ber_tlv_tag_t asn_DEF_VehicleClassification_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleClassification_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* keyType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* role */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* iso3883 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* hpmsType */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* vehicleType */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* responseEquip */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* responderType */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* fuelType */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* regional */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VehicleClassification_specs_1 = { + sizeof(struct VehicleClassification), + offsetof(struct VehicleClassification, _asn_ctx), + asn_MAP_VehicleClassification_tag2el_1, + 9, /* Count of tags in the map */ + asn_MAP_VehicleClassification_oms_1, /* Optional members */ + 9, 0, /* Root/Additions */ + 9, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleClassification = { + "VehicleClassification", + "VehicleClassification", + &asn_OP_SEQUENCE, + asn_DEF_VehicleClassification_tags_1, + sizeof(asn_DEF_VehicleClassification_tags_1) + /sizeof(asn_DEF_VehicleClassification_tags_1[0]), /* 1 */ + asn_DEF_VehicleClassification_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleClassification_tags_1) + /sizeof(asn_DEF_VehicleClassification_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VehicleClassification_1, + 9, /* Elements count */ + &asn_SPC_VehicleClassification_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleData.c b/src/tmx/Asn_J2735/src/r2020/VehicleData.c new file mode 100644 index 000000000..878f24cc6 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleData.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleData.h" + +asn_TYPE_member_t asn_MBR_VehicleData_1[] = { + { ATF_POINTER, 4, offsetof(struct VehicleData, height), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleHeight, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "height" + }, + { ATF_POINTER, 3, offsetof(struct VehicleData, bumpers), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BumperHeights, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "bumpers" + }, + { ATF_POINTER, 2, offsetof(struct VehicleData, mass), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleMass, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mass" + }, + { ATF_POINTER, 1, offsetof(struct VehicleData, trailerWeight), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrailerWeight, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trailerWeight" + }, +}; +static const int asn_MAP_VehicleData_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_VehicleData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* height */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* bumpers */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mass */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* trailerWeight */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VehicleData_specs_1 = { + sizeof(struct VehicleData), + offsetof(struct VehicleData, _asn_ctx), + asn_MAP_VehicleData_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_VehicleData_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleData = { + "VehicleData", + "VehicleData", + &asn_OP_SEQUENCE, + asn_DEF_VehicleData_tags_1, + sizeof(asn_DEF_VehicleData_tags_1) + /sizeof(asn_DEF_VehicleData_tags_1[0]), /* 1 */ + asn_DEF_VehicleData_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleData_tags_1) + /sizeof(asn_DEF_VehicleData_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VehicleData_1, + 4, /* Elements count */ + &asn_SPC_VehicleData_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleEventFlags.c b/src/tmx/Asn_J2735/src/r2020/VehicleEventFlags.c new file mode 100644 index 000000000..31fd306c5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleEventFlags.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleEventFlags.h" + +int +VehicleEventFlags_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 13UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleEventFlags_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleEventFlags_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 13, 13 } /* (SIZE(13..13,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VehicleEventFlags_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleEventFlags = { + "VehicleEventFlags", + "VehicleEventFlags", + &asn_OP_BIT_STRING, + asn_DEF_VehicleEventFlags_tags_1, + sizeof(asn_DEF_VehicleEventFlags_tags_1) + /sizeof(asn_DEF_VehicleEventFlags_tags_1[0]), /* 1 */ + asn_DEF_VehicleEventFlags_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleEventFlags_tags_1) + /sizeof(asn_DEF_VehicleEventFlags_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleEventFlags_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleEventFlags_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VehicleEventFlags_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleGroupAffected.c b/src/tmx/Asn_J2735/src/r2020/VehicleGroupAffected.c new file mode 100644 index 000000000..a5efa8d03 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleGroupAffected.c @@ -0,0 +1,136 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ITIS" + * found in "J2735-ITIS.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleGroupAffected.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleGroupAffected_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleGroupAffected_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 0, 34 } /* (0..34,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VehicleGroupAffected_value2enum_1[] = { + { 9217, 12, "all-vehicles" }, + { 9218, 8, "bicycles" }, + { 9219, 11, "motorcycles" }, + { 9220, 4, "cars" }, + { 9221, 14, "light-vehicles" }, + { 9222, 23, "cars-and-light-vehicles" }, + { 9223, 18, "cars-with-trailers" }, + { 9224, 31, "cars-with-recreational-trailers" }, + { 9225, 22, "vehicles-with-trailers" }, + { 9226, 14, "heavy-vehicles" }, + { 9227, 6, "trucks" }, + { 9228, 5, "buses" }, + { 9229, 17, "articulated-buses" }, + { 9230, 12, "school-buses" }, + { 9231, 27, "vehicles-with-semi-trailers" }, + { 9232, 29, "vehicles-with-double-trailers" }, + { 9233, 21, "high-profile-vehicles" }, + { 9234, 13, "wide-vehicles" }, + { 9235, 13, "long-vehicles" }, + { 9236, 15, "hazardous-loads" }, + { 9237, 17, "exceptional-loads" }, + { 9238, 14, "abnormal-loads" }, + { 9239, 7, "convoys" }, + { 9240, 20, "maintenance-vehicles" }, + { 9241, 17, "delivery-vehicles" }, + { 9242, 42, "vehicles-with-even-numbered-license-plates" }, + { 9243, 41, "vehicles-with-odd-numbered-license-plates" }, + { 9244, 29, "vehicles-with-parking-permits" }, + { 9245, 34, "vehicles-with-catalytic-converters" }, + { 9246, 37, "vehicles-without-catalytic-converters" }, + { 9247, 20, "gas-powered-vehicles" }, + { 9248, 23, "diesel-powered-vehicles" }, + { 9249, 12, "lPG-vehicles" }, + { 9250, 16, "military-convoys" }, + { 9251, 17, "military-vehicles" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_VehicleGroupAffected_enum2value_1[] = { + 21, /* abnormal-loads(9238) */ + 0, /* all-vehicles(9217) */ + 12, /* articulated-buses(9229) */ + 1, /* bicycles(9218) */ + 11, /* buses(9228) */ + 3, /* cars(9220) */ + 5, /* cars-and-light-vehicles(9222) */ + 7, /* cars-with-recreational-trailers(9224) */ + 6, /* cars-with-trailers(9223) */ + 22, /* convoys(9239) */ + 24, /* delivery-vehicles(9241) */ + 31, /* diesel-powered-vehicles(9248) */ + 20, /* exceptional-loads(9237) */ + 30, /* gas-powered-vehicles(9247) */ + 19, /* hazardous-loads(9236) */ + 9, /* heavy-vehicles(9226) */ + 16, /* high-profile-vehicles(9233) */ + 32, /* lPG-vehicles(9249) */ + 4, /* light-vehicles(9221) */ + 18, /* long-vehicles(9235) */ + 23, /* maintenance-vehicles(9240) */ + 33, /* military-convoys(9250) */ + 34, /* military-vehicles(9251) */ + 2, /* motorcycles(9219) */ + 13, /* school-buses(9230) */ + 10, /* trucks(9227) */ + 28, /* vehicles-with-catalytic-converters(9245) */ + 15, /* vehicles-with-double-trailers(9232) */ + 25, /* vehicles-with-even-numbered-license-plates(9242) */ + 26, /* vehicles-with-odd-numbered-license-plates(9243) */ + 27, /* vehicles-with-parking-permits(9244) */ + 14, /* vehicles-with-semi-trailers(9231) */ + 8, /* vehicles-with-trailers(9225) */ + 29, /* vehicles-without-catalytic-converters(9246) */ + 17 /* wide-vehicles(9234) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_VehicleGroupAffected_specs_1 = { + asn_MAP_VehicleGroupAffected_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VehicleGroupAffected_enum2value_1, /* N => "tag"; sorted by N */ + 35, /* Number of elements in the maps */ + 36, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VehicleGroupAffected_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleGroupAffected = { + "VehicleGroupAffected", + "VehicleGroupAffected", + &asn_OP_NativeEnumerated, + asn_DEF_VehicleGroupAffected_tags_1, + sizeof(asn_DEF_VehicleGroupAffected_tags_1) + /sizeof(asn_DEF_VehicleGroupAffected_tags_1[0]), /* 1 */ + asn_DEF_VehicleGroupAffected_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleGroupAffected_tags_1) + /sizeof(asn_DEF_VehicleGroupAffected_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleGroupAffected_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleGroupAffected_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VehicleGroupAffected_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleHeight.c b/src/tmx/Asn_J2735/src/r2020/VehicleHeight.c new file mode 100644 index 000000000..5abb6b655 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleHeight.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleHeight.h" + +int +VehicleHeight_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 127L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleHeight_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleHeight_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VehicleHeight_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleHeight = { + "VehicleHeight", + "VehicleHeight", + &asn_OP_NativeInteger, + asn_DEF_VehicleHeight_tags_1, + sizeof(asn_DEF_VehicleHeight_tags_1) + /sizeof(asn_DEF_VehicleHeight_tags_1[0]), /* 1 */ + asn_DEF_VehicleHeight_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleHeight_tags_1) + /sizeof(asn_DEF_VehicleHeight_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleHeight_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleHeight_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VehicleHeight_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleID.c b/src/tmx/Asn_J2735/src/r2020/VehicleID.c new file mode 100644 index 000000000..c12f01383 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleID.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleID.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleID_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_VehicleID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleID, choice.entityID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TemporaryID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "entityID" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleID, choice.stationID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StationID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "stationID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* entityID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* stationID */ +}; +asn_CHOICE_specifics_t asn_SPC_VehicleID_specs_1 = { + sizeof(struct VehicleID), + offsetof(struct VehicleID, _asn_ctx), + offsetof(struct VehicleID, present), + sizeof(((struct VehicleID *)0)->present), + asn_MAP_VehicleID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleID = { + "VehicleID", + "VehicleID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_VehicleID_1, + 2, /* Elements count */ + &asn_SPC_VehicleID_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleIdent.c b/src/tmx/Asn_J2735/src/r2020/VehicleIdent.c new file mode 100644 index 000000000..13f58ef71 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleIdent.c @@ -0,0 +1,313 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleIdent.h" + +static int check_permitted_alphabet_4(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127UL)) return -1; + } + return 0; +} + +static int +memb_ownerCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 32UL) + && !check_permitted_alphabet_4(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_vehicleClass_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_vehicleClass_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_ownerCode_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_ownerCode_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_vehicleClass_7[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleIdent__vehicleClass, choice.vGroup), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleGroupAffected, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vGroup" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleIdent__vehicleClass, choice.rGroup), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponderGroupAffected, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rGroup" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleIdent__vehicleClass, choice.rEquip), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IncidentResponseEquipment, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rEquip" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_vehicleClass_tag2el_7[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vGroup */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rGroup */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* rEquip */ +}; +static asn_CHOICE_specifics_t asn_SPC_vehicleClass_specs_7 = { + sizeof(struct VehicleIdent__vehicleClass), + offsetof(struct VehicleIdent__vehicleClass, _asn_ctx), + offsetof(struct VehicleIdent__vehicleClass, present), + sizeof(((struct VehicleIdent__vehicleClass *)0)->present), + asn_MAP_vehicleClass_tag2el_7, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_vehicleClass_7 = { + "vehicleClass", + "vehicleClass", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_vehicleClass_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_vehicleClass_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_vehicleClass_7, + 3, /* Elements count */ + &asn_SPC_vehicleClass_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_VehicleIdent_1[] = { + { ATF_POINTER, 6, offsetof(struct VehicleIdent, name), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DescriptiveName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "name" + }, + { ATF_POINTER, 5, offsetof(struct VehicleIdent, vin), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VINstring, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vin" + }, + { ATF_POINTER, 4, offsetof(struct VehicleIdent, ownerCode), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IA5String, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_ownerCode_constr_4, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_ownerCode_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_ownerCode_constraint_1 + }, + 0, 0, /* No default value */ + "ownerCode" + }, + { ATF_POINTER, 3, offsetof(struct VehicleIdent, id), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_VehicleID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_POINTER, 2, offsetof(struct VehicleIdent, vehicleType), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleType" + }, + { ATF_POINTER, 1, offsetof(struct VehicleIdent, vehicleClass), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_vehicleClass_7, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleClass" + }, +}; +static const int asn_MAP_VehicleIdent_oms_1[] = { 0, 1, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_VehicleIdent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleIdent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* name */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* vin */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ownerCode */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* vehicleType */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* vehicleClass */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VehicleIdent_specs_1 = { + sizeof(struct VehicleIdent), + offsetof(struct VehicleIdent, _asn_ctx), + asn_MAP_VehicleIdent_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_VehicleIdent_oms_1, /* Optional members */ + 6, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleIdent = { + "VehicleIdent", + "VehicleIdent", + &asn_OP_SEQUENCE, + asn_DEF_VehicleIdent_tags_1, + sizeof(asn_DEF_VehicleIdent_tags_1) + /sizeof(asn_DEF_VehicleIdent_tags_1[0]), /* 1 */ + asn_DEF_VehicleIdent_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleIdent_tags_1) + /sizeof(asn_DEF_VehicleIdent_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VehicleIdent_1, + 6, /* Elements count */ + &asn_SPC_VehicleIdent_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleLength.c b/src/tmx/Asn_J2735/src/r2020/VehicleLength.c new file mode 100644 index 000000000..0015cd94f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleLength.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleLength.h" + +int +VehicleLength_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 4095L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleLength_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..4095) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleLength_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VehicleLength_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleLength = { + "VehicleLength", + "VehicleLength", + &asn_OP_NativeInteger, + asn_DEF_VehicleLength_tags_1, + sizeof(asn_DEF_VehicleLength_tags_1) + /sizeof(asn_DEF_VehicleLength_tags_1[0]), /* 1 */ + asn_DEF_VehicleLength_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleLength_tags_1) + /sizeof(asn_DEF_VehicleLength_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleLength_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleLength_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VehicleLength_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleMass.c b/src/tmx/Asn_J2735/src/r2020/VehicleMass.c new file mode 100644 index 000000000..30616baf0 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleMass.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleMass.h" + +int +VehicleMass_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleMass_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleMass_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VehicleMass_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleMass = { + "VehicleMass", + "VehicleMass", + &asn_OP_NativeInteger, + asn_DEF_VehicleMass_tags_1, + sizeof(asn_DEF_VehicleMass_tags_1) + /sizeof(asn_DEF_VehicleMass_tags_1[0]), /* 1 */ + asn_DEF_VehicleMass_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleMass_tags_1) + /sizeof(asn_DEF_VehicleMass_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleMass_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleMass_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VehicleMass_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleSafetyExtensions.c b/src/tmx/Asn_J2735/src/r2020/VehicleSafetyExtensions.c new file mode 100644 index 000000000..8ccd77d8e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleSafetyExtensions.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleSafetyExtensions.h" + +asn_TYPE_member_t asn_MBR_VehicleSafetyExtensions_1[] = { + { ATF_POINTER, 4, offsetof(struct VehicleSafetyExtensions, events), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleEventFlags, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "events" + }, + { ATF_POINTER, 3, offsetof(struct VehicleSafetyExtensions, pathHistory), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PathHistory, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pathHistory" + }, + { ATF_POINTER, 2, offsetof(struct VehicleSafetyExtensions, pathPrediction), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PathPrediction, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pathPrediction" + }, + { ATF_POINTER, 1, offsetof(struct VehicleSafetyExtensions, lights), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExteriorLights, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lights" + }, +}; +static const int asn_MAP_VehicleSafetyExtensions_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_VehicleSafetyExtensions_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleSafetyExtensions_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* events */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pathHistory */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pathPrediction */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* lights */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VehicleSafetyExtensions_specs_1 = { + sizeof(struct VehicleSafetyExtensions), + offsetof(struct VehicleSafetyExtensions, _asn_ctx), + asn_MAP_VehicleSafetyExtensions_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_VehicleSafetyExtensions_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleSafetyExtensions = { + "VehicleSafetyExtensions", + "VehicleSafetyExtensions", + &asn_OP_SEQUENCE, + asn_DEF_VehicleSafetyExtensions_tags_1, + sizeof(asn_DEF_VehicleSafetyExtensions_tags_1) + /sizeof(asn_DEF_VehicleSafetyExtensions_tags_1[0]), /* 1 */ + asn_DEF_VehicleSafetyExtensions_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleSafetyExtensions_tags_1) + /sizeof(asn_DEF_VehicleSafetyExtensions_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VehicleSafetyExtensions_1, + 4, /* Elements count */ + &asn_SPC_VehicleSafetyExtensions_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleSize.c b/src/tmx/Asn_J2735/src/r2020/VehicleSize.c new file mode 100644 index 000000000..0ed6cd708 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleSize.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleSize.h" + +asn_TYPE_member_t asn_MBR_VehicleSize_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleSize, width), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleWidth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "width" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleSize, length), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleLength, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "length" + }, +}; +static const ber_tlv_tag_t asn_DEF_VehicleSize_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleSize_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* width */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* length */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VehicleSize_specs_1 = { + sizeof(struct VehicleSize), + offsetof(struct VehicleSize, _asn_ctx), + asn_MAP_VehicleSize_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleSize = { + "VehicleSize", + "VehicleSize", + &asn_OP_SEQUENCE, + asn_DEF_VehicleSize_tags_1, + sizeof(asn_DEF_VehicleSize_tags_1) + /sizeof(asn_DEF_VehicleSize_tags_1[0]), /* 1 */ + asn_DEF_VehicleSize_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleSize_tags_1) + /sizeof(asn_DEF_VehicleSize_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VehicleSize_1, + 2, /* Elements count */ + &asn_SPC_VehicleSize_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleSizeConfidence.c b/src/tmx/Asn_J2735/src/r2020/VehicleSizeConfidence.c new file mode 100644 index 000000000..1e1b5b372 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleSizeConfidence.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "VehicleSizeConfidence.h" + +asn_TYPE_member_t asn_MBR_VehicleSizeConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleSizeConfidence, vehicleWidthConfidence), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SizeValueConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehicleWidthConfidence" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleSizeConfidence, vehicleLengthConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SizeValueConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehicleLengthConfidence" + }, + { ATF_POINTER, 1, offsetof(struct VehicleSizeConfidence, vehicleHeightConfidence), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SizeValueConfidence, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehicleHeightConfidence" + }, +}; +static const int asn_MAP_VehicleSizeConfidence_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_VehicleSizeConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleSizeConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vehicleWidthConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* vehicleLengthConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* vehicleHeightConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VehicleSizeConfidence_specs_1 = { + sizeof(struct VehicleSizeConfidence), + offsetof(struct VehicleSizeConfidence, _asn_ctx), + asn_MAP_VehicleSizeConfidence_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_VehicleSizeConfidence_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleSizeConfidence = { + "VehicleSizeConfidence", + "VehicleSizeConfidence", + &asn_OP_SEQUENCE, + asn_DEF_VehicleSizeConfidence_tags_1, + sizeof(asn_DEF_VehicleSizeConfidence_tags_1) + /sizeof(asn_DEF_VehicleSizeConfidence_tags_1[0]), /* 1 */ + asn_DEF_VehicleSizeConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleSizeConfidence_tags_1) + /sizeof(asn_DEF_VehicleSizeConfidence_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_VehicleSizeConfidence_1, + 3, /* Elements count */ + &asn_SPC_VehicleSizeConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleStatus.c b/src/tmx/Asn_J2735/src/r2020/VehicleStatus.c new file mode 100644 index 000000000..b192d0d43 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleStatus.c @@ -0,0 +1,1053 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleStatus.h" + +static asn_TYPE_member_t asn_MBR_steering_12[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleStatus__steering, angle), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SteeringWheelAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "angle" + }, + { ATF_POINTER, 3, offsetof(struct VehicleStatus__steering, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SteeringWheelAngleConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, + { ATF_POINTER, 2, offsetof(struct VehicleStatus__steering, rate), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SteeringWheelAngleRateOfChange, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rate" + }, + { ATF_POINTER, 1, offsetof(struct VehicleStatus__steering, wheels), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DrivingWheelAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "wheels" + }, +}; +static const int asn_MAP_steering_oms_12[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_steering_tags_12[] = { + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_steering_tag2el_12[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* angle */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* confidence */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rate */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* wheels */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_steering_specs_12 = { + sizeof(struct VehicleStatus__steering), + offsetof(struct VehicleStatus__steering, _asn_ctx), + asn_MAP_steering_tag2el_12, + 4, /* Count of tags in the map */ + asn_MAP_steering_oms_12, /* Optional members */ + 3, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_steering_12 = { + "steering", + "steering", + &asn_OP_SEQUENCE, + asn_DEF_steering_tags_12, + sizeof(asn_DEF_steering_tags_12) + /sizeof(asn_DEF_steering_tags_12[0]) - 1, /* 1 */ + asn_DEF_steering_tags_12, /* Same as above */ + sizeof(asn_DEF_steering_tags_12) + /sizeof(asn_DEF_steering_tags_12[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_steering_12, + 4, /* Elements count */ + &asn_SPC_steering_specs_12 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_accelSets_17[] = { + { ATF_POINTER, 5, offsetof(struct VehicleStatus__accelSets, accel4way), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationSet4Way, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accel4way" + }, + { ATF_POINTER, 4, offsetof(struct VehicleStatus__accelSets, vertAccelThres), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VerticalAccelerationThreshold, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vertAccelThres" + }, + { ATF_POINTER, 3, offsetof(struct VehicleStatus__accelSets, yawRateCon), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_YawRateConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yawRateCon" + }, + { ATF_POINTER, 2, offsetof(struct VehicleStatus__accelSets, hozAccelCon), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hozAccelCon" + }, + { ATF_POINTER, 1, offsetof(struct VehicleStatus__accelSets, confidenceSet), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ConfidenceSet, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidenceSet" + }, +}; +static const int asn_MAP_accelSets_oms_17[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_accelSets_tags_17[] = { + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_accelSets_tag2el_17[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* accel4way */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* vertAccelThres */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* yawRateCon */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* hozAccelCon */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* confidenceSet */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_accelSets_specs_17 = { + sizeof(struct VehicleStatus__accelSets), + offsetof(struct VehicleStatus__accelSets, _asn_ctx), + asn_MAP_accelSets_tag2el_17, + 5, /* Count of tags in the map */ + asn_MAP_accelSets_oms_17, /* Optional members */ + 5, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_accelSets_17 = { + "accelSets", + "accelSets", + &asn_OP_SEQUENCE, + asn_DEF_accelSets_tags_17, + sizeof(asn_DEF_accelSets_tags_17) + /sizeof(asn_DEF_accelSets_tags_17[0]) - 1, /* 1 */ + asn_DEF_accelSets_tags_17, /* Same as above */ + sizeof(asn_DEF_accelSets_tags_17) + /sizeof(asn_DEF_accelSets_tags_17[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_accelSets_17, + 5, /* Elements count */ + &asn_SPC_accelSets_specs_17 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_object_23[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleStatus__object, obDist), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObstacleDistance, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "obDist" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleStatus__object, obDirect), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_Angle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "obDirect" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleStatus__object, dateTime), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DDateTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dateTime" + }, +}; +static const ber_tlv_tag_t asn_DEF_object_tags_23[] = { + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_object_tag2el_23[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* obDist */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* obDirect */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* dateTime */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_object_specs_23 = { + sizeof(struct VehicleStatus__object), + offsetof(struct VehicleStatus__object, _asn_ctx), + asn_MAP_object_tag2el_23, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_object_23 = { + "object", + "object", + &asn_OP_SEQUENCE, + asn_DEF_object_tags_23, + sizeof(asn_DEF_object_tags_23) + /sizeof(asn_DEF_object_tags_23[0]) - 1, /* 1 */ + asn_DEF_object_tags_23, /* Same as above */ + sizeof(asn_DEF_object_tags_23) + /sizeof(asn_DEF_object_tags_23[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_object_23, + 3, /* Elements count */ + &asn_SPC_object_specs_23 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_vehicleData_31[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleStatus__vehicleData, height), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleHeight, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "height" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleStatus__vehicleData, bumpers), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BumperHeights, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "bumpers" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleStatus__vehicleData, mass), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleMass, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mass" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleStatus__vehicleData, trailerWeight), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrailerWeight, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trailerWeight" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleStatus__vehicleData, type), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "type" + }, +}; +static const ber_tlv_tag_t asn_DEF_vehicleData_tags_31[] = { + (ASN_TAG_CLASS_CONTEXT | (17 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_vehicleData_tag2el_31[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* height */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* bumpers */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mass */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* trailerWeight */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* type */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_vehicleData_specs_31 = { + sizeof(struct VehicleStatus__vehicleData), + offsetof(struct VehicleStatus__vehicleData, _asn_ctx), + asn_MAP_vehicleData_tag2el_31, + 5, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_vehicleData_31 = { + "vehicleData", + "vehicleData", + &asn_OP_SEQUENCE, + asn_DEF_vehicleData_tags_31, + sizeof(asn_DEF_vehicleData_tags_31) + /sizeof(asn_DEF_vehicleData_tags_31[0]) - 1, /* 1 */ + asn_DEF_vehicleData_tags_31, /* Same as above */ + sizeof(asn_DEF_vehicleData_tags_31) + /sizeof(asn_DEF_vehicleData_tags_31[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_vehicleData_31, + 5, /* Elements count */ + &asn_SPC_vehicleData_specs_31 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_weatherReport_39[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleStatus__weatherReport, isRaining), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EssPrecipYesNo, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "isRaining" + }, + { ATF_POINTER, 4, offsetof(struct VehicleStatus__weatherReport, rainRate), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EssPrecipRate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rainRate" + }, + { ATF_POINTER, 3, offsetof(struct VehicleStatus__weatherReport, precipSituation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EssPrecipSituation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "precipSituation" + }, + { ATF_POINTER, 2, offsetof(struct VehicleStatus__weatherReport, solarRadiation), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EssSolarRadiation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "solarRadiation" + }, + { ATF_POINTER, 1, offsetof(struct VehicleStatus__weatherReport, friction), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EssMobileFriction, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "friction" + }, +}; +static const int asn_MAP_weatherReport_oms_39[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_weatherReport_tags_39[] = { + (ASN_TAG_CLASS_CONTEXT | (20 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_weatherReport_tag2el_39[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* isRaining */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rainRate */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* precipSituation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* solarRadiation */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* friction */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_weatherReport_specs_39 = { + sizeof(struct VehicleStatus__weatherReport), + offsetof(struct VehicleStatus__weatherReport, _asn_ctx), + asn_MAP_weatherReport_tag2el_39, + 5, /* Count of tags in the map */ + asn_MAP_weatherReport_oms_39, /* Optional members */ + 4, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_weatherReport_39 = { + "weatherReport", + "weatherReport", + &asn_OP_SEQUENCE, + asn_DEF_weatherReport_tags_39, + sizeof(asn_DEF_weatherReport_tags_39) + /sizeof(asn_DEF_weatherReport_tags_39[0]) - 1, /* 1 */ + asn_DEF_weatherReport_tags_39, /* Same as above */ + sizeof(asn_DEF_weatherReport_tags_39) + /sizeof(asn_DEF_weatherReport_tags_39[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_weatherReport_39, + 5, /* Elements count */ + &asn_SPC_weatherReport_specs_39 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_VehicleStatus_1[] = { + { ATF_POINTER, 22, offsetof(struct VehicleStatus, lights), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExteriorLights, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lights" + }, + { ATF_POINTER, 21, offsetof(struct VehicleStatus, lightBar), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LightbarInUse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lightBar" + }, + { ATF_POINTER, 20, offsetof(struct VehicleStatus, wipers), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WiperSet, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "wipers" + }, + { ATF_POINTER, 19, offsetof(struct VehicleStatus, brakeStatus), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BrakeSystemStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "brakeStatus" + }, + { ATF_POINTER, 18, offsetof(struct VehicleStatus, brakePressure), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BrakeAppliedPressure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "brakePressure" + }, + { ATF_POINTER, 17, offsetof(struct VehicleStatus, roadFriction), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CoefficientOfFriction, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "roadFriction" + }, + { ATF_POINTER, 16, offsetof(struct VehicleStatus, sunData), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SunSensor, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sunData" + }, + { ATF_POINTER, 15, offsetof(struct VehicleStatus, rainData), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RainSensor, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rainData" + }, + { ATF_POINTER, 14, offsetof(struct VehicleStatus, airTemp), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AmbientAirTemperature, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "airTemp" + }, + { ATF_POINTER, 13, offsetof(struct VehicleStatus, airPres), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AmbientAirPressure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "airPres" + }, + { ATF_POINTER, 12, offsetof(struct VehicleStatus, steering), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + 0, + &asn_DEF_steering_12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "steering" + }, + { ATF_POINTER, 11, offsetof(struct VehicleStatus, accelSets), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + 0, + &asn_DEF_accelSets_17, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accelSets" + }, + { ATF_POINTER, 10, offsetof(struct VehicleStatus, object), + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + 0, + &asn_DEF_object_23, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "object" + }, + { ATF_POINTER, 9, offsetof(struct VehicleStatus, fullPos), + (ASN_TAG_CLASS_CONTEXT | (13 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FullPositionVector, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "fullPos" + }, + { ATF_POINTER, 8, offsetof(struct VehicleStatus, throttlePos), + (ASN_TAG_CLASS_CONTEXT | (14 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ThrottlePosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "throttlePos" + }, + { ATF_POINTER, 7, offsetof(struct VehicleStatus, speedHeadC), + (ASN_TAG_CLASS_CONTEXT | (15 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedandHeadingandThrottleConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedHeadC" + }, + { ATF_POINTER, 6, offsetof(struct VehicleStatus, speedC), + (ASN_TAG_CLASS_CONTEXT | (16 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedC" + }, + { ATF_POINTER, 5, offsetof(struct VehicleStatus, vehicleData), + (ASN_TAG_CLASS_CONTEXT | (17 << 2)), + 0, + &asn_DEF_vehicleData_31, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleData" + }, + { ATF_POINTER, 4, offsetof(struct VehicleStatus, vehicleIdent), + (ASN_TAG_CLASS_CONTEXT | (18 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleIdent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleIdent" + }, + { ATF_POINTER, 3, offsetof(struct VehicleStatus, j1939data), + (ASN_TAG_CLASS_CONTEXT | (19 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_J1939data, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "j1939data" + }, + { ATF_POINTER, 2, offsetof(struct VehicleStatus, weatherReport), + (ASN_TAG_CLASS_CONTEXT | (20 << 2)), + 0, + &asn_DEF_weatherReport_39, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "weatherReport" + }, + { ATF_POINTER, 1, offsetof(struct VehicleStatus, gnssStatus), + (ASN_TAG_CLASS_CONTEXT | (21 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNSSstatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gnssStatus" + }, +}; +static const int asn_MAP_VehicleStatus_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 }; +static const ber_tlv_tag_t asn_DEF_VehicleStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleStatus_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lights */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lightBar */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* wipers */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* brakeStatus */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* brakePressure */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* roadFriction */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sunData */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* rainData */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* airTemp */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* airPres */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* steering */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* accelSets */ + { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* object */ + { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* fullPos */ + { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* throttlePos */ + { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* speedHeadC */ + { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* speedC */ + { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* vehicleData */ + { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* vehicleIdent */ + { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* j1939data */ + { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* weatherReport */ + { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 } /* gnssStatus */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VehicleStatus_specs_1 = { + sizeof(struct VehicleStatus), + offsetof(struct VehicleStatus, _asn_ctx), + asn_MAP_VehicleStatus_tag2el_1, + 22, /* Count of tags in the map */ + asn_MAP_VehicleStatus_oms_1, /* Optional members */ + 22, 0, /* Root/Additions */ + 22, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleStatus = { + "VehicleStatus", + "VehicleStatus", + &asn_OP_SEQUENCE, + asn_DEF_VehicleStatus_tags_1, + sizeof(asn_DEF_VehicleStatus_tags_1) + /sizeof(asn_DEF_VehicleStatus_tags_1[0]), /* 1 */ + asn_DEF_VehicleStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleStatus_tags_1) + /sizeof(asn_DEF_VehicleStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VehicleStatus_1, + 22, /* Elements count */ + &asn_SPC_VehicleStatus_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleStatusDeviceTypeTag.c b/src/tmx/Asn_J2735/src/r2020/VehicleStatusDeviceTypeTag.c new file mode 100644 index 000000000..78bd838b5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleStatusDeviceTypeTag.c @@ -0,0 +1,124 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleStatusDeviceTypeTag.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleStatusDeviceTypeTag_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleStatusDeviceTypeTag_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 28 } /* (0..28,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VehicleStatusDeviceTypeTag_value2enum_1[] = { + { 0, 7, "unknown" }, + { 1, 6, "lights" }, + { 2, 6, "wipers" }, + { 3, 6, "brakes" }, + { 4, 4, "stab" }, + { 5, 4, "trac" }, + { 6, 3, "abs" }, + { 7, 4, "sunS" }, + { 8, 5, "rainS" }, + { 9, 7, "airTemp" }, + { 10, 8, "steering" }, + { 11, 14, "vertAccelThres" }, + { 12, 9, "vertAccel" }, + { 13, 12, "hozAccelLong" }, + { 14, 11, "hozAccelLat" }, + { 15, 11, "hozAccelCon" }, + { 16, 9, "accel4way" }, + { 17, 13, "confidenceSet" }, + { 18, 6, "obDist" }, + { 19, 8, "obDirect" }, + { 20, 3, "yaw" }, + { 21, 10, "yawRateCon" }, + { 22, 8, "dateTime" }, + { 23, 7, "fullPos" }, + { 24, 10, "position2D" }, + { 25, 10, "position3D" }, + { 26, 7, "vehicle" }, + { 27, 10, "speedHeadC" }, + { 28, 6, "speedC" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_VehicleStatusDeviceTypeTag_enum2value_1[] = { + 6, /* abs(6) */ + 16, /* accel4way(16) */ + 9, /* airTemp(9) */ + 3, /* brakes(3) */ + 17, /* confidenceSet(17) */ + 22, /* dateTime(22) */ + 23, /* fullPos(23) */ + 15, /* hozAccelCon(15) */ + 14, /* hozAccelLat(14) */ + 13, /* hozAccelLong(13) */ + 1, /* lights(1) */ + 19, /* obDirect(19) */ + 18, /* obDist(18) */ + 24, /* position2D(24) */ + 25, /* position3D(25) */ + 8, /* rainS(8) */ + 28, /* speedC(28) */ + 27, /* speedHeadC(27) */ + 4, /* stab(4) */ + 10, /* steering(10) */ + 7, /* sunS(7) */ + 5, /* trac(5) */ + 0, /* unknown(0) */ + 26, /* vehicle(26) */ + 12, /* vertAccel(12) */ + 11, /* vertAccelThres(11) */ + 2, /* wipers(2) */ + 20, /* yaw(20) */ + 21 /* yawRateCon(21) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_VehicleStatusDeviceTypeTag_specs_1 = { + asn_MAP_VehicleStatusDeviceTypeTag_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VehicleStatusDeviceTypeTag_enum2value_1, /* N => "tag"; sorted by N */ + 29, /* Number of elements in the maps */ + 30, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VehicleStatusDeviceTypeTag_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleStatusDeviceTypeTag = { + "VehicleStatusDeviceTypeTag", + "VehicleStatusDeviceTypeTag", + &asn_OP_NativeEnumerated, + asn_DEF_VehicleStatusDeviceTypeTag_tags_1, + sizeof(asn_DEF_VehicleStatusDeviceTypeTag_tags_1) + /sizeof(asn_DEF_VehicleStatusDeviceTypeTag_tags_1[0]), /* 1 */ + asn_DEF_VehicleStatusDeviceTypeTag_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleStatusDeviceTypeTag_tags_1) + /sizeof(asn_DEF_VehicleStatusDeviceTypeTag_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleStatusDeviceTypeTag_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleStatusDeviceTypeTag_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VehicleStatusDeviceTypeTag_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleStatusRequest.c b/src/tmx/Asn_J2735/src/r2020/VehicleStatusRequest.c new file mode 100644 index 000000000..3ad4cd534 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleStatusRequest.c @@ -0,0 +1,251 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleStatusRequest.h" + +static int +memb_subType_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 15L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_sendOnLessThenValue_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32767L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_sendOnMoreThenValue_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32767L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_subType_constr_3 CC_NOTUSED = { + { 1, 1 } /* (1..15) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_subType_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 1, 15 } /* (1..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_sendOnLessThenValue_constr_4 CC_NOTUSED = { + { 2, 0 } /* (-32767..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_sendOnLessThenValue_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32767, 32767 } /* (-32767..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_sendOnMoreThenValue_constr_5 CC_NOTUSED = { + { 2, 0 } /* (-32767..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_sendOnMoreThenValue_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32767, 32767 } /* (-32767..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_VehicleStatusRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleStatusRequest, dataType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleStatusDeviceTypeTag, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dataType" + }, + { ATF_POINTER, 4, offsetof(struct VehicleStatusRequest, subType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_subType_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_subType_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_subType_constraint_1 + }, + 0, 0, /* No default value */ + "subType" + }, + { ATF_POINTER, 3, offsetof(struct VehicleStatusRequest, sendOnLessThenValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_sendOnLessThenValue_constr_4, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_sendOnLessThenValue_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_sendOnLessThenValue_constraint_1 + }, + 0, 0, /* No default value */ + "sendOnLessThenValue" + }, + { ATF_POINTER, 2, offsetof(struct VehicleStatusRequest, sendOnMoreThenValue), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_sendOnMoreThenValue_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_sendOnMoreThenValue_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_sendOnMoreThenValue_constraint_1 + }, + 0, 0, /* No default value */ + "sendOnMoreThenValue" + }, + { ATF_POINTER, 1, offsetof(struct VehicleStatusRequest, sendAll), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sendAll" + }, +}; +static const int asn_MAP_VehicleStatusRequest_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_VehicleStatusRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleStatusRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dataType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sendOnLessThenValue */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sendOnMoreThenValue */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* sendAll */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VehicleStatusRequest_specs_1 = { + sizeof(struct VehicleStatusRequest), + offsetof(struct VehicleStatusRequest, _asn_ctx), + asn_MAP_VehicleStatusRequest_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_VehicleStatusRequest_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleStatusRequest = { + "VehicleStatusRequest", + "VehicleStatusRequest", + &asn_OP_SEQUENCE, + asn_DEF_VehicleStatusRequest_tags_1, + sizeof(asn_DEF_VehicleStatusRequest_tags_1) + /sizeof(asn_DEF_VehicleStatusRequest_tags_1[0]), /* 1 */ + asn_DEF_VehicleStatusRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleStatusRequest_tags_1) + /sizeof(asn_DEF_VehicleStatusRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VehicleStatusRequest_1, + 5, /* Elements count */ + &asn_SPC_VehicleStatusRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleStatusRequestList.c b/src/tmx/Asn_J2735/src/r2020/VehicleStatusRequestList.c new file mode 100644 index 000000000..ce2f56868 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleStatusRequestList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeDataManagement" + * found in "J2735-ProbeDataManagement.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleStatusRequestList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleStatusRequestList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleStatusRequestList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_VehicleStatusRequestList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_VehicleStatusRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_VehicleStatusRequestList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_VehicleStatusRequestList_specs_1 = { + sizeof(struct VehicleStatusRequestList), + offsetof(struct VehicleStatusRequestList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleStatusRequestList = { + "VehicleStatusRequestList", + "VehicleStatusRequestList", + &asn_OP_SEQUENCE_OF, + asn_DEF_VehicleStatusRequestList_tags_1, + sizeof(asn_DEF_VehicleStatusRequestList_tags_1) + /sizeof(asn_DEF_VehicleStatusRequestList_tags_1[0]), /* 1 */ + asn_DEF_VehicleStatusRequestList_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleStatusRequestList_tags_1) + /sizeof(asn_DEF_VehicleStatusRequestList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleStatusRequestList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleStatusRequestList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_VehicleStatusRequestList_1, + 1, /* Single element */ + &asn_SPC_VehicleStatusRequestList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleToLanePosition.c b/src/tmx/Asn_J2735/src/r2020/VehicleToLanePosition.c new file mode 100644 index 000000000..f25b9a3e7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleToLanePosition.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleToLanePosition.h" + +asn_TYPE_member_t asn_MBR_VehicleToLanePosition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleToLanePosition, stationID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StationID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "stationID" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleToLanePosition, laneID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneID" + }, +}; +static const ber_tlv_tag_t asn_DEF_VehicleToLanePosition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleToLanePosition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* stationID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* laneID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VehicleToLanePosition_specs_1 = { + sizeof(struct VehicleToLanePosition), + offsetof(struct VehicleToLanePosition, _asn_ctx), + asn_MAP_VehicleToLanePosition_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleToLanePosition = { + "VehicleToLanePosition", + "VehicleToLanePosition", + &asn_OP_SEQUENCE, + asn_DEF_VehicleToLanePosition_tags_1, + sizeof(asn_DEF_VehicleToLanePosition_tags_1) + /sizeof(asn_DEF_VehicleToLanePosition_tags_1[0]), /* 1 */ + asn_DEF_VehicleToLanePosition_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleToLanePosition_tags_1) + /sizeof(asn_DEF_VehicleToLanePosition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VehicleToLanePosition_1, + 2, /* Elements count */ + &asn_SPC_VehicleToLanePosition_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleToLanePositionList.c b/src/tmx/Asn_J2735/src/r2020/VehicleToLanePositionList.c new file mode 100644 index 000000000..9b499fdae --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleToLanePositionList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpC" + * found in "J2735-AddGrpC.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleToLanePositionList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleToLanePositionList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..5)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleToLanePositionList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 5 } /* (SIZE(1..5)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_VehicleToLanePositionList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_VehicleToLanePosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_VehicleToLanePositionList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_VehicleToLanePositionList_specs_1 = { + sizeof(struct VehicleToLanePositionList), + offsetof(struct VehicleToLanePositionList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleToLanePositionList = { + "VehicleToLanePositionList", + "VehicleToLanePositionList", + &asn_OP_SEQUENCE_OF, + asn_DEF_VehicleToLanePositionList_tags_1, + sizeof(asn_DEF_VehicleToLanePositionList_tags_1) + /sizeof(asn_DEF_VehicleToLanePositionList_tags_1[0]), /* 1 */ + asn_DEF_VehicleToLanePositionList_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleToLanePositionList_tags_1) + /sizeof(asn_DEF_VehicleToLanePositionList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleToLanePositionList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleToLanePositionList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_VehicleToLanePositionList_1, + 1, /* Single element */ + &asn_SPC_VehicleToLanePositionList_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleType.c b/src/tmx/Asn_J2735/src/r2020/VehicleType.c new file mode 100644 index 000000000..44f556679 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleType.c @@ -0,0 +1,98 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VehicleType_value2enum_1[] = { + { 0, 4, "none" }, + { 1, 7, "unknown" }, + { 2, 7, "special" }, + { 3, 4, "moto" }, + { 4, 3, "car" }, + { 5, 8, "carOther" }, + { 6, 3, "bus" }, + { 7, 8, "axleCnt2" }, + { 8, 8, "axleCnt3" }, + { 9, 8, "axleCnt4" }, + { 10, 15, "axleCnt4Trailer" }, + { 11, 15, "axleCnt5Trailer" }, + { 12, 15, "axleCnt6Trailer" }, + { 13, 20, "axleCnt5MultiTrailer" }, + { 14, 20, "axleCnt6MultiTrailer" }, + { 15, 20, "axleCnt7MultiTrailer" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_VehicleType_enum2value_1[] = { + 7, /* axleCnt2(7) */ + 8, /* axleCnt3(8) */ + 9, /* axleCnt4(9) */ + 10, /* axleCnt4Trailer(10) */ + 13, /* axleCnt5MultiTrailer(13) */ + 11, /* axleCnt5Trailer(11) */ + 14, /* axleCnt6MultiTrailer(14) */ + 12, /* axleCnt6Trailer(12) */ + 15, /* axleCnt7MultiTrailer(15) */ + 6, /* bus(6) */ + 4, /* car(4) */ + 5, /* carOther(5) */ + 3, /* moto(3) */ + 0, /* none(0) */ + 2, /* special(2) */ + 1 /* unknown(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_VehicleType_specs_1 = { + asn_MAP_VehicleType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VehicleType_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 17, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VehicleType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleType = { + "VehicleType", + "VehicleType", + &asn_OP_NativeEnumerated, + asn_DEF_VehicleType_tags_1, + sizeof(asn_DEF_VehicleType_tags_1) + /sizeof(asn_DEF_VehicleType_tags_1[0]), /* 1 */ + asn_DEF_VehicleType_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleType_tags_1) + /sizeof(asn_DEF_VehicleType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VehicleType_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VehicleWidth.c b/src/tmx/Asn_J2735/src/r2020/VehicleWidth.c new file mode 100644 index 000000000..69c72d0db --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VehicleWidth.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VehicleWidth.h" + +int +VehicleWidth_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 1023L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleWidth_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..1023) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleWidth_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VehicleWidth_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleWidth = { + "VehicleWidth", + "VehicleWidth", + &asn_OP_NativeInteger, + asn_DEF_VehicleWidth_tags_1, + sizeof(asn_DEF_VehicleWidth_tags_1) + /sizeof(asn_DEF_VehicleWidth_tags_1[0]), /* 1 */ + asn_DEF_VehicleWidth_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleWidth_tags_1) + /sizeof(asn_DEF_VehicleWidth_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleWidth_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleWidth_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VehicleWidth_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Velocity.c b/src/tmx/Asn_J2735/src/r2020/Velocity.c new file mode 100644 index 000000000..665722068 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Velocity.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Velocity.h" + +int +Velocity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 8191L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Velocity_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..8191) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Velocity_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 13, 13, 0, 8191 } /* (0..8191) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Velocity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Velocity = { + "Velocity", + "Velocity", + &asn_OP_NativeInteger, + asn_DEF_Velocity_tags_1, + sizeof(asn_DEF_Velocity_tags_1) + /sizeof(asn_DEF_Velocity_tags_1[0]), /* 1 */ + asn_DEF_Velocity_tags_1, /* Same as above */ + sizeof(asn_DEF_Velocity_tags_1) + /sizeof(asn_DEF_Velocity_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Velocity_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Velocity_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Velocity_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VertOffset-B07.c b/src/tmx/Asn_J2735/src/r2020/VertOffset-B07.c new file mode 100644 index 000000000..17ed32f5f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VertOffset-B07.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VertOffset-B07.h" + +int +VertOffset_B07_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -64L && value <= 63L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VertOffset_B07_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-64..63) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VertOffset_B07_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, -64, 63 } /* (-64..63) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VertOffset_B07_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VertOffset_B07 = { + "VertOffset-B07", + "VertOffset-B07", + &asn_OP_NativeInteger, + asn_DEF_VertOffset_B07_tags_1, + sizeof(asn_DEF_VertOffset_B07_tags_1) + /sizeof(asn_DEF_VertOffset_B07_tags_1[0]), /* 1 */ + asn_DEF_VertOffset_B07_tags_1, /* Same as above */ + sizeof(asn_DEF_VertOffset_B07_tags_1) + /sizeof(asn_DEF_VertOffset_B07_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VertOffset_B07_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VertOffset_B07_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VertOffset_B07_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VertOffset-B08.c b/src/tmx/Asn_J2735/src/r2020/VertOffset-B08.c new file mode 100644 index 000000000..57ca3011a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VertOffset-B08.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VertOffset-B08.h" + +int +VertOffset_B08_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -128L && value <= 127L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VertOffset_B08_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-128..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VertOffset_B08_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -128, 127 } /* (-128..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VertOffset_B08_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VertOffset_B08 = { + "VertOffset-B08", + "VertOffset-B08", + &asn_OP_NativeInteger, + asn_DEF_VertOffset_B08_tags_1, + sizeof(asn_DEF_VertOffset_B08_tags_1) + /sizeof(asn_DEF_VertOffset_B08_tags_1[0]), /* 1 */ + asn_DEF_VertOffset_B08_tags_1, /* Same as above */ + sizeof(asn_DEF_VertOffset_B08_tags_1) + /sizeof(asn_DEF_VertOffset_B08_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VertOffset_B08_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VertOffset_B08_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VertOffset_B08_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VertOffset-B09.c b/src/tmx/Asn_J2735/src/r2020/VertOffset-B09.c new file mode 100644 index 000000000..20c641a9e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VertOffset-B09.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VertOffset-B09.h" + +int +VertOffset_B09_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -256L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VertOffset_B09_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-256..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VertOffset_B09_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, -256, 255 } /* (-256..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VertOffset_B09_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VertOffset_B09 = { + "VertOffset-B09", + "VertOffset-B09", + &asn_OP_NativeInteger, + asn_DEF_VertOffset_B09_tags_1, + sizeof(asn_DEF_VertOffset_B09_tags_1) + /sizeof(asn_DEF_VertOffset_B09_tags_1[0]), /* 1 */ + asn_DEF_VertOffset_B09_tags_1, /* Same as above */ + sizeof(asn_DEF_VertOffset_B09_tags_1) + /sizeof(asn_DEF_VertOffset_B09_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VertOffset_B09_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VertOffset_B09_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VertOffset_B09_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VertOffset-B10.c b/src/tmx/Asn_J2735/src/r2020/VertOffset-B10.c new file mode 100644 index 000000000..091c342ff --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VertOffset-B10.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VertOffset-B10.h" + +int +VertOffset_B10_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -512L && value <= 511L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VertOffset_B10_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-512..511) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VertOffset_B10_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, -512, 511 } /* (-512..511) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VertOffset_B10_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VertOffset_B10 = { + "VertOffset-B10", + "VertOffset-B10", + &asn_OP_NativeInteger, + asn_DEF_VertOffset_B10_tags_1, + sizeof(asn_DEF_VertOffset_B10_tags_1) + /sizeof(asn_DEF_VertOffset_B10_tags_1[0]), /* 1 */ + asn_DEF_VertOffset_B10_tags_1, /* Same as above */ + sizeof(asn_DEF_VertOffset_B10_tags_1) + /sizeof(asn_DEF_VertOffset_B10_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VertOffset_B10_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VertOffset_B10_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VertOffset_B10_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VertOffset-B11.c b/src/tmx/Asn_J2735/src/r2020/VertOffset-B11.c new file mode 100644 index 000000000..25a67e963 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VertOffset-B11.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VertOffset-B11.h" + +int +VertOffset_B11_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -1024L && value <= 1023L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VertOffset_B11_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-1024..1023) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VertOffset_B11_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, -1024, 1023 } /* (-1024..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VertOffset_B11_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VertOffset_B11 = { + "VertOffset-B11", + "VertOffset-B11", + &asn_OP_NativeInteger, + asn_DEF_VertOffset_B11_tags_1, + sizeof(asn_DEF_VertOffset_B11_tags_1) + /sizeof(asn_DEF_VertOffset_B11_tags_1[0]), /* 1 */ + asn_DEF_VertOffset_B11_tags_1, /* Same as above */ + sizeof(asn_DEF_VertOffset_B11_tags_1) + /sizeof(asn_DEF_VertOffset_B11_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VertOffset_B11_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VertOffset_B11_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VertOffset_B11_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VertOffset-B12.c b/src/tmx/Asn_J2735/src/r2020/VertOffset-B12.c new file mode 100644 index 000000000..23d2c0687 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VertOffset-B12.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VertOffset-B12.h" + +int +VertOffset_B12_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -2048L && value <= 2047L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VertOffset_B12_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-2048..2047) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VertOffset_B12_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, -2048, 2047 } /* (-2048..2047) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VertOffset_B12_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VertOffset_B12 = { + "VertOffset-B12", + "VertOffset-B12", + &asn_OP_NativeInteger, + asn_DEF_VertOffset_B12_tags_1, + sizeof(asn_DEF_VertOffset_B12_tags_1) + /sizeof(asn_DEF_VertOffset_B12_tags_1[0]), /* 1 */ + asn_DEF_VertOffset_B12_tags_1, /* Same as above */ + sizeof(asn_DEF_VertOffset_B12_tags_1) + /sizeof(asn_DEF_VertOffset_B12_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VertOffset_B12_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VertOffset_B12_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VertOffset_B12_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VerticalAcceleration.c b/src/tmx/Asn_J2735/src/r2020/VerticalAcceleration.c new file mode 100644 index 000000000..c6f242130 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VerticalAcceleration.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VerticalAcceleration.h" + +int +VerticalAcceleration_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -127L && value <= 127L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VerticalAcceleration_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-127..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VerticalAcceleration_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -127, 127 } /* (-127..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VerticalAcceleration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VerticalAcceleration = { + "VerticalAcceleration", + "VerticalAcceleration", + &asn_OP_NativeInteger, + asn_DEF_VerticalAcceleration_tags_1, + sizeof(asn_DEF_VerticalAcceleration_tags_1) + /sizeof(asn_DEF_VerticalAcceleration_tags_1[0]), /* 1 */ + asn_DEF_VerticalAcceleration_tags_1, /* Same as above */ + sizeof(asn_DEF_VerticalAcceleration_tags_1) + /sizeof(asn_DEF_VerticalAcceleration_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VerticalAcceleration_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VerticalAcceleration_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VerticalAcceleration_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VerticalAccelerationThreshold.c b/src/tmx/Asn_J2735/src/r2020/VerticalAccelerationThreshold.c new file mode 100644 index 000000000..a3c071b09 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VerticalAccelerationThreshold.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VerticalAccelerationThreshold.h" + +int +VerticalAccelerationThreshold_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 5UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VerticalAccelerationThreshold_constr_1 CC_NOTUSED = { + { 0, 0 }, + 5 /* (SIZE(5..5)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VerticalAccelerationThreshold_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 5, 5 } /* (SIZE(5..5)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VerticalAccelerationThreshold_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VerticalAccelerationThreshold = { + "VerticalAccelerationThreshold", + "VerticalAccelerationThreshold", + &asn_OP_BIT_STRING, + asn_DEF_VerticalAccelerationThreshold_tags_1, + sizeof(asn_DEF_VerticalAccelerationThreshold_tags_1) + /sizeof(asn_DEF_VerticalAccelerationThreshold_tags_1[0]), /* 1 */ + asn_DEF_VerticalAccelerationThreshold_tags_1, /* Same as above */ + sizeof(asn_DEF_VerticalAccelerationThreshold_tags_1) + /sizeof(asn_DEF_VerticalAccelerationThreshold_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VerticalAccelerationThreshold_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VerticalAccelerationThreshold_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VerticalAccelerationThreshold_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/VerticalOffset.c b/src/tmx/Asn_J2735/src/r2020/VerticalOffset.c new file mode 100644 index 000000000..4af2cf385 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/VerticalOffset.c @@ -0,0 +1,201 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "VerticalOffset.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VerticalOffset_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_VerticalOffset_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_VerticalOffset_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VerticalOffset, choice.offset1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VertOffset_B07, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offset1" + }, + { ATF_NOFLAGS, 0, offsetof(struct VerticalOffset, choice.offset2), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VertOffset_B08, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offset2" + }, + { ATF_NOFLAGS, 0, offsetof(struct VerticalOffset, choice.offset3), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VertOffset_B09, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offset3" + }, + { ATF_NOFLAGS, 0, offsetof(struct VerticalOffset, choice.offset4), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VertOffset_B10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offset4" + }, + { ATF_NOFLAGS, 0, offsetof(struct VerticalOffset, choice.offset5), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VertOffset_B11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offset5" + }, + { ATF_NOFLAGS, 0, offsetof(struct VerticalOffset, choice.offset6), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VertOffset_B12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "offset6" + }, + { ATF_NOFLAGS, 0, offsetof(struct VerticalOffset, choice.elevation), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Common_Elevation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elevation" + }, + { ATF_NOFLAGS, 0, offsetof(struct VerticalOffset, choice.regional), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reg_VerticalOffset, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "regional" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_VerticalOffset_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* offset1 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* offset2 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* offset3 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* offset4 */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* offset5 */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* offset6 */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* elevation */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* regional */ +}; +static asn_CHOICE_specifics_t asn_SPC_VerticalOffset_specs_1 = { + sizeof(struct VerticalOffset), + offsetof(struct VerticalOffset, _asn_ctx), + offsetof(struct VerticalOffset, present), + sizeof(((struct VerticalOffset *)0)->present), + asn_MAP_VerticalOffset_tag2el_1, + 8, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_VerticalOffset = { + "VerticalOffset", + "VerticalOffset", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VerticalOffset_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VerticalOffset_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_VerticalOffset_1, + 8, /* Elements count */ + &asn_SPC_VerticalOffset_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/WaitOnStopline.c b/src/tmx/Asn_J2735/src/r2020/WaitOnStopline.c new file mode 100644 index 000000000..e8b727376 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/WaitOnStopline.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "WaitOnStopline.h" + +/* + * This type is implemented using BOOLEAN, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_WaitOnStopline_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WaitOnStopline = { + "WaitOnStopline", + "WaitOnStopline", + &asn_OP_BOOLEAN, + asn_DEF_WaitOnStopline_tags_1, + sizeof(asn_DEF_WaitOnStopline_tags_1) + /sizeof(asn_DEF_WaitOnStopline_tags_1[0]), /* 1 */ + asn_DEF_WaitOnStopline_tags_1, /* Same as above */ + sizeof(asn_DEF_WaitOnStopline_tags_1) + /sizeof(asn_DEF_WaitOnStopline_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BOOLEAN_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/WeatherProbe.c b/src/tmx/Asn_J2735/src/r2020/WeatherProbe.c new file mode 100644 index 000000000..433add22b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/WeatherProbe.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "WeatherProbe.h" + +asn_TYPE_member_t asn_MBR_WeatherProbe_1[] = { + { ATF_POINTER, 3, offsetof(struct WeatherProbe, airTemp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AmbientAirTemperature, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "airTemp" + }, + { ATF_POINTER, 2, offsetof(struct WeatherProbe, airPressure), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AmbientAirPressure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "airPressure" + }, + { ATF_POINTER, 1, offsetof(struct WeatherProbe, rainRates), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WiperSet, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rainRates" + }, +}; +static const int asn_MAP_WeatherProbe_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_WeatherProbe_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WeatherProbe_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* airTemp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* airPressure */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* rainRates */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WeatherProbe_specs_1 = { + sizeof(struct WeatherProbe), + offsetof(struct WeatherProbe, _asn_ctx), + asn_MAP_WeatherProbe_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_WeatherProbe_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WeatherProbe = { + "WeatherProbe", + "WeatherProbe", + &asn_OP_SEQUENCE, + asn_DEF_WeatherProbe_tags_1, + sizeof(asn_DEF_WeatherProbe_tags_1) + /sizeof(asn_DEF_WeatherProbe_tags_1[0]), /* 1 */ + asn_DEF_WeatherProbe_tags_1, /* Same as above */ + sizeof(asn_DEF_WeatherProbe_tags_1) + /sizeof(asn_DEF_WeatherProbe_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_WeatherProbe_1, + 3, /* Elements count */ + &asn_SPC_WeatherProbe_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/WeatherReport.c b/src/tmx/Asn_J2735/src/r2020/WeatherReport.c new file mode 100644 index 000000000..7e2cafd1b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/WeatherReport.c @@ -0,0 +1,158 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "BasicSafetyMessage" + * found in "J2735-BasicSafetyMessage.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "WeatherReport.h" + +asn_TYPE_member_t asn_MBR_WeatherReport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct WeatherReport, isRaining), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EssPrecipYesNo, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "isRaining" + }, + { ATF_POINTER, 5, offsetof(struct WeatherReport, rainRate), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EssPrecipRate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rainRate" + }, + { ATF_POINTER, 4, offsetof(struct WeatherReport, precipSituation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EssPrecipSituation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "precipSituation" + }, + { ATF_POINTER, 3, offsetof(struct WeatherReport, solarRadiation), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EssSolarRadiation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "solarRadiation" + }, + { ATF_POINTER, 2, offsetof(struct WeatherReport, friction), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EssMobileFriction, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "friction" + }, + { ATF_POINTER, 1, offsetof(struct WeatherReport, roadFriction), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CoefficientOfFriction, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "roadFriction" + }, +}; +static const int asn_MAP_WeatherReport_oms_1[] = { 1, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_WeatherReport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WeatherReport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* isRaining */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rainRate */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* precipSituation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* solarRadiation */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* friction */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* roadFriction */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WeatherReport_specs_1 = { + sizeof(struct WeatherReport), + offsetof(struct WeatherReport, _asn_ctx), + asn_MAP_WeatherReport_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_WeatherReport_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WeatherReport = { + "WeatherReport", + "WeatherReport", + &asn_OP_SEQUENCE, + asn_DEF_WeatherReport_tags_1, + sizeof(asn_DEF_WeatherReport_tags_1) + /sizeof(asn_DEF_WeatherReport_tags_1[0]), /* 1 */ + asn_DEF_WeatherReport_tags_1, /* Same as above */ + sizeof(asn_DEF_WeatherReport_tags_1) + /sizeof(asn_DEF_WeatherReport_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_WeatherReport_1, + 6, /* Elements count */ + &asn_SPC_WeatherReport_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/WheelEndElectFault.c b/src/tmx/Asn_J2735/src/r2020/WheelEndElectFault.c new file mode 100644 index 000000000..12d31a520 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/WheelEndElectFault.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "WheelEndElectFault.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_WheelEndElectFault_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_WheelEndElectFault_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_WheelEndElectFault_value2enum_1[] = { + { 0, 4, "isOk" }, + { 1, 12, "isNotDefined" }, + { 2, 7, "isError" }, + { 3, 14, "isNotSupported" } +}; +static const unsigned int asn_MAP_WheelEndElectFault_enum2value_1[] = { + 2, /* isError(2) */ + 1, /* isNotDefined(1) */ + 3, /* isNotSupported(3) */ + 0 /* isOk(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_WheelEndElectFault_specs_1 = { + asn_MAP_WheelEndElectFault_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_WheelEndElectFault_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_WheelEndElectFault_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WheelEndElectFault = { + "WheelEndElectFault", + "WheelEndElectFault", + &asn_OP_NativeEnumerated, + asn_DEF_WheelEndElectFault_tags_1, + sizeof(asn_DEF_WheelEndElectFault_tags_1) + /sizeof(asn_DEF_WheelEndElectFault_tags_1[0]), /* 1 */ + asn_DEF_WheelEndElectFault_tags_1, /* Same as above */ + sizeof(asn_DEF_WheelEndElectFault_tags_1) + /sizeof(asn_DEF_WheelEndElectFault_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_WheelEndElectFault_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_WheelEndElectFault_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_WheelEndElectFault_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/WheelSensorStatus.c b/src/tmx/Asn_J2735/src/r2020/WheelSensorStatus.c new file mode 100644 index 000000000..d057e1d86 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/WheelSensorStatus.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "WheelSensorStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_WheelSensorStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_WheelSensorStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_WheelSensorStatus_value2enum_1[] = { + { 0, 3, "off" }, + { 1, 2, "on" }, + { 2, 10, "notDefined" }, + { 3, 12, "notSupported" } +}; +static const unsigned int asn_MAP_WheelSensorStatus_enum2value_1[] = { + 2, /* notDefined(2) */ + 3, /* notSupported(3) */ + 0, /* off(0) */ + 1 /* on(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_WheelSensorStatus_specs_1 = { + asn_MAP_WheelSensorStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_WheelSensorStatus_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_WheelSensorStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WheelSensorStatus = { + "WheelSensorStatus", + "WheelSensorStatus", + &asn_OP_NativeEnumerated, + asn_DEF_WheelSensorStatus_tags_1, + sizeof(asn_DEF_WheelSensorStatus_tags_1) + /sizeof(asn_DEF_WheelSensorStatus_tags_1[0]), /* 1 */ + asn_DEF_WheelSensorStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_WheelSensorStatus_tags_1) + /sizeof(asn_DEF_WheelSensorStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_WheelSensorStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_WheelSensorStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_WheelSensorStatus_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/WiperRate.c b/src/tmx/Asn_J2735/src/r2020/WiperRate.c new file mode 100644 index 000000000..11fa2bcfa --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/WiperRate.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "WiperRate.h" + +int +WiperRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 127L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_WiperRate_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_WiperRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_WiperRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WiperRate = { + "WiperRate", + "WiperRate", + &asn_OP_NativeInteger, + asn_DEF_WiperRate_tags_1, + sizeof(asn_DEF_WiperRate_tags_1) + /sizeof(asn_DEF_WiperRate_tags_1[0]), /* 1 */ + asn_DEF_WiperRate_tags_1, /* Same as above */ + sizeof(asn_DEF_WiperRate_tags_1) + /sizeof(asn_DEF_WiperRate_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_WiperRate_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_WiperRate_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + WiperRate_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/WiperSet.c b/src/tmx/Asn_J2735/src/r2020/WiperSet.c new file mode 100644 index 000000000..2736c168d --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/WiperSet.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "WiperSet.h" + +asn_TYPE_member_t asn_MBR_WiperSet_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct WiperSet, statusFront), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WiperStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "statusFront" + }, + { ATF_NOFLAGS, 0, offsetof(struct WiperSet, rateFront), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WiperRate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rateFront" + }, + { ATF_POINTER, 2, offsetof(struct WiperSet, statusRear), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WiperStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "statusRear" + }, + { ATF_POINTER, 1, offsetof(struct WiperSet, rateRear), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WiperRate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rateRear" + }, +}; +static const int asn_MAP_WiperSet_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_WiperSet_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WiperSet_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* statusFront */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rateFront */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* statusRear */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* rateRear */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WiperSet_specs_1 = { + sizeof(struct WiperSet), + offsetof(struct WiperSet, _asn_ctx), + asn_MAP_WiperSet_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_WiperSet_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WiperSet = { + "WiperSet", + "WiperSet", + &asn_OP_SEQUENCE, + asn_DEF_WiperSet_tags_1, + sizeof(asn_DEF_WiperSet_tags_1) + /sizeof(asn_DEF_WiperSet_tags_1[0]), /* 1 */ + asn_DEF_WiperSet_tags_1, /* Same as above */ + sizeof(asn_DEF_WiperSet_tags_1) + /sizeof(asn_DEF_WiperSet_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_WiperSet_1, + 4, /* Elements count */ + &asn_SPC_WiperSet_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/WiperStatus.c b/src/tmx/Asn_J2735/src/r2020/WiperStatus.c new file mode 100644 index 000000000..c5876798c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/WiperStatus.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "WiperStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_WiperStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_WiperStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_WiperStatus_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 3, "off" }, + { 2, 12, "intermittent" }, + { 3, 3, "low" }, + { 4, 4, "high" }, + { 5, 11, "washerInUse" }, + { 6, 16, "automaticPresent" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_WiperStatus_enum2value_1[] = { + 6, /* automaticPresent(6) */ + 4, /* high(4) */ + 2, /* intermittent(2) */ + 3, /* low(3) */ + 1, /* off(1) */ + 0, /* unavailable(0) */ + 5 /* washerInUse(5) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_WiperStatus_specs_1 = { + asn_MAP_WiperStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_WiperStatus_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_WiperStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WiperStatus = { + "WiperStatus", + "WiperStatus", + &asn_OP_NativeEnumerated, + asn_DEF_WiperStatus_tags_1, + sizeof(asn_DEF_WiperStatus_tags_1) + /sizeof(asn_DEF_WiperStatus_tags_1[0]), /* 1 */ + asn_DEF_WiperStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_WiperStatus_tags_1) + /sizeof(asn_DEF_WiperStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_WiperStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_WiperStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_WiperStatus_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/WorkZone.c b/src/tmx/Asn_J2735/src/r2020/WorkZone.c new file mode 100644 index 000000000..c13da7e46 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/WorkZone.c @@ -0,0 +1,215 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "WorkZone.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_item_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_item_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_WorkZone_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_WorkZone_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_item_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct WorkZone__Member__item, choice.itis), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIScodes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "itis" + }, + { ATF_NOFLAGS, 0, offsetof(struct WorkZone__Member__item, choice.text), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ITIStextPhrase, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "text" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_item_tag2el_3[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* itis */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* text */ +}; +static asn_CHOICE_specifics_t asn_SPC_item_specs_3 = { + sizeof(struct WorkZone__Member__item), + offsetof(struct WorkZone__Member__item, _asn_ctx), + offsetof(struct WorkZone__Member__item, present), + sizeof(((struct WorkZone__Member__item *)0)->present), + asn_MAP_item_tag2el_3, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_item_3 = { + "item", + "item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_item_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_item_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_item_3, + 2, /* Elements count */ + &asn_SPC_item_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct WorkZone__Member, item), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_item_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "item" + }, +}; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* item */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct WorkZone__Member), + offsetof(struct WorkZone__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Member_2, + 1, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_WorkZone_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_WorkZone_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_WorkZone_specs_1 = { + sizeof(struct WorkZone), + offsetof(struct WorkZone, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_WorkZone = { + "WorkZone", + "WorkZone", + &asn_OP_SEQUENCE_OF, + asn_DEF_WorkZone_tags_1, + sizeof(asn_DEF_WorkZone_tags_1) + /sizeof(asn_DEF_WorkZone_tags_1[0]), /* 1 */ + asn_DEF_WorkZone_tags_1, /* Same as above */ + sizeof(asn_DEF_WorkZone_tags_1) + /sizeof(asn_DEF_WorkZone_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_WorkZone_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_WorkZone_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_WorkZone_1, + 1, /* Single element */ + &asn_SPC_WorkZone_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/YawDetected.c b/src/tmx/Asn_J2735/src/r2020/YawDetected.c new file mode 100644 index 000000000..bc7c0018b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/YawDetected.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SDSM" + * found in "J2735_201603_2023-06-22.asn" + * `asn1c -fcompound-names ` + */ + +#include "YawDetected.h" + +int +YawDetected_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -14400 && value <= 14400)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_YawDetected_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-14400..14400) */, + -1}; +asn_per_constraints_t asn_PER_type_YawDetected_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, -14400, 14400 } /* (-14400..14400) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_YawDetected_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_YawDetected = { + "YawDetected", + "YawDetected", + &asn_OP_NativeInteger, + asn_DEF_YawDetected_tags_1, + sizeof(asn_DEF_YawDetected_tags_1) + /sizeof(asn_DEF_YawDetected_tags_1[0]), /* 1 */ + asn_DEF_YawDetected_tags_1, /* Same as above */ + sizeof(asn_DEF_YawDetected_tags_1) + /sizeof(asn_DEF_YawDetected_tags_1[0]), /* 1 */ + { &asn_OER_type_YawDetected_constr_1, &asn_PER_type_YawDetected_constr_1, YawDetected_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/YawRate.c b/src/tmx/Asn_J2735/src/r2020/YawRate.c new file mode 100644 index 000000000..efa992e9f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/YawRate.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "Common" + * found in "J2735-Common.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "YawRate.h" + +int +YawRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32767L && value <= 32767L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_YawRate_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-32767..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_YawRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32767, 32767 } /* (-32767..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_YawRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_YawRate = { + "YawRate", + "YawRate", + &asn_OP_NativeInteger, + asn_DEF_YawRate_tags_1, + sizeof(asn_DEF_YawRate_tags_1) + /sizeof(asn_DEF_YawRate_tags_1[0]), /* 1 */ + asn_DEF_YawRate_tags_1, /* Same as above */ + sizeof(asn_DEF_YawRate_tags_1) + /sizeof(asn_DEF_YawRate_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_YawRate_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_YawRate_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + YawRate_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/YawRateConfidence.c b/src/tmx/Asn_J2735/src/r2020/YawRateConfidence.c new file mode 100644 index 000000000..fd0490f8b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/YawRateConfidence.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ProbeVehicleData" + * found in "J2735-ProbeVehicleData.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "YawRateConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_YawRateConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_YawRateConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_YawRateConfidence_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 13, "degSec-100-00" }, + { 2, 13, "degSec-010-00" }, + { 3, 13, "degSec-005-00" }, + { 4, 13, "degSec-001-00" }, + { 5, 13, "degSec-000-10" }, + { 6, 13, "degSec-000-05" }, + { 7, 13, "degSec-000-01" } +}; +static const unsigned int asn_MAP_YawRateConfidence_enum2value_1[] = { + 7, /* degSec-000-01(7) */ + 6, /* degSec-000-05(6) */ + 5, /* degSec-000-10(5) */ + 4, /* degSec-001-00(4) */ + 3, /* degSec-005-00(3) */ + 2, /* degSec-010-00(2) */ + 1, /* degSec-100-00(1) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_YawRateConfidence_specs_1 = { + asn_MAP_YawRateConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_YawRateConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_YawRateConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_YawRateConfidence = { + "YawRateConfidence", + "YawRateConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_YawRateConfidence_tags_1, + sizeof(asn_DEF_YawRateConfidence_tags_1) + /sizeof(asn_DEF_YawRateConfidence_tags_1[0]), /* 1 */ + asn_DEF_YawRateConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_YawRateConfidence_tags_1) + /sizeof(asn_DEF_YawRateConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_YawRateConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_YawRateConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_YawRateConfidence_specs_1 /* Additional specs */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Year.c b/src/tmx/Asn_J2735/src/r2020/Year.c new file mode 100644 index 000000000..d763c3f83 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Year.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "AddGrpB" + * found in "J2735-AddGrpB.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Year.h" + +int +Year_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Year_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Year_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (1..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Year_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Year = { + "Year", + "Year", + &asn_OP_NativeInteger, + asn_DEF_Year_tags_1, + sizeof(asn_DEF_Year_tags_1) + /sizeof(asn_DEF_Year_tags_1[0]), /* 1 */ + asn_DEF_Year_tags_1, /* Same as above */ + sizeof(asn_DEF_Year_tags_1) + /sizeof(asn_DEF_Year_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Year_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Year_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Year_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/ZoneLength.c b/src/tmx/Asn_J2735/src/r2020/ZoneLength.c new file mode 100644 index 000000000..df2dc72a8 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ZoneLength.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SPAT" + * found in "J2735-SPAT.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "ZoneLength.h" + +int +ZoneLength_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 10000L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ZoneLength_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..10000) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ZoneLength_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 0, 10000 } /* (0..10000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ZoneLength_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ZoneLength = { + "ZoneLength", + "ZoneLength", + &asn_OP_NativeInteger, + asn_DEF_ZoneLength_tags_1, + sizeof(asn_DEF_ZoneLength_tags_1) + /sizeof(asn_DEF_ZoneLength_tags_1[0]), /* 1 */ + asn_DEF_ZoneLength_tags_1, /* Same as above */ + sizeof(asn_DEF_ZoneLength_tags_1) + /sizeof(asn_DEF_ZoneLength_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ZoneLength_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ZoneLength_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ZoneLength_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/Zoom.c b/src/tmx/Asn_J2735/src/r2020/Zoom.c new file mode 100644 index 000000000..4fe68f792 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/Zoom.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "TravelerInformation" + * found in "J2735-TravelerInformation.asn" + * `asn1c -pdu=MessageFrame -fcompound-names -fincludes-quoted -no-gen-JER` + */ + +#include "Zoom.h" + +int +Zoom_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 15L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Zoom_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..15) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Zoom_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Zoom_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Zoom = { + "Zoom", + "Zoom", + &asn_OP_NativeInteger, + asn_DEF_Zoom_tags_1, + sizeof(asn_DEF_Zoom_tags_1) + /sizeof(asn_DEF_Zoom_tags_1[0]), /* 1 */ + asn_DEF_Zoom_tags_1, /* Same as above */ + sizeof(asn_DEF_Zoom_tags_1) + /sizeof(asn_DEF_Zoom_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Zoom_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Zoom_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Zoom_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/tmx/Asn_J2735/src/r2020/aper_decoder.c b/src/tmx/Asn_J2735/src/r2020/aper_decoder.c new file mode 100644 index 000000000..0637b6a5a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/aper_decoder.c @@ -0,0 +1,91 @@ +#include +#include +#include + +asn_dec_rval_t +aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +aper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->aper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %zu, counted %zu", + rval.consumed, pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} diff --git a/src/tmx/Asn_J2735/src/r2020/aper_encoder.c b/src/tmx/Asn_J2735/src/r2020/aper_encoder.c new file mode 100644 index 000000000..d9b1c1df1 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/aper_encoder.c @@ -0,0 +1,129 @@ +#include +#include +#include + +/* + * Argument type and callback necessary for aper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); + + return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_aper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + if (po->output) { + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); + } + return 0; +} + +asn_enc_rval_t +aper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->aper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->aper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_aper_encode_flush_outp(&po)) + ASN__ENCODE_FAILED; + } + + return er; +} diff --git a/src/tmx/Asn_J2735/src/r2020/aper_opentype.c b/src/tmx/Asn_J2735/src/r2020/aper_opentype.c new file mode 100644 index 000000000..cdd5999b2 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/aper_opentype.c @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +static asn_dec_rval_t +aper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = aper_get_length(pd, -1, -1, -1, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +int +aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + size_t toGo; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + for(bptr = buf, toGo = size; toGo;) { + int need_eom = 0; + ssize_t maySave = aper_put_length(po, -1, -1, toGo, &need_eom); + if(maySave < 0) break; + if(per_put_many_bits(po, bptr, maySave * 8)) break; + bptr = (char *)bptr + maySave; + toGo -= maySave; + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) { + FREEMEM(buf); + return -1; + } + } + + FREEMEM(buf); + if(toGo) return -1; + + ASN_DEBUG("Open type put %s of length %zd + overhead (1byte?)", + td->name, size); + + return 0; +} + +asn_dec_rval_t +aper_open_type_get(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_dec_rval_t rv; + asn_TYPE_operation_t op_t; + + memset(&op_t, 0, sizeof(op_t)); + s_td.name = ""; + s_td.op = &op_t; + s_td.op->aper_decoder = uper_sot_suck; + + rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/aper_support.c b/src/tmx/Asn_J2735/src/r2020/aper_support.c new file mode 100644 index 000000000..1f34c60d6 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/aper_support.c @@ -0,0 +1,239 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +int32_t +aper_get_align(asn_per_data_t *pd) { + + if(pd->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); + return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); + } + return 0; +} + +ssize_t +aper_get_length(asn_per_data_t *pd, ssize_t lb, ssize_t ub, + int ebits, int *repeat) { + int constrained = (lb >= 0) && (ub >= 0); + ssize_t value; + + *repeat = 0; + + if (constrained && ub < 65536) { + int range = ub - lb + 1; + return aper_get_nsnnwn(pd, range); + } + + if (aper_get_align(pd) < 0) + return -1; + + if(ebits >= 0) return per_get_few_bits(pd, ebits); + + value = per_get_few_bits(pd, 8); + if(value < 0) return -1; + if((value & 128) == 0) /* #11.9.3.6 */ + return (value & 0x7F); + if((value & 64) == 0) { /* #11.9.3.7 */ + value = ((value & 63) << 8) | per_get_few_bits(pd, 8); + if(value < 0) return -1; + return value; + } + value &= 63; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) + return -1; + *repeat = 1; + return (16384 * value); +} + +ssize_t +aper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%zd", length); + return length; + } else { + int repeat; + length = aper_get_length(pd, -1, -1, -1, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +ssize_t +aper_get_nsnnwn(asn_per_data_t *pd, int range) { + ssize_t value; + int bytes = 0; + + ASN_DEBUG("getting nsnnwn with range %d", range); + + if(range <= 255) { + int i; + + if (range < 0) return -1; + /* 1 -> 8 bits */ + for (i = 1; i <= 8; i++) { + int upper = 1 << i; + if (upper >= range) + break; + } + value = per_get_few_bits(pd, i); + return value; + } else if (range == 256){ + /* 1 byte */ + bytes = 1; + } else if (range <= 65536) { + /* 2 bytes */ + bytes = 2; + } else { + //return -1; + int length; + + /* handle indefinite range */ + length = per_get_few_bits(pd, 1); + if (length == 0) + return per_get_few_bits(pd, 6); + + if (aper_get_align(pd) < 0) + return -1; + + length = per_get_few_bits(pd, 8); + /* the length is not likely to be that big */ + if (length > 4) + return -1; + value = 0; + if (per_get_many_bits(pd, (uint8_t *)&value, 0, length * 8) < 0) + return -1; + return value; + } + if (aper_get_align(pd) < 0) + return -1; + value = per_get_few_bits(pd, 8 * bytes); + return value; +} + +int aper_put_align(asn_per_outp_t *po) { + + if(po->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); + if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) + return -1; + } + return 0; +} + +ssize_t +aper_put_length(asn_per_outp_t *po, ssize_t lb, ssize_t ub, size_t n, int *need_eom) { + int constrained = (lb >= 0) && (ub >= 0); + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + *need_eom = 0; + + + ASN_DEBUG("APER put length %zu with range (%zd..%zd)", n, lb, ub); + + /* 11.9 X.691 Note 2 */ + if (constrained && ub < 65536) { + int range = ub - lb + 1; + return aper_put_nsnnwn(po, range, n) ? -1 : (ssize_t)n; + } + + if (aper_put_align(po) < 0) + return -1; + + if(n <= 127) { /* #11.9.3.6 */ + return per_put_few_bits(po, n, 8) + ? -1 : (ssize_t)n; + } + else if(n < 16384) /* #11.9.3.7 */ + return per_put_few_bits(po, n|0x8000, 16) + ? -1 : (ssize_t)n; + + *need_eom = 0 == (n & 16383); + n >>= 14; + if(n > 4) { + *need_eom = 0; + n = 4; + } + + return per_put_few_bits(po, 0xC0 | n, 8) + ? -1 : (ssize_t)(n << 14); +} + + +int +aper_put_nslength(asn_per_outp_t *po, size_t length) { + + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length-1, 7) ? -1 : 0; + } else { + if(aper_put_length(po, -1, -1, length, NULL) != (ssize_t)length) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +int +aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { + int bytes; + + ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); + /* 10.5.7.1 X.691 */ + if(range < 0) { + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (number <= bits) + break; + } + bytes = i; + assert(i <= 4); + } + if(range <= 255) { + int i; + for (i = 1; i <= 8; i++) { + int bits = 1 << i; + if (range <= bits) + break; + } + return per_put_few_bits(po, number, i); + } else if(range == 256) { + if (number >= range) + return -1; + bytes = 1; + } else if(range <= 65536) { + if (number >= range) + return -1; + bytes = 2; + } else { /* Ranges > 64K */ + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (range <= bits) + break; + } + assert(i <= 4); + bytes = i; + } + if(aper_put_align(po) < 0) /* Aligning on octet */ + return -1; +/* if(per_put_few_bits(po, bytes, 8)) + return -1; +*/ + return per_put_few_bits(po, number, 8 * bytes); +} diff --git a/src/tmx/Asn_J2735/src/r2020/asn_SEQUENCE_OF.c b/src/tmx/Asn_J2735/src/r2020/asn_SEQUENCE_OF.c new file mode 100644 index 000000000..ec952fc99 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/asn_SEQUENCE_OF.c @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +typedef A_SEQUENCE_OF(void) asn_sequence; + +void +asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) { + asn_sequence *as = (asn_sequence *)asn_sequence_of_x; + + if(as) { + void *ptr; + int n; + + if(number < 0 || number >= as->count) + return; /* Nothing to delete */ + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + /* + * Shift all elements to the left to hide the gap. + */ + --as->count; + for(n = number; n < as->count; n++) + as->array[n] = as->array[n+1]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + diff --git a/src/tmx/Asn_J2735/src/r2020/asn_SET_OF.c b/src/tmx/Asn_J2735/src/r2020/asn_SET_OF.c new file mode 100644 index 000000000..944f2cb8a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/asn_SET_OF.c @@ -0,0 +1,88 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Add another element into the set. + */ +int +asn_set_add(void *asn_set_of_x, void *ptr) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as == 0 || ptr == 0) { + errno = EINVAL; /* Invalid arguments */ + return -1; + } + + /* + * Make sure there's enough space to insert an element. + */ + if(as->count == as->size) { + int _newsize = as->size ? (as->size << 1) : 4; + void *_new_arr; + _new_arr = REALLOC(as->array, _newsize * sizeof(as->array[0])); + if(_new_arr) { + as->array = (void **)_new_arr; + as->size = _newsize; + } else { + /* ENOMEM */ + return -1; + } + } + + as->array[as->count++] = ptr; + + return 0; +} + +void +asn_set_del(void *asn_set_of_x, int number, int _do_free) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + void *ptr; + if(number < 0 || number >= as->count) + return; + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + as->array[number] = as->array[--as->count]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + +/* + * Free the contents of the set, do not free the set itself. + */ +void +asn_set_empty(void *asn_set_of_x) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + if(as->array) { + if(as->free) { + while(as->count--) + as->free(as->array[as->count]); + } + FREEMEM(as->array); + as->array = 0; + } + as->count = 0; + as->size = 0; + } + +} + diff --git a/src/tmx/Asn_J2735/src/r2020/asn_application.c b/src/tmx/Asn_J2735/src/r2020/asn_application.c new file mode 100644 index 000000000..34550dc6e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/asn_application.c @@ -0,0 +1,538 @@ +/* + * Copyright (c) 2023 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_app_consume_bytes_f *callback, + void *callback_key); + + +struct callback_count_bytes_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + size_t computed_size; +}; + +/* + * Encoder which just counts bytes that come through it. + */ +static int +callback_count_bytes_cb(const void *data, size_t size, void *keyp) { + struct callback_count_bytes_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret >= 0) { + key->computed_size += size; + } + + return ret; +} + +struct overrun_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct dynamic_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct callback_failure_catch_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + int callback_failed; +}; + +/* + * Encoder which doesn't stop counting bytes + * even if it reaches the end of the buffer. + */ +static int +overrun_encoder_cb(const void *data, size_t size, void *keyp) { + struct overrun_encoder_key *key = keyp; + + if(key->computed_size + size > key->buffer_size) { + /* + * Avoid accident on the next call: + * stop adding bytes to the buffer. + */ + key->buffer_size = 0; + } else { + memcpy((char *)key->buffer + key->computed_size, data, size); + } + key->computed_size += size; + + return 0; +} + +/* + * Encoder which dynamically allocates output, and continues + * to count even if allocation failed. + */ +static int +dynamic_encoder_cb(const void *data, size_t size, void *keyp) { + struct dynamic_encoder_key *key = keyp; + + if(key->buffer) { + if(key->computed_size + size >= key->buffer_size) { + void *p; + size_t new_size = key->buffer_size; + + do { + new_size *= 2; + } while(new_size <= key->computed_size + size); + + p = REALLOC(key->buffer, new_size); + if(p) { + key->buffer = p; + key->buffer_size = new_size; + } else { + FREEMEM(key->buffer); + key->buffer = 0; + key->buffer_size = 0; + key->computed_size += size; + return 0; + } + } + memcpy((char *)key->buffer + key->computed_size, data, size); + } + + key->computed_size += size; + + return 0; +} + +/* + * Encoder which help convert the application level encoder failure into EIO. + */ +static int +callback_failure_catch_cb(const void *data, size_t size, void *keyp) { + struct callback_failure_catch_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret < 0) { + key->callback_failed = 1; + } + + return ret; +} + +asn_enc_rval_t +asn_encode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { + struct callback_failure_catch_key cb_key; + asn_enc_rval_t er = {0,0,0}; + + if(!callback) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.callback_failed = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + callback_failure_catch_cb, &cb_key); + if(cb_key.callback_failed) { + assert(er.encoded == -1); + assert(errno == EBADF); + errno = EIO; + } + + return er; +} + +asn_enc_rval_t +asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + void *buffer, size_t buffer_size) { + struct overrun_encoder_key buf_key; + asn_enc_rval_t er = {0,0,0}; + + if(buffer_size > 0 && !buffer) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + buf_key.buffer = buffer; + buf_key.buffer_size = buffer_size; + buf_key.computed_size = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + overrun_encoder_cb, &buf_key); + + if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + er.encoded, buf_key.computed_size); + assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); + } + + return er; +} + +asn_encode_to_new_buffer_result_t +asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr) { + struct dynamic_encoder_key buf_key; + asn_encode_to_new_buffer_result_t res; + + buf_key.buffer_size = 16; + buf_key.buffer = MALLOC(buf_key.buffer_size); + buf_key.computed_size = 0; + + res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + dynamic_encoder_cb, &buf_key); + + if(res.result.encoded >= 0 + && (size_t)res.result.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + res.result.encoded, buf_key.computed_size); + assert(res.result.encoded < 0 + || (size_t)res.result.encoded == buf_key.computed_size); + } + + res.buffer = buf_key.buffer; + + /* 0-terminate just in case. */ + if(res.buffer) { + assert(buf_key.computed_size < buf_key.buffer_size); + ((char *)res.buffer)[buf_key.computed_size] = '\0'; + } + + return res; +} + +static asn_enc_rval_t +asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *callback, void *callback_key) { + asn_enc_rval_t er = {0,0,0}; +#if !defined(ASN_DISABLE_XER_SUPPORT) + enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + + (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ + + if(!td || !sptr) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + switch(syntax) { + case ATS_NONSTANDARD_PLAINTEXT: + if(td->op->print_struct) { + struct callback_count_bytes_key cb_key; + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.computed_size = 0; + if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, + &cb_key) + < 0 + || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { + errno = EBADF; /* Structure has incorrect form. */ + er.encoded = -1; + er.failed_type = td; + er.structure_ptr = sptr; + } else { + er.encoded = cb_key.computed_size; + er.failed_type = 0; + er.structure_ptr = 0; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + case ATS_RANDOM: + errno = ENOENT; /* Randomization doesn't make sense on output. */ + ASN__ENCODE_FAILED; + +#if !defined(ASN_DISABLE_BER_SUPPORT) + case ATS_BER: + /* BER is a superset of DER. */ + /* Fall through. */ + case ATS_DER: + if(td->op->der_encoder) { + er = der_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->der_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* DER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_CER: + errno = ENOENT; /* Transfer syntax is not defined for any type. */ + ASN__ENCODE_FAILED; +#else + case ATS_BER: + case ATS_DER: + case ATS_CER: + errno = ENOENT; /* BER is not defined. */ + ASN__ENCODE_FAILED; + +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) + case ATS_BASIC_OER: + /* CANONICAL-OER is a superset of BASIC-OER. */ + /* Fall through. */ + case ATS_CANONICAL_OER: + if(td->op->oer_encoder) { + er = oer_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->oer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* OER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#else + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: + errno = ENOENT; /* OER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) + case ATS_UNALIGNED_BASIC_PER: + /* CANONICAL-UPER is a superset of BASIC-UPER. */ + /* Fall through. */ + case ATS_UNALIGNED_CANONICAL_PER: + if(td->op->uper_encoder) { + er = uper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->uper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* UPER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#else + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: + errno = ENOENT; /* UPER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + case ATS_ALIGNED_BASIC_PER: + /* CANONICAL-APER is a superset of BASIC-APER. */ + /* Fall through. */ + case ATS_ALIGNED_CANONICAL_PER: + if(td->op->aper_encoder) { + er = aper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->aper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* APER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#else + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: + errno = ENOENT; /* APER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) + case ATS_BASIC_XER: + /* CANONICAL-XER is a superset of BASIC-XER. */ + xer_flags &= ~XER_F_CANONICAL; + xer_flags |= XER_F_BASIC; + /* Fall through. */ + case ATS_CANONICAL_XER: + if(td->op->xer_encoder) { + er = xer_encode(td, sptr, xer_flags, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->xer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* XER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#else + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: + errno = ENOENT; /* XER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) + case ATS_JER: + if(td->op->jer_encoder) { + er = jer_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->jer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* JER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + default: + errno = ENOENT; + ASN__ENCODE_FAILED; + } + + return er; +} + +asn_dec_rval_t +asn_decode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + void **sptr, const void *buffer, size_t size) { + if(!td || !td->op || !sptr || (size && !buffer)) { + ASN__DECODE_FAILED; + } + + switch(syntax) { + case ATS_CER: + case ATS_NONSTANDARD_PLAINTEXT: + default: + errno = ENOENT; + ASN__DECODE_FAILED; + + case ATS_RANDOM: +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + if(!td->op->random_fill) { + ASN__DECODE_FAILED; + } else { + if(asn_random_fill(td, sptr, 16000) == 0) { + asn_dec_rval_t ret = {RC_OK, 0}; + return ret; + } else { + ASN__DECODE_FAILED; + } + } + break; +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + + case ATS_DER: + case ATS_BER: +#if !defined(ASN_DISABLE_BER_SUPPORT) + return ber_decode(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: +#if !defined(ASN_DISABLE_OER_SUPPORT) + return oer_decode(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: +#if !defined(ASN_DISABLE_UPER_SUPPORT) + return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ + + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: +#if !defined(ASN_DISABLE_APER_SUPPORT) + return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: +#if !defined(ASN_DISABLE_XER_SUPPORT) + return xer_decode(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + } +} + diff --git a/src/tmx/Asn_J2735/src/r2020/asn_bit_data.c b/src/tmx/Asn_J2735/src/r2020/asn_bit_data.c new file mode 100644 index 000000000..fe4b89ba7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/asn_bit_data.c @@ -0,0 +1,333 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t * +asn_bit_data_new_contiguous(const void *data, size_t size_bits) { + size_t size_bytes = (size_bits + 7) / 8; + asn_bit_data_t *pd; + uint8_t *bytes; + + /* Get the extensions map */ + pd = CALLOC(1, sizeof(*pd) + size_bytes + 1); + if(!pd) { + return NULL; + } + bytes = (void *)(((char *)pd) + sizeof(*pd)); + memcpy(bytes, data, size_bytes); + bytes[size_bytes] = 0; + pd->buffer = bytes; + pd->nboff = 0; + pd->nbits = size_bits; + + return pd; +} + + +char * +asn_bit_data_string(asn_bit_data_t *pd) { + static char buf[2][32]; + static int n; + n = (n+1) % 2; + snprintf(buf[n], sizeof(buf[n]), + "{m=%" ASN_PRI_SIZE " span %" ASN_PRI_SIZE "[%" ASN_PRI_SIZE + "..%" ASN_PRI_SIZE "] (%" ASN_PRI_SIZE ")}", + pd->moved, ((uintptr_t)(pd->buffer) & 0xf), pd->nboff, pd->nbits, + pd->nbits - pd->nboff); + return buf[n]; +} + +void +asn_get_undo(asn_bit_data_t *pd, int nbits) { + if((ssize_t)pd->nboff < nbits) { + assert((ssize_t)pd->nboff < nbits); + } else { + pd->nboff -= nbits; + pd->moved -= nbits; + } +} + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + */ +int32_t +asn_get_few_bits(asn_bit_data_t *pd, int nbits) { + size_t off; /* Next after last bit offset */ + ssize_t nleft; /* Number of bits left in this stream */ + uint32_t accum; + const uint8_t *buf; + + if(nbits < 0) + return -1; + + nleft = pd->nbits - pd->nboff; + if(nbits > nleft) { + int32_t tailv, vhead; + if(!pd->refill || nbits > 31) return -1; + /* Accumulate unused bytes before refill */ + ASN_DEBUG("Obtain the rest %d bits (want %d)", + (int)nleft, (int)nbits); + tailv = asn_get_few_bits(pd, nleft); + if(tailv < 0) return -1; + /* Refill (replace pd contents with new data) */ + if(pd->refill(pd)) + return -1; + nbits -= nleft; + vhead = asn_get_few_bits(pd, nbits); + /* Combine the rest of previous pd with the head of new one */ + tailv = (tailv << nbits) | vhead; /* Could == -1 */ + return tailv; + } + + /* + * Normalize position indicator. + */ + if(pd->nboff >= 8) { + pd->buffer += (pd->nboff >> 3); + pd->nbits -= (pd->nboff & ~0x07); + pd->nboff &= 0x07; + } + pd->moved += nbits; + pd->nboff += nbits; + off = pd->nboff; + buf = pd->buffer; + + /* + * Extract specified number of bits. + */ + if(off <= 8) + accum = nbits ? (buf[0]) >> (8 - off) : 0; + else if(off <= 16) + accum = ((buf[0] << 8) + buf[1]) >> (16 - off); + else if(off <= 24) + accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off); + else if(off <= 31) + accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16) + + (buf[2] << 8) + (buf[3])) >> (32 - off); + else if(nbits <= 31) { + asn_bit_data_t tpd = *pd; + /* Here are we with our 31-bits limit plus 1..7 bits offset. */ + asn_get_undo(&tpd, nbits); + /* The number of available bits in the stream allow + * for the following operations to take place without + * invoking the ->refill() function */ + accum = asn_get_few_bits(&tpd, nbits - 24) << 24; + accum |= asn_get_few_bits(&tpd, 24); + } else { + asn_get_undo(pd, nbits); + return -1; + } + + accum &= (((uint32_t)1 << nbits) - 1); + + ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]", + (int)nbits, (int)nleft, + (int)pd->moved, + (((long)pd->buffer) & 0xf), + (int)pd->nboff, (int)pd->nbits, + ((pd->buffer != NULL)?pd->buffer[0]:0), + (int)(pd->nbits - pd->nboff), + (int)accum); + + return accum; +} + +/* + * Extract a large number of bits from the specified PER data pointer. + */ +int +asn_get_many_bits(asn_bit_data_t *pd, uint8_t *dst, int alright, int nbits) { + int32_t value; + + if(alright && (nbits & 7)) { + /* Perform right alignment of a first few bits */ + value = asn_get_few_bits(pd, nbits & 0x07); + if(value < 0) return -1; + *dst++ = value; /* value is already right-aligned */ + nbits &= ~7; + } + + while(nbits) { + if(nbits >= 24) { + value = asn_get_few_bits(pd, 24); + if(value < 0) return -1; + *(dst++) = value >> 16; + *(dst++) = value >> 8; + *(dst++) = value; + nbits -= 24; + } else { + value = asn_get_few_bits(pd, nbits); + if(value < 0) return -1; + if(nbits & 7) { /* implies left alignment */ + value <<= 8 - (nbits & 7), + nbits += 8 - (nbits & 7); + if(nbits > 24) + *dst++ = value >> 24; + } + if(nbits > 16) + *dst++ = value >> 16; + if(nbits > 8) + *dst++ = value >> 8; + *dst++ = value; + break; + } + } + + return 0; +} + +/* + * Put a small number of bits (<= 31). + */ +int +asn_put_few_bits(asn_bit_outp_t *po, uint32_t bits, int obits) { + size_t off; /* Next after last bit offset */ + size_t omsk; /* Existing last byte meaningful bits mask */ + uint8_t *buf; + + if(obits <= 0 || obits >= 32) return obits ? -1 : 0; + + ASN_DEBUG("[PER put %d bits %x to %p+%d bits]", + obits, (int)bits, (void *)po->buffer, (int)po->nboff); + + /* + * Normalize position indicator. + */ + if(po->nboff >= 8) { + po->buffer += (po->nboff >> 3); + po->nbits -= (po->nboff & ~0x07); + po->nboff &= 0x07; + } + + /* + * Flush whole-bytes output, if necessary. + */ + if(po->nboff + obits > po->nbits) { + size_t complete_bytes; + if(!po->buffer) po->buffer = po->tmpspace; + complete_bytes = (po->buffer - po->tmpspace); + ASN_DEBUG("[PER output %ld complete + %ld]", + (long)complete_bytes, (long)po->flushed_bytes); + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) + return -1; + if(po->nboff) + po->tmpspace[0] = po->buffer[0]; + po->buffer = po->tmpspace; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + } + + /* + * Now, due to sizeof(tmpspace), we are guaranteed large enough space. + */ + buf = po->buffer; + omsk = ~((1 << (8 - po->nboff)) - 1); + off = (po->nboff + obits); + + /* Clear data of debris before meaningful bits */ + bits &= (((uint32_t)1 << obits) - 1); + + ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits, + (int)bits, (int)bits, + (int)po->nboff, (int)off, + buf[0], (int)(omsk&0xff), + (int)(buf[0] & omsk)); + + if(off <= 8) /* Completely within 1 byte */ + po->nboff = off, + bits <<= (8 - off), + buf[0] = (buf[0] & omsk) | bits; + else if(off <= 16) + po->nboff = off, + bits <<= (16 - off), + buf[0] = (buf[0] & omsk) | (bits >> 8), + buf[1] = bits; + else if(off <= 24) + po->nboff = off, + bits <<= (24 - off), + buf[0] = (buf[0] & omsk) | (bits >> 16), + buf[1] = bits >> 8, + buf[2] = bits; + else if(off <= 31) + po->nboff = off, + bits <<= (32 - off), + buf[0] = (buf[0] & omsk) | (bits >> 24), + buf[1] = bits >> 16, + buf[2] = bits >> 8, + buf[3] = bits; + else { + if(asn_put_few_bits(po, bits >> (obits - 24), 24)) return -1; + if(asn_put_few_bits(po, bits, obits - 24)) return -1; + } + + ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", + (int)bits, (int)bits, buf[0], + (long)(po->buffer - po->tmpspace)); + + return 0; +} + + +/* + * Output a large number of bits. + */ +int +asn_put_many_bits(asn_bit_outp_t *po, const uint8_t *src, int nbits) { + + while(nbits) { + uint32_t value; + + if(nbits >= 24) { + value = (src[0] << 16) | (src[1] << 8) | src[2]; + src += 3; + nbits -= 24; + if(asn_put_few_bits(po, value, 24)) + return -1; + } else { + value = src[0]; + if(nbits > 8) + value = (value << 8) | src[1]; + if(nbits > 16) + value = (value << 8) | src[2]; + if(nbits & 0x07) + value >>= (8 - (nbits & 0x07)); + if(asn_put_few_bits(po, value, nbits)) + return -1; + break; + } + } + + return 0; +} + + +int +asn_put_aligned_flush(asn_bit_outp_t *po) { + uint32_t unused_bits = (0x7 & (8 - (po->nboff & 0x07))); + size_t complete_bytes = + (po->buffer ? po->buffer - po->tmpspace : 0) + ((po->nboff + 7) >> 3); + + if(unused_bits) { + po->buffer[po->nboff >> 3] &= ~0u << unused_bits; + } + + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) { + return -1; + } else { + po->buffer = po->tmpspace; + po->nboff = 0; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + return 0; + } +} + diff --git a/src/tmx/Asn_J2735/src/r2020/asn_codecs_prim.c b/src/tmx/Asn_J2735/src/r2020/asn_codecs_prim.c new file mode 100644 index 000000000..f3fdbfd2b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/asn_codecs_prim.c @@ -0,0 +1,31 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +void +ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as a primitive type", td->name); + + if(st->buf) + FREEMEM(st->buf); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); + break; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/asn_codecs_prim_ber.c b/src/tmx/Asn_J2735/src/r2020/asn_codecs_prim_ber.c new file mode 100644 index 000000000..32b8e9a75 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/asn_codecs_prim_ber.c @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Decode an always-primitive type. + */ +asn_dec_rval_t +ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval; + ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ + + /* + * If the structure is not there, allocate it. + */ + if(st == NULL) { + st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) ASN__DECODE_FAILED; + *sptr = (void *)st; + } + + ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", + td->name, tag_mode); + + /* + * Check tags and extract value length. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + st->size = (int)length; + /* The following better be optimized away. */ + if(sizeof(st->size) != sizeof(length) + && (ber_tlv_len_t)st->size != length) { + st->size = 0; + ASN__DECODE_FAILED; + } + + st->buf = (uint8_t *)MALLOC(length + 1); + if(!st->buf) { + st->size = 0; + ASN__DECODE_FAILED; + } + + memcpy(st->buf, buf_ptr, length); + st->buf[length] = '\0'; /* Just in case */ + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s", + (long)rval.consumed, + (long)length, td->name); + + return rval; +} + +/* + * Encode an always-primitive type using DER. + */ +asn_enc_rval_t +der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + + ASN_DEBUG("%s %s as a primitive type (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, + cb, app_key); + ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb && st->buf) { + if(cb(st->buf, st->size, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } else { + assert(st->buf || st->size == 0); + } + + erval.encoded += st->size; + ASN__ENCODED_OK(erval); +} diff --git a/src/tmx/Asn_J2735/src/r2020/asn_codecs_prim_xer.c b/src/tmx/Asn_J2735/src/r2020/asn_codecs_prim_xer.c new file mode 100644 index 000000000..9b46ace6b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/asn_codecs_prim_xer.c @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Local internal type passed around as an argument. + */ +struct xdp_arg_s { + const asn_TYPE_descriptor_t *type_descriptor; + void *struct_key; + xer_primitive_body_decoder_f *prim_body_decoder; + int decoded_something; + int want_more; +}; + +/* + * Since some kinds of primitive values can be encoded using value-specific + * tags (, , etc), the primitive decoder must + * be supplied with such tags to parse them as needed. + */ +static int +xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + + /* + * The chunk_buf is guaranteed to start at '<'. + */ + assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); + + /* + * Decoding was performed once already. Prohibit doing it again. + */ + if(arg->decoded_something) + return -1; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, + chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return 0; + } + + return -1; +} + +static ssize_t +xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + size_t lead_wsp_size; + + if(arg->decoded_something) { + if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { + /* + * Example: + * "123 " + * ^- chunk_buf position. + */ + return chunk_size; + } + /* + * Decoding was done once already. Prohibit doing it again. + */ + return -1; + } + + if(!have_more) { + /* + * If we've received something like "1", we can't really + * tell whether it is really `1` or `123`, until we know + * that there is no more data coming. + * The have_more argument will be set to 1 once something + * like this is available to the caller of this callback: + * "1want_more = 1; + return -1; + } + + lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); + chunk_buf = (chunk_buf == NULL)? NULL : ((const char *)chunk_buf + lead_wsp_size); + chunk_size -= lead_wsp_size; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, + chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return lead_wsp_size + chunk_size; + } + + return -1; +} + +asn_dec_rval_t +xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + size_t struct_size, const char *opt_mname, + const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder) { + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t s_ctx; + struct xdp_arg_s s_arg; + asn_dec_rval_t rc; + + /* + * Create the structure if does not exist. + */ + if(!*sptr) { + *sptr = CALLOC(1, struct_size); + if(!*sptr) ASN__DECODE_FAILED; + } + + memset(&s_ctx, 0, sizeof(s_ctx)); + s_arg.type_descriptor = td; + s_arg.struct_key = *sptr; + s_arg.prim_body_decoder = prim_body_decoder; + s_arg.decoded_something = 0; + s_arg.want_more = 0; + + rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, + xml_tag, buf_ptr, size, + xer_decode__unexpected_tag, + xer_decode__primitive_body); + switch(rc.code) { + case RC_OK: + if(!s_arg.decoded_something) { + char ch; + ASN_DEBUG("Primitive body is not recognized, " + "supplying empty one"); + /* + * Decoding opportunity has come and gone. + * Where's the result? + * Try to feed with empty body, see if it eats it. + */ + if(prim_body_decoder(s_arg.type_descriptor, + s_arg.struct_key, &ch, 0) + != XPBD_BODY_CONSUMED) { + /* + * This decoder does not like empty stuff. + */ + ASN__DECODE_FAILED; + } + } + break; + case RC_WMORE: + /* + * Redo the whole thing later. + * We don't have a context to save intermediate parsing state. + */ + rc.consumed = 0; + break; + case RC_FAIL: + rc.consumed = 0; + if(s_arg.want_more) + rc.code = RC_WMORE; + else + ASN__DECODE_FAILED; + break; + } + return rc; +} diff --git a/src/tmx/Asn_J2735/src/r2020/asn_internal.c b/src/tmx/Asn_J2735/src/r2020/asn_internal.c new file mode 100644 index 000000000..c2a8108e7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/asn_internal.c @@ -0,0 +1,48 @@ +#include + +ssize_t +asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, + const char *fmt, ...) { + char scratch[64]; + char *buf = scratch; + size_t buf_size = sizeof(scratch); + int wrote; + int cb_ret; + + do { + va_list args; + va_start(args, fmt); + + wrote = vsnprintf(buf, buf_size, fmt, args); + va_end(args); + if(wrote < (ssize_t)buf_size) { + if(wrote < 0) { + if(buf != scratch) FREEMEM(buf); + return -1; + } + break; + } + + buf_size <<= 1; + if(buf == scratch) { + buf = MALLOC(buf_size); + if(!buf) return -1; + } else { + void *p = REALLOC(buf, buf_size); + if(!p) { + FREEMEM(buf); + return -1; + } + buf = p; + } + } while(1); + + cb_ret = cb(buf, wrote, key); + if(buf != scratch) FREEMEM(buf); + if(cb_ret < 0) { + return -1; + } + + return wrote; +} + diff --git a/src/tmx/Asn_J2735/src/r2020/asn_random_fill.c b/src/tmx/Asn_J2735/src/r2020/asn_random_fill.c new file mode 100644 index 000000000..bd38a1de9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/asn_random_fill.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +int +asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t length) { + + if(td && td->op->random_fill) { + asn_random_fill_result_t res = + td->op->random_fill(td, struct_ptr, 0, length); + return (res.code == ARFILL_OK) ? 0 : -1; + } else { + return -1; + } +} + +static uintmax_t +asn__intmax_range(intmax_t lb, intmax_t ub) { + assert(lb <= ub); + if((ub < 0) == (lb < 0)) { + return ub - lb; + } else if(lb < 0) { + return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); + } else { + assert(!"Unreachable"); + return 0; + } +} + +intmax_t +asn_random_between(intmax_t lb, intmax_t rb) { + if(lb == rb) { + return lb; + } else { + const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1); + uintmax_t range = asn__intmax_range(lb, rb); + uintmax_t value = 0; + uintmax_t got_entropy = 0; + + (void)intmax_max; + assert(RAND_MAX > 0xffffff); /* Seen 7ffffffd! */ + assert(range < intmax_max); + + for(; got_entropy < range;) { + got_entropy = (got_entropy << 24) | 0xffffff; +#ifdef HAVE_RANDOM + value = (value << 24) | (random() % 0xffffff); +#else + value = (value << 24) | (rand() % 0xffffff); +#endif + } + + return lb + (intmax_t)(value % (range + 1)); + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/ber_decoder.c b/src/tmx/Asn_J2735/src/r2020/ber_decoder.c new file mode 100644 index 000000000..75d601695 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ber_decoder.c @@ -0,0 +1,283 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + if(opt_ctx) opt_ctx->step = step; /* Save context */ \ + if(_code == RC_OK || opt_ctx) \ + rval.consumed = consumed_myself; \ + else \ + rval.consumed = 0; /* Context-free */ \ + return rval; \ + } while(0) + +/* + * The BER decoder of any type. + */ +asn_dec_rval_t +ber_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + const void *ptr, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return type_descriptor->op->ber_decoder(opt_codec_ctx, type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + ptr, size, /* Buffer and its size */ + 0 /* Default tag mode is 0 */ + ); +} + +/* + * Check the set of >> tags matches the definition. + */ +asn_dec_rval_t +ber_check_tags(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx, + const void *ptr, size_t size, int tag_mode, int last_tag_form, + ber_tlv_len_t *last_length, int *opt_tlv_form) { + ssize_t consumed_myself = 0; + ssize_t tag_len; + ssize_t len_len; + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_len_t limit_len = -1; + int expect_00_terminators = 0; + int tlv_constr = -1; /* If CHOICE, opt_tlv_form is not given */ + int step = opt_ctx ? opt_ctx->step : 0; /* Where we left previously */ + int tagno; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + RETURN(RC_FAIL); + + /* + * So what does all this implicit skip stuff mean? + * Imagine two types, + * A ::= [5] IMPLICIT T + * B ::= [2] EXPLICIT T + * Where T is defined as + * T ::= [4] IMPLICIT SEQUENCE { ... } + * + * Let's say, we are starting to decode type A, given the + * following TLV stream: <5> <0>. What does this mean? + * It means that the type A contains type T which is, + * in turn, empty. + * Remember though, that we are still in A. We cannot + * just pass control to the type T decoder. Why? Because + * the type T decoder expects <4> <0>, not <5> <0>. + * So, we must make sure we are going to receive <5> while + * still in A, then pass control to the T decoder, indicating + * that the tag <4> was implicitly skipped. The decoder of T + * hence will be prepared to treat <4> as valid tag, and decode + * it appropriately. + */ + + tagno = step /* Continuing where left previously */ + + (tag_mode==1?-1:0) + ; + ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)", + td->name, (long)size, tag_mode, step, tagno); + /* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */ + + if(tag_mode == 0 && tagno == (int)td->tags_count) { + /* + * This must be the _untagged_ ANY type, + * which outermost tag isn't known in advance. + * Fetch the tag and length separately. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + ASN_DEBUG("Advancing %ld in ANY case", + (long)(tag_len + len_len)); + ADVANCE(tag_len + len_len); + } else { + assert(tagno < (int)td->tags_count); /* At least one loop */ + } + for((void)tagno; tagno < (int)td->tags_count; tagno++, step++) { + + /* + * Fetch and process T from TLV. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + ASN_DEBUG("Fetching tag from {%p,%ld}: " + "len %ld, step %d, tagno %d got %s", + ptr, (long)size, + (long)tag_len, step, tagno, + ber_tlv_tag_string(tlv_tag)); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + + /* + * If {I}, don't check anything. + * If {I,B,C}, check B and C unless we're at I. + */ + if(tag_mode != 0 && step == 0) { + /* + * We don't expect tag to match here. + * It's just because we don't know how the tag + * is supposed to look like. + */ + } else { + assert(tagno >= 0); /* Guaranteed by the code above */ + if(tlv_tag != td->tags[tagno]) { + /* + * Unexpected tag. Too bad. + */ + ASN_DEBUG("Expected: %s, " + "expectation failed (tn=%d, tm=%d)", + ber_tlv_tag_string(td->tags[tagno]), + tagno, tag_mode + ); + RETURN(RC_FAIL); + } + } + + /* + * Attention: if there are more tags expected, + * ensure that the current tag is presented + * in constructed form (it contains other tags!). + * If this one is the last one, check that the tag form + * matches the one given in descriptor. + */ + if(tagno < ((int)td->tags_count - 1)) { + if(tlv_constr == 0) { + ASN_DEBUG("tlv_constr = %d, expfail", + tlv_constr); + RETURN(RC_FAIL); + } + } else { + if(last_tag_form != tlv_constr + && last_tag_form != -1) { + ASN_DEBUG("last_tag_form %d != %d", + last_tag_form, tlv_constr); + RETURN(RC_FAIL); + } + } + + /* + * Fetch and process L from TLV. + */ + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + ASN_DEBUG("Fetching len = %ld", (long)len_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + /* + * FIXME + * As of today, the chain of tags + * must either contain several indefinite length TLVs, + * or several definite length ones. + * No mixing is allowed. + */ + if(tlv_len == -1) { + /* + * Indefinite length. + */ + if(limit_len == -1) { + expect_00_terminators++; + } else { + ASN_DEBUG("Unexpected indefinite length " + "in a chain of definite lengths"); + RETURN(RC_FAIL); + } + ADVANCE(tag_len + len_len); + continue; + } else { + if(expect_00_terminators) { + ASN_DEBUG("Unexpected definite length " + "in a chain of indefinite lengths"); + RETURN(RC_FAIL); + } + } + + /* + * Check that multiple TLVs specify ever decreasing length, + * which is consistent. + */ + if(limit_len == -1) { + limit_len = tlv_len + tag_len + len_len; + if(limit_len < 0) { + /* Too great tlv_len value? */ + RETURN(RC_FAIL); + } + } else if(limit_len != tlv_len + tag_len + len_len) { + /* + * Inner TLV specifies length which is inconsistent + * with the outer TLV's length value. + */ + ASN_DEBUG("Outer TLV is %ld and inner is %ld", + (long)limit_len, (long)tlv_len); + RETURN(RC_FAIL); + } + + ADVANCE(tag_len + len_len); + + limit_len -= (tag_len + len_len); + if((ssize_t)size > limit_len) { + /* + * Make sure that we won't consume more bytes + * from the parent frame than the inferred limit. + */ + size = limit_len; + } + } + + if(opt_tlv_form) + *opt_tlv_form = tlv_constr; + if(expect_00_terminators) + *last_length = -expect_00_terminators; + else + *last_length = tlv_len; + + RETURN(RC_OK); +} diff --git a/src/tmx/Asn_J2735/src/r2020/ber_tlv_length.c b/src/tmx/Asn_J2735/src/r2020/ber_tlv_length.c new file mode 100644 index 000000000..0a0deec1a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ber_tlv_length.c @@ -0,0 +1,168 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r) { + const uint8_t *buf = (const uint8_t *)bufptr; + unsigned oct; + + if(size == 0) + return 0; /* Want more */ + + oct = *(const uint8_t *)buf; + if((oct & 0x80) == 0) { + /* + * Short definite length. + */ + *len_r = oct; /* & 0x7F */ + return 1; + } else { + ber_tlv_len_t len; + size_t skipped; + + if(_is_constructed && oct == 0x80) { + *len_r = -1; /* Indefinite length */ + return 1; + } + + if(oct == 0xff) { + /* Reserved in standard for future use. */ + return -1; + } + + oct &= 0x7F; /* Leave only the 7 LS bits */ + for(len = 0, buf++, skipped = 1; + oct && (++skipped <= size); buf++, oct--) { + + /* Verify that we won't overflow. */ + if(!(len >> ((8 * sizeof(len)) - (8+1)))) { + len = (len << 8) | *buf; + } else { + /* Too large length value. */ + return -1; + } + } + + if(oct == 0) { + if(len < 0 || len > RSSIZE_MAX) { + /* Length value out of sane range. */ + return -1; + } + + *len_r = len; + return skipped; + } + + return 0; /* Want more */ + } + +} + +ssize_t +ber_skip_length(const asn_codec_ctx_t *opt_codec_ctx, + int _is_constructed, const void *ptr, size_t size) { + ber_tlv_len_t vlen; /* Length of V in TLV */ + ssize_t tl; /* Length of L in TLV */ + ssize_t ll; /* Length of L in TLV */ + size_t skip; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + return -1; + + /* + * Determine the size of L in TLV. + */ + ll = ber_fetch_length(_is_constructed, ptr, size, &vlen); + if(ll <= 0) return ll; + + /* + * Definite length. + */ + if(vlen >= 0) { + skip = ll + vlen; + if(skip > size) + return 0; /* Want more */ + return skip; + } + + /* + * Indefinite length! + */ + ASN_DEBUG("Skipping indefinite length"); + for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) { + ber_tlv_tag_t tag; + + /* Fetch the tag */ + tl = ber_fetch_tag(ptr, size, &tag); + if(tl <= 0) return tl; + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + ((const char *)ptr) + tl, size - tl); + if(ll <= 0) return ll; + + skip += tl + ll; + + /* + * This may be the end of the indefinite length structure, + * two consecutive 0 octets. + * Check if it is true. + */ + if(((const uint8_t *)ptr)[0] == 0 + && ((const uint8_t *)ptr)[1] == 0) + return skip; + + ptr = ((const char *)ptr) + tl + ll; + size -= tl + ll; + } + + /* UNREACHABLE */ +} + +size_t +der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) { + size_t required_size; /* Size of len encoding */ + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + int i; + + if(len <= 127) { + /* Encoded in 1 octet */ + if(size) *buf = (uint8_t)len; + return 1; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 8; i < 8 * (int)sizeof(len); i += 8) { + if(len >> i) + required_size++; + else + break; + } + + if(size <= required_size) + return required_size + 1; + + *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */ + + /* + * Produce the len encoding, space permitting. + */ + end = buf + required_size; + for(i -= 8; buf < end; i -= 8, buf++) + *buf = (uint8_t)(len >> i); + + return required_size + 1; +} + diff --git a/src/tmx/Asn_J2735/src/r2020/ber_tlv_tag.c b/src/tmx/Asn_J2735/src/r2020/ber_tlv_tag.c new file mode 100644 index 000000000..64ec14f07 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/ber_tlv_tag.c @@ -0,0 +1,144 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { + ber_tlv_tag_t val; + ber_tlv_tag_t tclass; + size_t skipped; + + if(size == 0) + return 0; + + val = *(const uint8_t *)ptr; + tclass = (val >> 6); + if((val &= 0x1F) != 0x1F) { + /* + * Simple form: everything encoded in a single octet. + * Tag Class is encoded using two least significant bits. + */ + *tag_r = (val << 2) | tclass; + return 1; + } + + /* + * Each octet contains 7 bits of useful information. + * The MSB is 0 if it is the last octet of the tag. + */ + for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; + skipped <= size; + ptr = ((const char *)ptr) + 1, skipped++) { + unsigned int oct = *(const uint8_t *)ptr; + if(oct & 0x80) { + val = (val << 7) | (oct & 0x7F); + /* + * Make sure there are at least 9 bits spare + * at the MS side of a value. + */ + if(val >> ((8 * sizeof(val)) - 9)) { + /* + * We would not be able to accommodate + * any more tag bits. + */ + return -1; + } + } else { + val = (val << 7) | oct; + *tag_r = (val << 2) | tclass; + return skipped; + } + } + + return 0; /* Want more */ +} + + +ssize_t +ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) { + char buf[sizeof("[APPLICATION ]") + 32]; + ssize_t ret; + + ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + if(ret >= (ssize_t)sizeof(buf) || ret < 2) { + errno = EPERM; + return -1; + } + + return fwrite(buf, 1, ret, f); +} + +ssize_t +ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) { + const char *type = 0; + int ret; + + switch(tag & 0x3) { + case ASN_TAG_CLASS_UNIVERSAL: type = "UNIVERSAL "; break; + case ASN_TAG_CLASS_APPLICATION: type = "APPLICATION "; break; + case ASN_TAG_CLASS_CONTEXT: type = ""; break; + case ASN_TAG_CLASS_PRIVATE: type = "PRIVATE "; break; + } + + ret = snprintf(buf, size, "[%s%u]", type, ((unsigned)tag) >> 2); + if(ret <= 0 && size) buf[0] = '\0'; /* against broken libc's */ + + return ret; +} + +char * +ber_tlv_tag_string(ber_tlv_tag_t tag) { + static char buf[sizeof("[APPLICATION ]") + 32]; + + (void)ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + + return buf; +} + + +size_t +ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufp, size_t size) { + int tclass = BER_TAG_CLASS(tag); + ber_tlv_tag_t tval = BER_TAG_VALUE(tag); + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + size_t required_size; + size_t i; + + if(tval <= 30) { + /* Encoded in 1 octet */ + if(size) buf[0] = (tclass << 6) | tval; + return 1; + } else if(size) { + *buf++ = (tclass << 6) | 0x1F; + size--; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) { + if(tval >> i) + required_size++; + else + break; + } + + if(size < required_size) + return required_size + 1; + + /* + * Fill in the buffer, space permitting. + */ + end = buf + required_size - 1; + for(i -= 7; buf < end; i -= 7, buf++) + *buf = 0x80 | ((tval >> i) & 0x7F); + *buf = (tval & 0x7F); /* Last octet without high bit */ + + return required_size + 1; +} + diff --git a/src/tmx/Asn_J2735/src/r2020/constr_CHOICE.c b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE.c new file mode 100644 index 000000000..5f52e3d8b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE.c @@ -0,0 +1,358 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_TYPE_operation_t asn_OP_CHOICE = { + CHOICE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + CHOICE_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + CHOICE_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + CHOICE_decode_ber, + CHOICE_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + CHOICE_decode_xer, + CHOICE_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + CHOICE_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + CHOICE_decode_oer, + CHOICE_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + CHOICE_decode_uper, + CHOICE_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + CHOICE_decode_aper, + CHOICE_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + CHOICE_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + CHOICE_outmost_tag +}; + +ber_tlv_tag_t +CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + assert(tag_mode == 0); (void)tag_mode; + assert(tag == 0); (void)tag; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + if(present > 0 && present <= td->elements_count) { + const asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *) + ((const char *)ptr + elm->memb_offset); + } else { + memb_ptr = (const void *) + ((const char *)ptr + elm->memb_offset); + } + + return asn_TYPE_outmost_tag(elm->type, memb_ptr, + elm->tag_mode, elm->tag); + } else { + return (ber_tlv_tag_t)-1; + } +} + +/* + * See the definitions. + */ +static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, + const void *sptr, asn_TYPE_member_t **elm, + unsigned *present); + +int +CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + return 0; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory CHOICE element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: no CHOICE element given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +void +CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as CHOICE", td->name); + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + /* + * Free that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)ptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)ptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } +} + + +/* + * The following functions functions offer protection against -fshort-enums, + * compatible with little- and big-endian machines. + * If assertion is triggered, either disable -fshort-enums, or add an entry + * here with the ->pres_size of your target stracture. + * Unless the target structure is packed, the ".present" member + * is guaranteed to be aligned properly. ASN.1 compiler itself does not + * produce packed code. + */ +unsigned +_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, + unsigned pres_size) { + const void *present_ptr; + unsigned present; + + present_ptr = ((const char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): present = *(const unsigned int *)present_ptr; break; + case sizeof(short): present = *(const unsigned short *)present_ptr; break; + case sizeof(char): present = *(const unsigned char *)present_ptr; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + return 0; /* If not aborted, pass back safe value */ + } + + return present; +} + +void +_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, + unsigned present) { + void *present_ptr; + present_ptr = ((char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): *(unsigned int *)present_ptr = present; break; + case sizeof(short): *(unsigned short *)present_ptr = present; break; + case sizeof(char): *(unsigned char *)present_ptr = present; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + } +} + +static const void * +_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_TYPE_member_t **elm_ptr, unsigned *present_out) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + *elm_ptr = NULL; + *present_out = 0; + return NULL; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + *present_out = present; + + /* + * The presence index is intentionally 1-based to avoid + * treating zeroed structure as a valid one. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *const elm = &td->elements[present - 1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + *elm_ptr = elm; + return memb_ptr; + } else { + *elm_ptr = NULL; + return NULL; + } + +} + +int +CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + asn_TYPE_member_t *aelm; + asn_TYPE_member_t *belm; + unsigned apresent = 0; + unsigned bpresent = 0; + const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); + const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); + + if(amember && bmember) { + if(apresent == bpresent) { + assert(aelm == belm); + return aelm->type->op->compare_struct(aelm->type, amember, bmember); + } else if(apresent < bpresent) { + return -1; + } else { + return 1; + } + } else if(!amember) { + return -1; + } else { + return 1; + } +} + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned +CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); +} + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int +CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, + unsigned present) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned old_present; + + if(!sptr) { + return -1; + } + + if(present > td->elements_count) + return -1; + + old_present = + _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + if(present == old_present) + return 0; + + if(old_present != 0) { + assert(old_present <= td->elements_count); + ASN_STRUCT_RESET(*td, sptr); + } + + _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); + + return 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_aper.c b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_aper.c new file mode 100644 index 000000000..1bce6dc97 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_aper.c @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct = NULL; + asn_TYPE_member_t *elm = NULL; /* CHOICE's element */ + void *memb_ptr = NULL; + void **memb_ptr2 = NULL; + void *st = *sptr; + int value = 0; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + + if (ct && ct->upper_bound >= ct->lower_bound) { + value = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) + value = specs->from_canonical_order[value]; + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + int present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present <= 0 || (unsigned)present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present = specs->to_canonical_order[present]; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + if(ct && ct->range_bits >= 0) { + if(present < ct->lower_bound + || present > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) + ASN__ENCODE_FAILED; + int n = present - specs->ext_start; + if(n <= 63) { + if(n < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n, 7)) ASN__ENCODE_FAILED; + } else + ASN__ENCODE_FAILED; + if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_ber.c b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_ber.c new file mode 100644 index 000000000..0d14cf382 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_ber.c @@ -0,0 +1,447 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +/* + * Tags are canonically sorted in the tag to member table. + */ +static int +_search4tag(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) + return 0; + else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * The decoder of the CHOICE type. + */ +asn_dec_rval_t +CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + ssize_t tag_len; /* Length of TLV's T */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as CHOICE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + if(tag_mode || td->tags_count) { + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, -1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) { + /* ?Subtracted below! */ + ctx->left += rval.consumed; + } + ADVANCE(rval.consumed); + } else { + ctx->left = -1; + } + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key; + + key.el_tag = tlv_tag; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG("Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + + ASN_DEBUG("Skipping unknown tag %s", + ber_tlv_tag_string(tlv_tag)); + + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + RETURN(RC_OK); + } + } while(0); + + case 2: + /* + * PHASE 2. + * Read in the element. + */ + do { + asn_TYPE_member_t *elm;/* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &elements[ctx->step]; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + /* Set presence to be able to free it properly at any time */ + _set_present_idx(st, specs->pres_offset, + specs->pres_size, ctx->step + 1); + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, + memb_ptr2, ptr, LEFT, + elm->tag_mode); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + RETURN(RC_FAIL); + case RC_FAIL: /* Fatal error */ + RETURN(rval.code); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } while(0); + + NEXT_PHASE(ctx); + + /* Fall through */ + case 3: + ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", + td->name, (long)ctx->left, (long)size, + tag_mode, td->tags_count); + + if(ctx->left > 0) { + /* + * The type must be fully decoded + * by the CHOICE member-specific decoder. + */ + RETURN(RC_FAIL); + } + + if(ctx->left == -1 + && !(tag_mode || td->tags_count)) { + /* + * This is an untagged CHOICE. + * It doesn't contain nothing + * except for the member itself, including all its tags. + * The decoding is completed. + */ + NEXT_PHASE(ctx); + break; + } + + /* + * Read in the "end of data chunks"'s. + */ + while(ctx->left < 0) { + ssize_t tl; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * Expected <0><0>... + */ + if(((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + continue; + } + } else { + ASN_DEBUG("Unexpected continuation in %s", + td->name); + RETURN(RC_FAIL); + } + + /* UNREACHABLE */ + } + + NEXT_PHASE(ctx); + case 4: + /* No meaningful work here */ + break; + } + + RETURN(RC_OK); +} + +asn_enc_rval_t +CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + asn_enc_rval_t erval = {0,0,0}; + const void *memb_ptr; + size_t computed_size = 0; + unsigned present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("%s %s as CHOICE", + cb ? "Encoding" : "Estimating", td->name); + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) { + if(present == 0 && td->elements_count == 0) { + /* The CHOICE is empty?! */ + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + ASN__ENCODE_FAILED; + } + + /* + * Seek over the present member of the structure. + */ + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + if(elm->optional) { + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* + * If the CHOICE itself is tagged EXPLICIT: + * T ::= [2] EXPLICIT CHOICE { ... } + * Then emit the appropriate tags. + */ + if(tag_mode == 1 || td->tags_count) { + /* + * For this, we need to pre-compute the member. + */ + ssize_t ret; + + /* Encode member with its tag */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, + elm->tag, 0, 0); + if(erval.encoded == -1) + return erval; + + /* Encode CHOICE with parent or my own tag */ + ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, + cb, app_key); + if(ret == -1) + ASN__ENCODE_FAILED; + computed_size += ret; + } + + /* + * Encode the single underlying member. + */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + + ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", + (long)erval.encoded, (long)computed_size); + + erval.encoded += computed_size; + + return erval; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_oer.c b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_oer.c new file mode 100644 index 000000000..6a662eab5 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_oer.c @@ -0,0 +1,375 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#undef SET_PHASE +#define SET_PHASE(ctx, value) \ + do { \ + ctx->phase = value; \ + ctx->step = 0; \ + } while(0) + +/* + * Tags are canonically sorted in the tag to member table. + */ +static int +_search4tag(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) + return 0; + else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * X.696 (08/2015) #8.7 Encoding of tags + */ +static ssize_t +oer_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { + ber_tlv_tag_t val; + ber_tlv_tag_t tclass; + size_t skipped; + + if(size == 0) + return 0; + + val = *(const uint8_t *)ptr; + tclass = (val >> 6); + if((val & 0x3F) != 0x3F) { + /* #8.7.1 */ + *tag_r = ((val & 0x3F) << 2) | tclass; + return 1; + } + + /* + * Each octet contains 7 bits of useful information. + * The MSB is 0 if it is the last octet of the tag. + */ + for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; skipped <= size; + ptr = ((const char *)ptr) + 1, skipped++) { + unsigned int oct = *(const uint8_t *)ptr; + if(oct & 0x80) { + val = (val << 7) | (oct & 0x7F); + /* + * Make sure there are at least 9 bits spare + * at the MS side of a value. + */ + if(val >> ((8 * sizeof(val)) - 9)) { + /* + * We would not be able to accommodate + * any more tag bits. + */ + return -1; + } + } else { + val = (val << 7) | oct; + *tag_r = (val << 2) | tclass; + return skipped; + } + } + + return 0; /* Want more */ +} + +asn_dec_rval_t +CHOICE_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + (void)constraints; + + ASN_DEBUG("Decoding %s as CHOICE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + switch(ctx->phase) { + case 0: { + /* + * Discover the tag. + */ + ber_tlv_tag_t tlv_tag; /* T from TLV */ + ssize_t tag_len; /* Length of TLV's T */ + + tag_len = oer_fetch_tag(ptr, size, &tlv_tag); + switch(tag_len) { + case 0: + ASN__DECODE_STARVED; + case -1: + ASN__DECODE_FAILED; + } + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + + t2m = (const asn_TYPE_tag2member_t *)bsearch( + &key, specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG( + "Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip open type extension */ + ASN_DEBUG( + "Not implemented skipping open type extension for tag %s", + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + } while(0); + + + ADVANCE(tag_len); + } + /* Fall through */ + case 1: { + asn_TYPE_member_t *elm = &elements[ctx->step]; /* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + asn_dec_rval_t rval = {0,0}; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Set presence to be able to free it properly at any time */ + (void)CHOICE_variant_set_presence(td, st, ctx->step + 1); + + if(specs->ext_start >= 0 && specs->ext_start <= ctx->step) { + ssize_t got = + oer_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, + memb_ptr2, ptr, size); + if(got < 0) ASN__DECODE_FAILED; + if(got == 0) ASN__DECODE_STARVED; + rval.code = RC_OK; + rval.consumed = got; + } else { + rval = elm->type->op->oer_decoder( + opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, memb_ptr2, ptr, + size); + } + rval.consumed += consumed_myself; + switch(rval.code) { + case RC_OK: + NEXT_PHASE(ctx); + case RC_WMORE: + break; + case RC_FAIL: + SET_PHASE(ctx, 3); /* => 3 */ + } + return rval; + } + case 2: + /* Already decoded everything */ + RETURN(RC_OK); + case 3: + /* Failed to decode, after all */ + RETURN(RC_FAIL); + } + + RETURN(RC_FAIL); +} + +/* + * X.696 (08/2015) #8.7 Encoding of tags + */ +static ssize_t +oer_put_tag(ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { + uint8_t tclass = BER_TAG_CLASS(tag); + ber_tlv_tag_t tval = BER_TAG_VALUE(tag); + + if(tval < 0x3F) { + uint8_t b = (uint8_t)((tclass << 6) | tval); + if(cb(&b, 1, app_key) < 0) { + return -1; + } + return 1; + } else { + uint8_t buf[1 + 2 * sizeof(tval)]; + uint8_t *b = &buf[sizeof(buf)-1]; /* Last addressable */ + size_t encoded; + for(; ; tval >>= 7) { + if(tval >> 7) { + *b-- = 0x80 | (tval & 0x7f); + } else { + *b-- = tval & 0x7f; + break; + } + } + *b = (uint8_t)((tclass << 6) | 0x3F); + encoded = sizeof(buf) - (b - buf); + if(cb(b, encoded, app_key) < 0) { + return -1; + } + return encoded; + } + +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +CHOICE_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + unsigned present; + const void *memb_ptr; + ber_tlv_tag_t tag; + ssize_t tag_len; + asn_enc_rval_t er = {0, 0, 0}; + + (void)constraints; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("OER %s encoding as CHOICE", td->name); + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN_DEBUG("CHOICE %s member is not selected", td->name); + ASN__ENCODE_FAILED; + } + + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + tag = asn_TYPE_outmost_tag(elm->type, memb_ptr, elm->tag_mode, elm->tag); + if(tag == 0) { + ASN__ENCODE_FAILED; + } + + tag_len = oer_put_tag(tag, cb, app_key); + if(tag_len < 0) { + ASN__ENCODE_FAILED; + } + + if(specs->ext_start >= 0 && (unsigned)specs->ext_start <= (present-1)) { + ssize_t encoded = oer_open_type_put(elm->type, + elm->encoding_constraints.oer_constraints, + memb_ptr, cb, app_key); + if(encoded < 0) ASN__ENCODE_FAILED; + er.encoded = tag_len + encoded; + } else { + er = elm->type->op->oer_encoder( + elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, + app_key); + if(er.encoded >= 0) er.encoded += tag_len; + } + + return er; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_print.c b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_print.c new file mode 100644 index 000000000..29709e22c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_print.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + /* + * Print that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Print member's name and stuff */ + if(0) { + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + } + + return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, + cb, app_key); + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_rfill.c b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_rfill.c new file mode 100644 index 000000000..979f45a0f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_rfill.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_random_fill_result_t res; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm; + unsigned present; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *st = *sptr; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + present = asn_random_between(1, td->elements_count); + elm = &td->elements[present - 1]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + res = elm->type->op->random_fill(elm->type, memb_ptr2, + &elm->encoding_constraints, max_length); + _set_present_idx(st, specs->pres_offset, specs->pres_size, present); + if(res.code == ARFILL_OK) { + *sptr = st; + } else { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + } + + return res; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_uper.c b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_uper.c new file mode 100644 index 000000000..c2f66cf71 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_uper.c @@ -0,0 +1,191 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) { + ASN_DEBUG("CHOICE presence from wire %d", value); + value = specs->from_canonical_order[value]; + ASN_DEBUG("CHOICE presence index effective %d", value); + } + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + if(ct && ct->range_bits >= 0) { + if(present_enc < ct->lower_bound + || present_enc > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG( + "CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + + elm = &td->elements[present]; + ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, + present_enc); + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) ASN__ENCODE_FAILED; + if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_xer.c b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_xer.c new file mode 100644 index 000000000..1da08c4eb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_CHOICE_xer.c @@ -0,0 +1,316 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value of a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + if(ctx->phase == 0 && !*xml_tag) + ctx->phase = 1; /* Skip the outer tag checking phase */ + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Only waiting for closing tag. + * Phase 4: Skipping unknown extensions. + * Phase 5: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 4;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the member. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + unsigned old_present; + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Start/Continue decoding the inner member */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, + elm->name, + buf_ptr, size); + XER_ADVANCE(tmprval.consumed); + ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", + elm->type->name, tmprval.code); + old_present = _fetch_present_idx(st, + specs->pres_offset, + specs->pres_size); + assert(old_present == 0 || old_present == edx + 1); + /* Record what we've got */ + _set_present_idx(st, + specs->pres_offset, + specs->pres_size, edx + 1); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 3; + /* Fall through */ + } + + /* No need to wait for closing tag; special mode. */ + if(ctx->phase == 3 && !*xml_tag) { + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + xml_tag, tcv); + + /* Skip the extensions section */ + if(ctx->phase == 4) { + ASN_DEBUG("skip_unknown(%d, %ld)", + tcv, (long)ctx->left); + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 5; + RETURN(RC_FAIL); + case 1: + ctx->phase = 3; + /* Fall through */ + case 0: + XER_ADVANCE(ch_size); + continue; + case 2: + ctx->phase = 3; + break; + } + } + + switch(tcv) { + case XCT_BOTH: + break; /* No CHOICE? */ + case XCT_CLOSING: + if(ctx->phase != 3) + break; + XER_ADVANCE(ch_size); + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + if(ctx->phase != 1) + break; /* Really unexpected */ + + /* + * Search which inner member corresponds to this tag. + */ + for(edx = 0; edx < td->elements_count; edx++) { + elm = &td->elements[edx]; + tcv = xer_check_tag(buf_ptr,ch_size,elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + edx = td->elements_count; + break; /* Phase out */ + } + break; + } + if(edx != td->elements_count) + continue; + + /* It is expected extension */ + if(specs->ext_start != -1) { + ASN_DEBUG("Got anticipated extension"); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + ctx->phase = 3; /* Terminating */ + } else { + ctx->left = 1; + ctx->phase = 4; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" + " (ph=%d, tag=%s)", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + td->name, ctx->phase, xml_tag); + break; + } + + ctx->phase = 5; /* Phase out, just in case */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + unsigned present = 0; + + if(!sptr) + ASN__ENCODE_FAILED; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr = NULL; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + er.encoded = 0; + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE.c new file mode 100644 index 000000000..8397d0c1b --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE.c @@ -0,0 +1,197 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_TYPE_operation_t asn_OP_SEQUENCE = { + SEQUENCE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + SEQUENCE_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + SEQUENCE_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + SEQUENCE_decode_ber, + SEQUENCE_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + SEQUENCE_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + SEQUENCE_decode_oer, + SEQUENCE_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + SEQUENCE_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; + +void +SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + size_t edx; + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_struct_ctx_t *ctx; /* Decoder context */ + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as SEQUENCE", td->name); + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + /* Clean parsing context */ + ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); + FREEMEM(ctx->ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset( + sptr, 0, + ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); + break; + } +} + +int +SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t edx; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Iterate over structure members and check their validity. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + asn_constr_check_f *constr; + int ret; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + continue; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + constr = elm->encoding_constraints.general_constraints; + if(!constr) + constr = elm->type->encoding_constraints.general_constraints; + + ret = constr(elm->type, memb_ptr, ctfailcb, app_key); + if(ret) return ret; + } + + return 0; +} + +int +SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + size_t edx; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *amemb; + const void *bmemb; + int ret; + + if(elm->flags & ATF_POINTER) { + amemb = + *(const void *const *)((const char *)aptr + elm->memb_offset); + bmemb = + *(const void *const *)((const char *)bptr + elm->memb_offset); + if(!amemb) { + if(!bmemb) continue; + if(elm->default_value_cmp + && elm->default_value_cmp(bmemb) == 0) { + /* A is absent, but B is present and equal to DEFAULT */ + continue; + } + return -1; + } else if(!bmemb) { + if(elm->default_value_cmp + && elm->default_value_cmp(amemb) == 0) { + /* B is absent, but A is present and equal to DEFAULT */ + continue; + } + return 1; + } + } else { + amemb = (const void *)((const char *)aptr + elm->memb_offset); + bmemb = (const void *)((const char *)bptr + elm->memb_offset); + } + + ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); + if(ret != 0) return ret; + } + + return 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF.c new file mode 100644 index 000000000..9c5d6cded --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF.c @@ -0,0 +1,92 @@ +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { + SEQUENCE_OF_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + SEQUENCE_OF_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + SEQUENCE_OF_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + SEQUENCE_OF_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ + SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ + SEQUENCE_OF_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + SEQUENCE_OF_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; + +int +SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); + const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); + ssize_t idx; + + if(a && b) { + ssize_t common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, a->array[idx], b->array[idx]); + if(ret) return ret; + } + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_aper.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_aper.c new file mode 100644 index 000000000..4e9207b71 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_aper.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + asn_TYPE_member_t *elm = td->elements; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = (list->count < ct->lower_bound + || list->count > ct->upper_bound); + ASN_DEBUG("lb %lld ub %lld %s", + (long long int)ct->lower_bound, + (long long int)ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) + ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) + ASN__ENCODE_FAILED; + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ +/* + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; +*/ + if (ct->lower_bound == ct->upper_bound && ct->upper_bound < 65536) { + /* No length determinant */ + } else if (aper_put_length(po, ct->lower_bound, ct->upper_bound, list->count - ct->lower_bound, 0) < 0) + ASN__ENCODE_FAILED; + } + + for(seq = -1; seq < list->count;) { + ssize_t mayEncode; + int need_eom = 0; + if(seq < 0) seq = 0; + if(ct && ct->effective_bits >= 0) { + mayEncode = list->count; + } else { + mayEncode = aper_put_length(po, -1, -1, list->count - seq, &need_eom); + if(mayEncode < 0) ASN__ENCODE_FAILED; + } + + while(mayEncode--) { + void *memb_ptr = list->array[seq++]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->aper_encoder(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, po); + if(er.encoded == -1) + ASN__ENCODE_FAILED; + } + + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_ber.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_ber.c new file mode 100644 index 000000000..6c308d216 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_ber.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The DER encoder of the SEQUENCE OF type. + */ +asn_enc_rval_t +SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + asn_enc_rval_t erval = {0,0,0}; + int edx; + + ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, + cb, app_key); + if(encoding_size == -1) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + return erval; + } + + computed_size += encoding_size; + if(!cb) { + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + encoding_size += erval.encoded; + } + + if(computed_size != (size_t)encoding_size) { + /* + * Encoded size is not equal to the computed size. + */ + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + } else { + erval.encoded = computed_size; + erval.structure_ptr = 0; + erval.failed_type = 0; + } + + return erval; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_uper.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_uper.c new file mode 100644 index 000000000..1d80fdf1c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_uper.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + const asn_TYPE_member_t *elm = td->elements; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, + po); + if(er.encoded == -1) ASN__ENCODE_FAILED; + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_xer.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_xer.c new file mode 100644 index 000000000..1a939307f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_OF_xer.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 + : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_aper.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_aper.c new file mode 100644 index 000000000..7ea4fc50a --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_aper.c @@ -0,0 +1,457 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +asn_dec_rval_t +SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ +#if 0 + int padding; +#endif + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } +#if 0 + /* Get Padding */ + padding = (8 - (pd->moved % 8)) % 8; + if(padding > 0) + ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); +#if 0 /* old way of removing padding */ + per_get_few_bits(pd, padding); +#else /* Experimental fix proposed by @mhanna123 */ + if(edx != (td->elements_count-1)) + per_get_few_bits(pd, padding); + else { + if(specs->roms_count && (padding > 0)) + ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); + else + per_get_few_bits(pd, padding); + } +#endif /* dealing with padding */ +#endif + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + if (OPEN_TYPE_aper_is_unknown_type(td, st, elm)) { + rv = OPEN_TYPE_aper_unknown_type_discard_bytes(pd); + FREEMEM(opres); + return rv; + } + rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = aper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) + ASN__DECODE_STARVED; + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %zd bits (%x..)", + td->name, bmlength, *epres); + + /* Deal with padding */ + if (aper_get_align(pd) < 0) + ASN__DECODE_STARVED; + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%zu is not extension", edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: + break; + case 0: + continue; + default: + if(aper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + } + break; + } + + FREEMEM(epres); + } + + /* Fill DEFAULT members in extensions */ + for(edx = specs->roms_count; edx < specs->roms_count + + specs->aoms_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void **memb_ptr2; /* Pointer to member pointer */ + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%s (@%zu) is not extension", elm->type->name, edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s (@%zu) present => %d", + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) + return -1; + /* Encode as open type field */ + if(po2 && present && aper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 0) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %zu not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + ASN_DEBUG("Encoding %s->%s", td->name, elm->name); + er = elm->type->op->aper_encoder(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po); + if(er.encoded == -1) + return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(aper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_ber.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_ber.c new file mode 100644 index 000000000..8efec2492 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_ber.c @@ -0,0 +1,612 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#undef PHASE_OUT +#define PHASE_OUT(ctx) \ + do { \ + ctx->phase = 10; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +/* + * Tags are canonically sorted in the tag2element map. + */ +static int +_t2e_cmp(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) { + if(a->el_no > b->el_no) + return 1; + /* + * Important: we do not check + * for a->el_no <= b->el_no! + */ + return 0; + } else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * The decoder of the SEQUENCE type. + */ +asn_dec_rval_t +SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* SEQUENCE element's index */ + + ASN_DEBUG("Decoding %s as SEQUENCE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Subtracted below! */ + ADVANCE(rval.consumed); + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next member from the list of + * this structure's elements. + * (ctx->step) stores the member being processed + * between invocations and the microphase {0,1} of parsing + * that member: + * step = ( * 2 + ). + */ + for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; + edx++, ctx->step = (ctx->step & ~1) + 2) { + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + ssize_t tag_len; /* Length of TLV's T */ + size_t opt_edx_end; /* Next non-optional element */ + size_t n; + int use_bsearch; + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" + " opt=%d ec=%d", + td->name, (int)ctx->left, edx, + elements[edx].flags, elements[edx].optional, + td->elements_count); + + if(ctx->left == 0 /* No more stuff is expected */ + && ( + /* Explicit OPTIONAL specification reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx))) { + ASN_DEBUG("End of SEQUENCE %s", td->name); + /* + * Found the legitimate end of the structure. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " + "(%s) is %s encoded in %d bytes, of frame %ld", + td->name, edx, elements[edx].name, + ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } else if(((const uint8_t *)ptr)[1] == 0) { + ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, + elements[edx].optional, td->elements_count); + if((edx + elements[edx].optional == td->elements_count) + || IN_EXTENSION_GROUP(specs, edx)) { + /* + * Yeah, baby! Found the terminator + * of the indefinite length structure. + */ + /* + * Proceed to the canonical + * finalization function. + * No advancing is necessary. + */ + goto phase3; + } + } + } + + /* + * Find the next available type with this tag. + */ + use_bsearch = 0; + opt_edx_end = edx + elements[edx].optional + 1; + if(opt_edx_end > td->elements_count) + opt_edx_end = td->elements_count; /* Cap */ + else if(opt_edx_end - edx > 8) { + /* Limit the scope of linear search... */ + opt_edx_end = edx + 8; + use_bsearch = 1; + /* ... and resort to bsearch() */ + } + for(n = edx; n < opt_edx_end; n++) { + if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { + /* + * Found element corresponding to the tag + * being looked at. + * Reposition over the right element. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].flags & ATF_ANY_TYPE) { + /* + * This is the ANY type, which may bear + * any flag whatsoever. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].tag == (ber_tlv_tag_t)-1) { + use_bsearch = 1; + break; + } + } + if(use_bsearch) { + /* + * Resort to a binary search over + * sorted array of tags. + */ + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + key.el_no = edx; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _t2e_cmp); + if(t2m) { + const asn_TYPE_tag2member_t *best = 0; + const asn_TYPE_tag2member_t *t2m_f, *t2m_l; + size_t edx_max = edx + elements[edx].optional; + /* + * Rewind to the first element with that tag, + * `cause bsearch() does not guarantee order. + */ + t2m_f = t2m + t2m->toff_first; + t2m_l = t2m + t2m->toff_last; + for(t2m = t2m_f; t2m <= t2m_l; t2m++) { + if(t2m->el_no > edx_max) break; + if(t2m->el_no < edx) continue; + best = t2m; + } + if(best) { + edx = best->el_no; + ctx->step = 1 + 2 * edx; + goto microphase2; + } + } + n = opt_edx_end; + } + if(n == opt_edx_end) { + /* + * If tag is unknown, it may be either + * an unknown (thus, incorrect) tag, + * or an extension (...), + * or an end of the indefinite-length structure. + */ + if(!IN_EXTENSION_GROUP(specs, + edx + elements[edx].optional)) { + ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + ASN_DEBUG("Expected tag %s (%s)%s", + ber_tlv_tag_string(elements[edx].tag), + elements[edx].name, + elements[edx].optional ?" or alternatives":""); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + edx += elements[edx].optional; + + ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + ASN_DEBUG("Skip length %d in %s", + (int)skip, td->name); + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + ctx->step -= 2; + edx--; + continue; /* Try again with the next tag */ + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elements[edx].flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elements[edx].memb_offset; + memb_ptr2 = &memb_ptr; + } + /* + * Invoke the member fetch routine according to member's type + */ + if(elements[edx].flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); + } else { + rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, + elements[edx].type, + memb_ptr2, ptr, LEFT, + elements[edx].tag_mode); + } + ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " + "in %d bytes rval.code %d, size=%d", + td->name, edx, elements[edx].type->name, + (int)LEFT, (int)rval.consumed, rval.code, (int)size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", + (long)ctx->left, (long)size); + /* Fall through */ + case RC_FAIL: /* Fatal error */ + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all structure members) */ + + phase3: + ctx->phase = 3; + /* Fall through */ + case 3: /* 00 and other tags expected */ + case 4: /* only 00's expected */ + + ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", + td->name, (long)ctx->left, (long)size); + + /* + * Skip everything until the end of the SEQUENCE. + */ + while(ctx->left) { + ssize_t tl, ll; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * If expected <0><0>... + */ + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + ctx->phase = 4; + continue; + } + } + + if(!IN_EXTENSION_GROUP(specs, td->elements_count) + || ctx->phase == 4) { + ASN_DEBUG("Unexpected continuation " + "of a non-extensible type " + "%s (SEQUENCE): %s", + td->name, + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tl, LEFT - tl); + switch(ll) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(tl + ll); + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + + +/* + * The DER encoder of the SEQUENCE type. + */ +asn_enc_rval_t +SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t computed_size = 0; + asn_enc_rval_t erval = {0,0,0}; + ssize_t ret; + size_t edx; + + ASN_DEBUG("%s %s as SEQUENCE", + cb?"Encoding":"Estimating", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", + edx, elm->name, (long)erval.encoded); + } + + /* + * Encode the TLV for the sequence itself. + */ + ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); + if(ret == -1) + ASN__ENCODE_FAILED; + erval.encoded = computed_size + ret; + + if(!cb) ASN__ENCODED_OK(erval); + + /* + * Encode all members. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t tmperval = {0,0,0}; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) continue; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, cb, app_key); + if(tmperval.encoded == -1) + return tmperval; + computed_size -= tmperval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", + edx, elm->name, td->name, (long)tmperval.encoded); + } + + if(computed_size != 0) + /* + * Encoded size is not equal to the computed size. + */ + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(erval); +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_oer.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_oer.c new file mode 100644 index 000000000..cc34ba4e3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_oer.c @@ -0,0 +1,557 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +#define IN_ROOT_GROUP_PRED(edx) \ + edx < (specs->first_extension < 0 ? td->elements_count \ + : (size_t)specs->first_extension) + +#define FOR_IN_ROOT_GROUP(edx) for(edx = 0; IN_ROOT_GROUP_PRED(edx); edx++) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * Return pointer to a member. + */ +static void ** +element_ptrptr(void *struct_ptr, asn_TYPE_member_t *elm, void **tmp_save_ptr) { + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + return (void **)((char *)struct_ptr + elm->memb_offset); + } else { + assert(tmp_save_ptr); + *tmp_save_ptr = (void *)((char *)struct_ptr + elm->memb_offset); + return tmp_save_ptr; + } +} + +static const void * +element_ptr(const void *struct_ptr, const asn_TYPE_member_t *elm) { + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + return *(const void *const *)((const char *)struct_ptr + + elm->memb_offset); + } else { + return (const void *)((const char *)struct_ptr + elm->memb_offset); + } +} + +asn_dec_rval_t +SEQUENCE_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *ptr, size_t size) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + void *st = *struct_ptr; /* Target structure */ + asn_struct_ctx_t *ctx; /* Decoder context */ + size_t consumed_myself = 0; /* Consumed bytes from ptr. */ + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously. + */ + switch(ctx->phase) { + case 0: { + /* + * Fetch preamble. + */ + asn_bit_data_t *preamble; + int has_extensions_bit = (specs->first_extension >= 0); + size_t preamble_bits = (has_extensions_bit + specs->roms_count); + size_t preamble_bytes = ((7 + preamble_bits) >> 3); + + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 0", td->name); + + ASN_DEBUG( + "Expecting preamble bits %" ASN_PRI_SIZE " for %s (including %d extension bits)", + preamble_bits, td->name, has_extensions_bit); + + if(preamble_bytes > size) { + ASN__DECODE_STARVED; + } + + preamble = asn_bit_data_new_contiguous(ptr, preamble_bits); + if(!preamble) { + RETURN(RC_FAIL); + } + preamble->nboff = has_extensions_bit; + ctx->ptr = preamble; + ADVANCE(preamble_bytes); + } + NEXT_PHASE(ctx); + /* FALL THROUGH */ + case 1: { + /* Decode components of the extension root */ + asn_bit_data_t *preamble = ctx->ptr; + size_t edx; + + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 1 (Root)", td->name); + + assert(preamble); + + for(edx = (ctx->step >> 1); IN_ROOT_GROUP_PRED(edx); + edx++, ctx->step = (ctx->step & ~1) + 2) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + ASN_DEBUG("Decoding %s->%s", td->name, elm->name); + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + if(ctx->step & 1) { + goto microphase2_decode_continues; + } + + + if(elm->optional) { + int32_t present = asn_get_few_bits(preamble, 1); + if(present < 0) { + ASN_DEBUG("Presence map ended prematurely: %d", present); + RETURN(RC_FAIL); + } else if(present == 0) { + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + void *tmp; + if(elm->default_value_set( + element_ptrptr(st, elm, &tmp))) { + RETURN(RC_FAIL); + } + } + /* The member is not present. */ + continue; + } + /* Present OPTIONAL or DEFAULT component. */ + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2_decode_continues: + if(elm->flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_oer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + void *save_memb_ptr; /* Temporary reference. */ + void **memb_ptr2; /* Pointer to a pointer to a memmber */ + + memb_ptr2 = element_ptrptr(st, elm, &save_memb_ptr); + + rval = elm->type->op->oer_decoder( + opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, memb_ptr2, ptr, + size); + } + switch(rval.code) { + case RC_OK: + ADVANCE(rval.consumed); + break; + case RC_WMORE: + ASN_DEBUG("More bytes needed at element %s \"%s\"", td->name, + elm->name); + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + case RC_FAIL: + ASN_DEBUG("Decoding failed at element %s \"%s\"", td->name, + elm->name); + RETURN(RC_FAIL); + } + } /* for(all root members) */ + + } + NEXT_PHASE(ctx); + /* FALL THROUGH */ + case 2: + assert(ctx->ptr); + { + /* Cleanup preamble. */ + asn_bit_data_t *preamble = ctx->ptr; + asn_bit_data_t *extadds; + int has_extensions_bit = (specs->first_extension >= 0); + int extensions_present = + has_extensions_bit + && (preamble->buffer == NULL + || (((const uint8_t *)preamble->buffer)[0] & 0x80)); + uint8_t unused_bits; + size_t len = 0; + ssize_t len_len; + + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 2", td->name); + + preamble->buffer = 0; /* Will do extensions_present==1 next time. */ + + if(!extensions_present) { + ctx->phase = 10; + RETURN(RC_OK); + } + + /* + * X.696 (08/2015) #16.1 (c), #16.4 + * Read in the extension addition presence bitmap. + */ + + len_len = oer_fetch_length(ptr, size, &len); + if(len_len > 0) { + ADVANCE(len_len); + } else if(len_len < 0) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + + if(len == 0) { + /* 16.4.1-2 */ + RETURN(RC_FAIL); + } else if(len > size) { + RETURN(RC_WMORE); + } + + /* Account for unused bits */ + unused_bits = 0x7 & *(const uint8_t *)ptr; + ADVANCE(1); + len--; + if(unused_bits && len == 0) { + RETURN(RC_FAIL); + } + + /* Get the extensions map */ + extadds = asn_bit_data_new_contiguous(ptr, len * 8 - unused_bits); + if(!extadds) { + RETURN(RC_FAIL); + } + FREEMEM(preamble); + ctx->ptr = extadds; + ADVANCE(len); + } + NEXT_PHASE(ctx); + ctx->step = + (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + /* Fall through */ + case 3: + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 3 (Extensions)", td->name); + for(; ctx->step < (signed)td->elements_count; ctx->step++) { + asn_bit_data_t *extadds = ctx->ptr; + size_t edx = ctx->step; + asn_TYPE_member_t *elm = &td->elements[edx]; + void *tmp_memb_ptr; + void **memb_ptr2 = element_ptrptr(st, elm, &tmp_memb_ptr); + + switch(asn_get_few_bits(extadds, 1)) { + case -1: + /* + * Not every one of our extensions is known to the remote side. + * Continue filling in their defaults though. + */ + /* Fall through */ + case 0: + /* Fill-in DEFAULT */ + if(elm->default_value_set + && elm->default_value_set(memb_ptr2)) { + RETURN(RC_FAIL); + } + continue; + case 1: { + /* Read OER open type */ + ssize_t ot_size = + oer_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, + memb_ptr2, ptr, size); + assert(ot_size <= (ssize_t)size); + if(ot_size > 0) { + ADVANCE(ot_size); + } else if(ot_size < 0) { + RETURN(RC_FAIL); + } else { + /* Roll back open type parsing */ + asn_get_undo(extadds, 1); + RETURN(RC_WMORE); + } + break; + } + default: + RETURN(RC_FAIL); + } + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 4: + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 4", td->name); + /* Read in the rest of Open Types while ignoring them */ + for(;;) { + asn_bit_data_t *extadds = ctx->ptr; + switch(asn_get_few_bits(extadds, 1)) { + case 0: + continue; + case 1: { + ssize_t skipped = oer_open_type_skip(ptr, size); + if(skipped > 0) { + ADVANCE(skipped); + } else if(skipped < 0) { + RETURN(RC_FAIL); + } else { + asn_get_undo(extadds, 1); + RETURN(RC_WMORE); + } + continue; + } + case -1: + /* No more Open Type encoded components */ + break; + default: + RETURN(RC_FAIL); + } + break; + } + } + + RETURN(RC_OK); +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +SEQUENCE_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + size_t computed_size = 0; + int has_extensions_bit = (specs->first_extension >= 0); + size_t preamble_bits = (has_extensions_bit + specs->roms_count); + uint32_t has_extensions = 0; + size_t edx; + int ret; + + (void)constraints; + + if(preamble_bits) { + asn_bit_outp_t preamble; + + memset(&preamble, 0, sizeof(preamble)); + preamble.output = cb; + preamble.op_key = app_key; + + if(has_extensions_bit) { + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr = element_ptr(sptr, elm); + if(memb_ptr) { + if(elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + /* Do not encode default values in extensions */ + } else { + has_extensions = 1; + break; + } + } + } + ret = asn_put_few_bits(&preamble, has_extensions, 1); + assert(ret == 0); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + } + + /* + * Encode optional components bitmap. + */ + if(specs->roms_count) { + FOR_IN_ROOT_GROUP(edx) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + if(IN_EXTENSION_GROUP(specs, edx)) break; + + if(elm->optional) { + const void *memb_ptr = element_ptr(sptr, elm); + uint32_t has_component = memb_ptr != NULL; + if(has_component && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + has_component = 0; + } + ret = asn_put_few_bits(&preamble, has_component, 1); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + } + } + } + + asn_put_aligned_flush(&preamble); + computed_size += preamble.flushed_bytes; + } /* if(preamble_bits) */ + + /* + * Put root components and extensions root. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t er = {0,0,0}; + const void *memb_ptr; + + if(IN_EXTENSION_GROUP(specs, edx)) break; + + memb_ptr = element_ptr(sptr, elm); + if(memb_ptr) { + if(elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + /* Skip default values in encoding */ + continue; + } + } else { + if(elm->optional) continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + if(!elm->type->op->oer_encoder) { + ASN_DEBUG("OER encoder is not defined for type %s", elm->type->name); + ASN__ENCODE_FAILED; + } + er = elm->type->op->oer_encoder( + elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, + app_key); + if(er.encoded == -1) { + ASN_DEBUG("... while encoding %s member \"%s\"\n", td->name, + elm->name); + return er; + } + computed_size += er.encoded; + } + + /* + * Before encode extensions, encode extensions additions presence bitmap + # X.696 (08/2015) #16.4. + */ + if(has_extensions) { + asn_bit_outp_t extadds; + + /* Special case allowing us to use exactly one byte for #8.6 */ + size_t aoms_length_bits = specs->aoms_count; + size_t aoms_length_bytes = (7 + aoms_length_bits) >> 3; + uint8_t unused_bits = 0x07 & (8 - (aoms_length_bits & 0x07)); + + assert(1 + aoms_length_bytes <= 127); + + memset(&extadds, 0, sizeof(extadds)); + extadds.output = cb; + extadds.op_key = app_key; + + /* #8.6 length determinant */ + ret = asn_put_few_bits(&extadds, (1 + aoms_length_bytes), 8); + if(ret < 0) ASN__ENCODE_FAILED; + + /* Number of unused bytes, #16.4.2 */ + ret = asn_put_few_bits(&extadds, unused_bits, 8); + if(ret < 0) ASN__ENCODE_FAILED; + + /* Encode presence bitmap #16.4.3 */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr = element_ptr(sptr, elm); + if(memb_ptr && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + memb_ptr = 0; /* Do not encode default value. */ + } + ret |= asn_put_few_bits(&extadds, memb_ptr ? 1 : 0, 1); + } + if(ret < 0) ASN__ENCODE_FAILED; + + asn_put_aligned_flush(&extadds); + computed_size += extadds.flushed_bytes; + + /* Now, encode extensions */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr = element_ptr(sptr, elm); + + if(memb_ptr) { + if(elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + /* Do not encode default value. */ + } else { + ssize_t wrote = oer_open_type_put( + elm->type, elm->encoding_constraints.oer_constraints, + memb_ptr, cb, app_key); + if(wrote == -1) { + ASN__ENCODE_FAILED; + } + computed_size += wrote; + } + } else if(!elm->optional) { + ASN__ENCODE_FAILED; + } + } + } /* if(has_extensions) */ + + + { + asn_enc_rval_t er = {0, 0, 0}; + er.encoded = computed_size; + ASN__ENCODED_OK(er); + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_print.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_print.c new file mode 100644 index 000000000..8403b5eda --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_print.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t edx; + int ret; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) continue; + /* Print line */ + /* Fall through */ + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Indentation */ + _i_INDENT(1); + + /* Print the member's name and stuff */ + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + + /* Print the member itself */ + ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, + cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_rfill.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_rfill.c new file mode 100644 index 000000000..77798fd97 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_rfill.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + void *st = *sptr; + size_t edx; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + for(edx = 0; edx < td->elements_count; edx++) { + const asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + asn_random_fill_result_t tmpres; + + if(elm->optional && asn_random_between(0, 4) == 2) { + /* Sometimes decide not to fill the optional value */ + continue; + } + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + tmpres = elm->type->op->random_fill( + elm->type, memb_ptr2, &elm->encoding_constraints, + max_length > result_ok.length ? max_length - result_ok.length : 0); + switch(tmpres.code) { + case ARFILL_OK: + result_ok.length += tmpres.length; + continue; + case ARFILL_SKIPPED: + assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); + continue; + case ARFILL_FAILED: + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return tmpres; + } + } + + *sptr = st; + + return result_ok; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_uper.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_uper.c new file mode 100644 index 000000000..aa5aca514 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_uper.c @@ -0,0 +1,429 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +asn_dec_rval_t +SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; + edx < (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = uper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, (long)bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, + *memb_ptr2); + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: break; + case 0: continue; + default: + if(uper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + ASN_DEBUG("Skipped overflow extension"); + continue; + } + break; + } + + FREEMEM(epres); + } + + if(specs->first_extension >= 0) { + unsigned i; + /* Fill DEFAULT members in extensions */ + for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; + i++) { + asn_TYPE_member_t *elm; + void **memb_ptr2; /* Pointer to member pointer */ + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) { + return -1; + } + /* Encode as open type field */ + if(po2 && present + && uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 0) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, + po); + if(er.encoded == -1) return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of extensions %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(uper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_xer.c b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_xer.c new file mode 100644 index 000000000..065b88ce3 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SEQUENCE_xer.c @@ -0,0 +1,348 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = (num_bytes); \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Skipping unknown extensions. + * Phase 4: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 3;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the inner member of a sequence. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr_dontuse; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr_dontuse = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ + } + + if(elm->flags & ATF_OPEN_TYPE) { + tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + /* Invoke the inner type decoder, m.b. multiple times */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + ptr, size); + } + XER_ADVANCE(tmprval.consumed); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 1; /* Back to body processing */ + ctx->step = ++edx; + ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", + ctx->phase, ctx->step); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", + tcv, ctx->phase, xml_tag); + + /* Skip the extensions section */ + if(ctx->phase == 3) { + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 4; + RETURN(RC_FAIL); + case 0: + XER_ADVANCE(ch_size); + continue; + case 1: + XER_ADVANCE(ch_size); + ctx->phase = 1; + continue; + case 2: + ctx->phase = 1; + break; + } + } + + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + if(edx >= td->elements_count || + /* Explicit OPTIONAL specs reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx)) { + XER_ADVANCE(ch_size); + ctx->phase = 4; /* Phase out */ + RETURN(RC_OK); + } else { + ASN_DEBUG("Premature end of XER SEQUENCE"); + RETURN(RC_FAIL); + } + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", + tcv, ctx->phase, edx); + if(ctx->phase != 1) { + break; /* Really unexpected */ + } + + if(edx < td->elements_count) { + /* + * Search which member corresponds to this tag. + */ + size_t n; + size_t edx_end = edx + elements[edx].optional + 1; + if(edx_end > td->elements_count) + edx_end = td->elements_count; + for(n = edx; n < edx_end; n++) { + elm = &td->elements[n]; + tcv = xer_check_tag(ptr, ch_size, elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx = n; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + n = edx_end; + break; /* Phase out */ + } + break; + } + if(n != edx_end) + continue; + } else { + ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", + edx, td->elements_count); + } + + /* It is expected extension */ + if(IN_EXTENSION_GROUP(specs, + edx + (edx < td->elements_count + ? elements[edx].optional : 0))) { + ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", + edx); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + } else { + ctx->left = 1; + ctx->phase = 3; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", + size>0?((const char *)ptr)[0]:'.', + size>1?((const char *)ptr)[1]:'.', + size>2?((const char *)ptr)[2]:'.', + size>3?((const char *)ptr)[3]:'.', + size>4?((const char *)ptr)[4]:'.', + size>5?((const char *)ptr)[5]:'.'); + break; + } + + ctx->phase = 4; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + int xcan = (flags & XER_F_CANONICAL); + asn_TYPE_descriptor_t *tmp_def_val_td = 0; + void *tmp_def_val = 0; + size_t edx; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + assert(tmp_def_val == 0); + if(elm->default_value_set) { + if(elm->default_value_set(&tmp_def_val)) { + ASN__ENCODE_FAILED; + } else { + memb_ptr = tmp_def_val; + tmp_def_val_td = elm->type; + } + } else if(elm->optional) { + continue; + } else { + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + /* Print the member itself */ + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmp_def_val) { + ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + tmp_def_val = 0; + } + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + ASN__ENCODE_FAILED; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SET_OF.c b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF.c new file mode 100644 index 000000000..97a7cac0c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF.c @@ -0,0 +1,371 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_TYPE_operation_t asn_OP_SET_OF = { + SET_OF_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + SET_OF_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + SET_OF_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + SET_OF_decode_ber, + SET_OF_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + SET_OF_decode_xer, + SET_OF_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + SET_OF_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + SET_OF_decode_oer, + SET_OF_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + SET_OF_decode_uper, + SET_OF_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + SET_OF_decode_aper, + SET_OF_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + SET_OF_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; + +/* Append bytes to the above structure */ +static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { + struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; + + if(el_buf->length + size > el_buf->allocated_size) { + size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; + void *p; + + do { + new_size <<= 2; + } while(el_buf->length + size > new_size); + + p = REALLOC(el_buf->buf, new_size); + if(p) { + el_buf->buf = p; + el_buf->allocated_size = new_size; + } else { + return -1; + } + } + + memcpy(el_buf->buf + el_buf->length, buffer, size); + + el_buf->length += size; + return 0; +} + +static void assert_unused_bits(const struct _el_buffer* p) { + if(p->length) { + assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); + } else { + assert(p->bits_unused == 0); + } +} + +static int _el_buf_cmp(const void *ap, const void *bp) { + const struct _el_buffer *a = (const struct _el_buffer *)ap; + const struct _el_buffer *b = (const struct _el_buffer *)bp; + size_t common_len; + int ret = 0; + + if(a->length < b->length) + common_len = a->length; + else + common_len = b->length; + + if (a->buf && b->buf) { + ret = memcmp(a->buf, b->buf, common_len); + } + if(ret == 0) { + if(a->length < b->length) + ret = -1; + else if(a->length > b->length) + ret = 1; + /* Ignore unused bits. */ + assert_unused_bits(a); + assert_unused_bits(b); + } + + return ret; +} + +void +SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { + size_t i; + + for(i = 0; i < count; i++) { + FREEMEM(el_buf[i].buf); + } + + FREEMEM(el_buf); +} + +struct _el_buffer * +SET_OF__encode_sorted(const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method) { + struct _el_buffer *encoded_els; + int edx; + + encoded_els = + (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); + if(encoded_els == NULL) { + return NULL; + } + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + const void *memb_ptr = list->array[edx]; + struct _el_buffer *encoding_el = &encoded_els[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) break; + + /* + * Encode the member into the prepared space. + */ + switch(method) { +#if !defined(ASN_DISABLE_BER_SUPPORT) + case SOES_DER: + erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, + _el_addbytes, encoding_el); + break; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + case SOES_CUPER: + erval = uper_encode(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, _el_addbytes, encoding_el); + if(erval.encoded != -1) { + size_t extra_bits = erval.encoded % 8; + assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); + encoding_el->bits_unused = (8 - extra_bits) & 0x7; + } + break; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + case SOES_CAPER: + erval = aper_encode(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, _el_addbytes, encoding_el); + if(erval.encoded != -1) { + size_t extra_bits = erval.encoded % 8; + assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); + encoding_el->bits_unused = (8 - extra_bits) & 0x7; + } + break; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + + default: + assert(!"Unreachable"); + break; + } + if(erval.encoded < 0) break; + } + + if(edx == list->count) { + /* + * Sort the encoded elements according to their encoding. + */ + qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); + + return encoded_els; + } else { + SET_OF__encode_sorted_free(encoded_els, edx); + return NULL; + } +} + +void +SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + const asn_SET_OF_specifics_t *specs; + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); + asn_struct_ctx_t *ctx; /* Decoder context */ + int i; + + /* + * Could not use set_of_empty() because of (*free) + * incompatibility. + */ + for(i = 0; i < list->count; i++) { + void *memb_ptr = list->array[i]; + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } + list->count = 0; /* No meaningful elements left */ + + asn_set_empty(list); /* Remove (list->array) */ + + specs = (const asn_SET_OF_specifics_t *)td->specifics; + ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); + if(ctx->ptr) { + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } + } +} + +int +SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + asn_constr_check_f *constr; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int i; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + constr = elm->encoding_constraints.general_constraints; + if(!constr) constr = elm->type->encoding_constraints.general_constraints; + + /* + * Iterate over the members of an array. + * Validate each in turn, until one fails. + */ + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + int ret; + + if(!memb_ptr) continue; + + ret = constr(elm->type, memb_ptr, ctfailcb, app_key); + if(ret) return ret; + } + + return 0; +} + +struct comparable_ptr { + const asn_TYPE_descriptor_t *td; + const void *sptr; +}; + +static int +SET_OF__compare_cb(const void *aptr, const void *bptr) { + const struct comparable_ptr *a = aptr; + const struct comparable_ptr *b = bptr; + assert(a->td == b->td); + return a->td->op->compare_struct(a->td, a->sptr, b->sptr); +} + +int +SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); + const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); + + if(a && b) { + struct comparable_ptr *asorted; + struct comparable_ptr *bsorted; + ssize_t common_length; + ssize_t idx; + + if(a->count == 0) { + if(b->count) return -1; + return 0; + } else if(b->count == 0) { + return 1; + } + + asorted = MALLOC(a->count * sizeof(asorted[0])); + bsorted = MALLOC(b->count * sizeof(bsorted[0])); + if(!asorted || !bsorted) { + FREEMEM(asorted); + FREEMEM(bsorted); + return -1; + } + + for(idx = 0; idx < a->count; idx++) { + asorted[idx].td = td->elements->type; + asorted[idx].sptr = a->array[idx]; + } + + for(idx = 0; idx < b->count; idx++) { + bsorted[idx].td = td->elements->type; + bsorted[idx].sptr = b->array[idx]; + } + + qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); + qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); + + common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); + if(ret) { + FREEMEM(asorted); + FREEMEM(bsorted); + return ret; + } + } + + FREEMEM(asorted); + FREEMEM(bsorted); + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_aper.c b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_aper.c new file mode 100644 index 000000000..13de1e048 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_aper.c @@ -0,0 +1,186 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +SET_OF_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er = {0,0,0}; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SET OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %lld ub %lld %s", + (long long int)ct->lower_bound, + (long long int)ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + /*if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED;*/ + + if (aper_put_length(po, ct->lower_bound, ct->upper_bound, list->count - ct->lower_bound, 0) < 0) { + ASN__ENCODE_FAILED; + } + } + + /* + * Canonical PER #22.1 mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_CAPER); + + for(seq = 0; seq < list->count;) { + ssize_t may_encode; + int need_eom = 0; + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + aper_put_length(po, -1, -1, list->count - seq, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + while(may_encode--) { + const struct _el_buffer *el = &encoded_els[seq++]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); + ASN_DEBUG("Preparing to fetch %ld+%lld elements from %s", + (long)nelems, (long long int)ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + if (ct) + nelems = aper_get_length(pd, ct->lower_bound, ct->upper_bound, + ct->effective_bits, &repeat); + else + nelems = aper_get_length(pd, -1, -1, -1, &repeat); + ASN_DEBUG("Got to decode %d elements (eff %d)", + (int)nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) + continue; + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_ber.c b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_ber.c new file mode 100644 index 000000000..44bc3d417 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_ber.c @@ -0,0 +1,355 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#undef PHASE_OUT +#define PHASE_OUT(ctx) \ + do { \ + ctx->phase = 10; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +/* + * The decoder of the SET OF type. + */ +asn_dec_rval_t +SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as SET OF", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Subtracted below! */ + ADVANCE(rval.consumed); + + ASN_DEBUG("Structure consumes %ld bytes, " + "buffer %ld", (long)ctx->left, (long)size); + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next item. + */ + for(;; ctx->step = 0) { + ssize_t tag_len; /* Length of TLV's T */ + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + + if(ctx->left == 0) { + ASN_DEBUG("End of SET OF %s", td->name); + /* + * No more things to decode. + * Exit out of here. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Found the terminator of the + * indefinite length structure. + */ + break; + } + } + + /* Outmost tag may be unknown and cannot be fetched/compared */ + if(elm->tag != (ber_tlv_tag_t)-1) { + if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { + /* + * The new list member of expected type has arrived. + */ + } else { + ASN_DEBUG("Unexpected tag %s fixed SET OF %s", + ber_tlv_tag_string(tlv_tag), td->name); + ASN_DEBUG("%s SET OF has tag %s", + td->name, ber_tlv_tag_string(elm->tag)); + RETURN(RC_FAIL); + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, + elm->type, &ctx->ptr, + ptr, LEFT, 0); + ASN_DEBUG("In %s SET OF %s code %d consumed %d", + td->name, elm->type->name, + rval.code, (int)rval.consumed); + switch(rval.code) { + case RC_OK: + { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + else + ctx->ptr = 0; + } + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + /* Fall through */ + case RC_FAIL: /* Fatal error */ + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all list members) */ + + NEXT_PHASE(ctx); + case 2: + /* + * Read in all "end of content" TLVs. + */ + while(ctx->left < 0) { + if(LEFT < 2) { + if(LEFT > 0 && ((const char *)ptr)[0] != 0) { + /* Unexpected tag */ + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } + if(((const char *)ptr)[0] == 0 + && ((const char *)ptr)[1] == 0) { + ADVANCE(2); + ctx->left++; + } else { + RETURN(RC_FAIL); + } + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + +/* + * The DER encoder of the SET OF type. + */ +asn_enc_rval_t +SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + struct _el_buffer *encoded_els; + int edx; + + ASN_DEBUG("Estimating size for SET OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) ASN__ENCODE_FAILED; + + erval = + elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); + if(erval.encoded == -1) return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = + der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + if(encoding_size < 0) { + ASN__ENCODE_FAILED; + } + computed_size += encoding_size; + + if(!cb || list->count == 0) { + asn_enc_rval_t erval = {0,0,0}; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of %s SET OF", td->name); + + /* + * DER mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the + * encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); + + /* + * Report encoded elements to the application. + * Dispose of temporary sorted members table. + */ + for(edx = 0; edx < list->count; edx++) { + struct _el_buffer *encoded_el = &encoded_els[edx]; + /* Report encoded chunks to the application */ + if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { + break; + } else { + encoding_size += encoded_el->length; + } + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if(edx == list->count) { + asn_enc_rval_t erval = {0,0,0}; + assert(computed_size == (size_t)encoding_size); + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } else { + ASN__ENCODE_FAILED; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_oer.c b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_oer.c new file mode 100644 index 000000000..18849becc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_oer.c @@ -0,0 +1,281 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#undef SET_PHASE +#define SET_PHASE(ctx, value) \ + do { \ + ctx->phase = value; \ + ctx->step = 0; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t _rval; \ + _rval.code = _code; \ + _rval.consumed = consumed_myself; \ + return _rval; \ + } while(0) + +/* + * The SEQUENCE OF and SET OF values utilize a "quantity field". + * It is is a pointless combination of #8.6 (length determinant, capable + * of encoding tiny and huge numbers in the shortest possible number of octets) + * and the variable sized integer. What could have been encoded by #8.6 alone + * is required to be encoded by #8.6 followed by that number of unsigned octets. + * This doesn't make too much sense. It seems that the original version of OER + * standard have been using the unconstrained unsigned integer as a quantity + * field, and this legacy have gone through ISO/ITU-T standardization process. + */ +static ssize_t +oer_fetch_quantity(const void *ptr, size_t size, size_t *qty_r) { + const uint8_t *b; + const uint8_t *bend; + size_t len = 0; + size_t qty; + + ssize_t len_len = oer_fetch_length(ptr, size, &len); + if(len_len <= 0) { + *qty_r = 0; + return len_len; + } + + if((len_len + len) > size) { + *qty_r = 0; + return 0; + } + + b = (const uint8_t *)ptr + len_len; + bend = b + len; + + /* Skip the leading 0-bytes */ + for(; b < bend && *b == 0; b++) { + } + + if((bend - b) > (ssize_t)sizeof(size_t)) { + /* Length is not representable by the native size_t type */ + *qty_r = 0; + return -1; + } + + for(qty = 0; b < bend; b++) { + qty = (qty << 8) + *b; + } + + if(qty > RSIZE_MAX) { /* A bit of C11 validation */ + *qty_r = 0; + return -1; + } + + *qty_r = qty; + assert((size_t)len_len + len == (size_t)(bend - (const uint8_t *)ptr)); + return len_len + len; +} + +asn_dec_rval_t +SET_OF_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *ptr, size_t size) { + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + void *st = *struct_ptr; /* Target structure */ + asn_struct_ctx_t *ctx; /* Decoder context */ + size_t consumed_myself = 0; /* Consumed bytes from ptr. */ + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously. + */ + switch(ctx->phase) { + case 0: { + /* + * Fetch number of elements to decode. + */ + size_t length = 0; + size_t len_size = oer_fetch_quantity(ptr, size, &length); + switch(len_size) { + case 0: + RETURN(RC_WMORE); + case -1: + RETURN(RC_FAIL); + default: + ADVANCE(len_size); + ctx->left = length; + } + } + NEXT_PHASE(ctx); + /* FALL THROUGH */ + case 1: { + /* Decode components of the extension root */ + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + const void *base_ptr = ptr; + ber_tlv_len_t base_ctx_left = ctx->left; + + assert(td->elements_count == 1); + + ASN_DEBUG("OER SET OF %s Decoding PHASE 1", td->name); + + for(; ctx->left > 0; ctx->left--) { + asn_dec_rval_t rv = elm->type->op->oer_decoder( + opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, &ctx->ptr, ptr, + size); + ADVANCE(rv.consumed); + switch(rv.code) { + case RC_OK: + if(ASN_SET_ADD(list, ctx->ptr) != 0) { + RETURN(RC_FAIL); + } else { + ctx->ptr = 0; + /* + * This check is to avoid compression bomb with + * specs like SEQUENCE/SET OF NULL which don't + * consume data at all. + */ + if(rv.consumed == 0 && base_ptr == ptr + && (base_ctx_left - ctx->left) > 200) { + ASN__DECODE_FAILED; + } + break; + } + case RC_WMORE: + RETURN(RC_WMORE); + case RC_FAIL: + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + SET_PHASE(ctx, 3); + RETURN(RC_FAIL); + } + } + /* Decoded decently. */ + NEXT_PHASE(ctx); + } + /* Fall through */ + case 2: + /* Ignore fully decoded */ + assert(ctx->left == 0); + RETURN(RC_OK); + case 3: + /* Failed to decode. */ + RETURN(RC_FAIL); + } + + return rval; +} + +static ssize_t +oer_put_quantity(size_t qty, asn_app_consume_bytes_f *cb, void *app_key) { + uint8_t buf[1 + sizeof(size_t)]; + uint8_t *b = &buf[sizeof(size_t)]; /* Last addressable */ + size_t encoded; + + do { + *b-- = qty; + qty >>= 8; + } while(qty); + + *b = sizeof(buf) - (b-buf) - 1; + encoded = sizeof(buf) - (b-buf); + if(cb(b, encoded, app_key) < 0) + return -1; + return encoded; +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +SET_OF_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_TYPE_member_t *elm; + const asn_anonymous_set_ *list; + size_t computed_size = 0; + ssize_t qty_len; + int n; + + (void)constraints; + + if(!sptr) ASN__ENCODE_FAILED; + + elm = td->elements; + list = _A_CSET_FROM_VOID(sptr); + + qty_len = oer_put_quantity(list->count, cb, app_key); + if(qty_len < 0) { + ASN__ENCODE_FAILED; + } + computed_size += qty_len; + + for(n = 0; n < list->count; n++) { + void *memb_ptr = list->array[n]; + asn_enc_rval_t er = {0,0,0}; + er = elm->type->op->oer_encoder( + elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, + app_key); + if(er.encoded < 0) { + return er; + } else { + computed_size += er.encoded; + } + } + + { + asn_enc_rval_t erval = {0,0,0}; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_print.c b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_print.c new file mode 100644 index 000000000..e3cad4c0e --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_print.c @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int ret; + int i; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + _i_INDENT(1); + + ret = elm->type->op->print_struct(elm->type, memb_ptr, + ilevel + 1, cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_rfill.c b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_rfill.c new file mode 100644 index 000000000..880d41d35 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_rfill.c @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_SET_OF_specifics_t *specs = + (const asn_SET_OF_specifics_t *)td->specifics; + asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm = td->elements; + void *st = *sptr; + long max_elements = 5; + long slb = 0; /* Lower size bound */ + long sub = 0; /* Upper size bound */ + size_t rnd_len; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) { + return result_failed; + } + } + + switch(asn_random_between(0, 6)) { + case 0: max_elements = 0; break; + case 1: max_elements = 1; break; + case 2: max_elements = 5; break; + case 3: max_elements = max_length; break; + case 4: max_elements = max_length / 2; break; + case 5: max_elements = max_length / 4; break; + default: break; + } + sub = slb + max_elements; + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_SEMI_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->lower_bound + max_elements; + } else if(pc->flags & APC_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->upper_bound; + if(sub - slb > max_elements) sub = slb + max_elements; + } + } +#else + if(!constraints) constraints = &td->encoding_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + + /* Bias towards edges of allowed space */ + switch(asn_random_between(-1, 4)) { + default: + case -1: +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + /* Prepare lengths somewhat outside of constrained range. */ + if(constraints->per_constraints + && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { + switch(asn_random_between(0, 5)) { + default: + case 0: + rnd_len = 0; + break; + case 1: + if(slb > 0) { + rnd_len = slb - 1; + } else { + rnd_len = 0; + } + break; + case 2: + rnd_len = asn_random_between(0, slb); + break; + case 3: + if(sub < (ssize_t)max_length) { + rnd_len = sub + 1; + } else { + rnd_len = max_length; + } + break; + case 4: + if(sub < (ssize_t)max_length) { + rnd_len = asn_random_between(sub + 1, max_length); + } else { + rnd_len = max_length; + } + break; + case 5: + rnd_len = max_length; + break; + } + break; + } +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + /* Fall through */ + case 0: + rnd_len = asn_random_between(slb, sub); + break; + case 1: + if(slb < sub) { + rnd_len = asn_random_between(slb + 1, sub); + break; + } + /* Fall through */ + case 2: + rnd_len = asn_random_between(slb, slb); + break; + case 3: + if(slb < sub) { + rnd_len = asn_random_between(slb, sub - 1); + break; + } + /* Fall through */ + case 4: + rnd_len = asn_random_between(sub, sub); + break; + } + + for(; rnd_len > 0; rnd_len--) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + void *ptr = 0; + asn_random_fill_result_t tmpres = elm->type->op->random_fill( + elm->type, &ptr, &elm->encoding_constraints, + (max_length > res_ok.length ? max_length - res_ok.length : 0) + / rnd_len); + switch(tmpres.code) { + case ARFILL_OK: + ASN_SET_ADD(list, ptr); + res_ok.length += tmpres.length; + break; + case ARFILL_SKIPPED: + break; + case ARFILL_FAILED: + assert(ptr == 0); + return tmpres; + } + } + + return res_ok; +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_uper.c b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_uper.c new file mode 100644 index 000000000..089fca454 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_uper.c @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = per_get_few_bits(pd, ct->effective_bits); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = uper_get_length(pd, -1, 0, &repeat); + ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", + nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) { + if(rv.consumed == 0 && nelems > 200) { + /* Protect from SET OF NULL compression bombs. */ + ASN__DECODE_FAILED; + } + continue; + } + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er = {0,0,0}; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + + /* + * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + const struct _el_buffer *el = &encoded_els[edx]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if((ssize_t)encoded_edx == list->count) { + ASN__ENCODED_OK(er); + } else { + ASN__ENCODE_FAILED; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_xer.c b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_xer.c new file mode 100644 index 000000000..0e56ab675 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_SET_OF_xer.c @@ -0,0 +1,314 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *element = td->elements; + const char *elm_tag; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval = {RC_OK, 0}; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* Which tag is expected for the downstream */ + if(specs->as_XMLValueList) { + elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; + } else { + elm_tag = (*element->name) + ? element->name : element->type->xml_tag; + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + */ + for(; ctx->phase <= 2;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Go inside the inner member of a set. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval = {RC_OK, 0}; + + /* Invoke the inner type decoder, m.b. multiple times */ + ASN_DEBUG("XER/SET OF element [%s]", elm_tag); + tmprval = element->type->op->xer_decoder(opt_codec_ctx, + element->type, + &ctx->ptr, elm_tag, + buf_ptr, size); + if(tmprval.code == RC_OK) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + ctx->ptr = 0; + XER_ADVANCE(tmprval.consumed); + } else { + XER_ADVANCE(tmprval.consumed); + RETURN(tmprval.code); + } + ctx->phase = 1; /* Back to body processing */ + ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, + buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", + tcv, ctx->phase, xml_tag); + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + /* No more things to decode */ + XER_ADVANCE(ch_size); + ctx->phase = 3; /* Phase out */ + RETURN(RC_OK); + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); + if(ctx->phase == 1) { + /* + * Process a single possible member. + */ + ctx->phase = 2; + continue; + } + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SET OF"); + break; + } + + ctx->phase = 3; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +typedef struct xer_tmp_enc_s { + void *buffer; + size_t offset; + size_t size; +} xer_tmp_enc_t; + +static int +SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { + xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; + if(t->offset + size >= t->size) { + size_t newsize = (t->size << 2) + size; + void *p = REALLOC(t->buffer, newsize); + if(!p) return -1; + t->buffer = p; + t->size = newsize; + } + memcpy((char *)t->buffer + t->offset, buffer, size); + t->offset += size; + return 0; +} + +static int +SET_OF_xer_order(const void *aptr, const void *bptr) { + const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; + const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; + size_t minlen = a->offset; + int ret; + if(b->offset < minlen) minlen = b->offset; + /* Well-formed UTF-8 has this nice lexicographical property... */ + ret = memcmp(a->buffer, b->buffer, minlen); + if(ret != 0) return ret; + if(a->offset == b->offset) + return 0; + if(a->offset == minlen) + return -1; + return 1; +} + +asn_enc_rval_t +SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + xer_tmp_enc_t *encs = 0; + size_t encs_count = 0; + void *original_app_key = app_key; + asn_app_consume_bytes_f *original_cb = cb; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + if(xcan) { + encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); + if(!encs) ASN__ENCODE_FAILED; + cb = SET_OF_encode_xer_callback; + } + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(encs) { + memset(&encs[encs_count], 0, sizeof(encs[0])); + app_key = &encs[encs_count]; + encs_count++; + } + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + if(!xcan && specs->as_XMLValueList == 1) + ASN__TEXT_INDENT(1, ilevel + 1); + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + if(encs) { + xer_tmp_enc_t *enc = encs; + xer_tmp_enc_t *end = encs + encs_count; + ssize_t control_size = 0; + + er.encoded = 0; + cb = original_cb; + app_key = original_app_key; + qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); + + for(; enc < end; enc++) { + ASN__CALLBACK(enc->buffer, enc->offset); + FREEMEM(enc->buffer); + enc->buffer = 0; + control_size += enc->offset; + } + assert(control_size == er.encoded); + } + + goto cleanup; +cb_failed: + ASN__ENCODE_FAILED; +cleanup: + if(encs) { + size_t n; + for(n = 0; n < encs_count; n++) { + FREEMEM(encs[n].buffer); + } + FREEMEM(encs); + } + ASN__ENCODED_OK(er); +} diff --git a/src/tmx/Asn_J2735/src/r2020/constr_TYPE.c b/src/tmx/Asn_J2735/src/r2020/constr_TYPE.c new file mode 100644 index 000000000..e634e750f --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constr_TYPE.c @@ -0,0 +1,80 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Version of the ASN.1 infrastructure shipped with compiler. + */ +int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; } + +static asn_app_consume_bytes_f _print2fp; + +/* + * Return the outmost tag of the type. + */ +ber_tlv_tag_t +asn_TYPE_outmost_tag(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) { + + if(tag_mode) + return tag; + + if(type_descriptor->tags_count) + return type_descriptor->tags[0]; + + return type_descriptor->op->outmost_tag(type_descriptor, struct_ptr, 0, 0); +} + +/* + * Print the target language's structure in human readable form. + */ +int +asn_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, + const void *struct_ptr) { + if(!stream) stream = stdout; + if(!td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + /* Invoke type-specific printer */ + if(td->op->print_struct(td, struct_ptr, 1, _print2fp, stream)) { + return -1; + } + + /* Terminate the output */ + if(_print2fp("\n", 1, stream)) { + return -1; + } + + return fflush(stream); +} + +/* Dump the data into the specified stdio stream */ +static int +_print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + + +/* + * Some compilers do not support variable args macros. + * This function is a replacement of ASN_DEBUG() macro. + */ +void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); +void ASN_DEBUG_f(const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} diff --git a/src/tmx/Asn_J2735/src/r2020/constraints.c b/src/tmx/Asn_J2735/src/r2020/constraints.c new file mode 100644 index 000000000..72137cc5c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/constraints.c @@ -0,0 +1,94 @@ +#include +#include + +int +asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Nothing to check */ + return 0; +} + +int +asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Unknown how to check */ + return 0; +} + +struct errbufDesc { + const asn_TYPE_descriptor_t *failed_type; + const void *failed_struct_ptr; + char *errbuf; + size_t errlen; +}; + +static void +CC_PRINTFLIKE(4, 5) +_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, + const char *fmt, ...) { + struct errbufDesc *arg = key; + va_list ap; + ssize_t vlen; + ssize_t maxlen; + + arg->failed_type = td; + arg->failed_struct_ptr = sptr; + + maxlen = arg->errlen; + if(maxlen <= 0) + return; + + va_start(ap, fmt); + vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); + va_end(ap); + if(vlen >= maxlen) { + arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ + arg->errlen = maxlen - 1; /* Not counting termination */ + return; + } else if(vlen >= 0) { + arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ + arg->errlen = vlen; /* Not counting termination */ + } else { + /* + * The libc on this system is broken. + */ + vlen = sizeof("") - 1; + maxlen--; + arg->errlen = vlen < maxlen ? vlen : maxlen; + memcpy(arg->errbuf, "", arg->errlen); + arg->errbuf[arg->errlen] = 0; + } + + return; +} + +int +asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, char *errbuf, size_t *errlen) { + struct errbufDesc arg; + int ret; + + arg.failed_type = 0; + arg.failed_struct_ptr = 0; + arg.errbuf = errbuf; + arg.errlen = errlen ? *errlen : 0; + + ret = type_descriptor->encoding_constraints.general_constraints( + type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); + if(ret == -1 && errlen) *errlen = arg.errlen; + + return ret; +} + diff --git a/src/tmx/Asn_J2735/src/r2020/der_encoder.c b/src/tmx/Asn_J2735/src/r2020/der_encoder.c new file mode 100644 index 000000000..2c6a6f769 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/der_encoder.c @@ -0,0 +1,194 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, int constructed); + +/* + * The DER encoder of any type. + */ +asn_enc_rval_t +der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes, void *app_key) { + ASN_DEBUG("DER encoder invoked for %s", + type_descriptor->name); + + /* + * Invoke type-specific encoder. + */ + return type_descriptor->op->der_encoder( + type_descriptor, struct_ptr, /* Pointer to the destination structure */ + 0, 0, consume_bytes, app_key); +} + +/* + * Argument type and callback necessary for der_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +/* + * A variant of the der_encode() which encodes the data into the provided buffer + */ +asn_enc_rval_t +der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg arg; + asn_enc_rval_t ec; + + arg.buffer = buffer; + arg.left = buffer_size; + + ec = type_descriptor->op->der_encoder(type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + 0, 0, encode_to_buffer_cb, &arg); + if(ec.encoded != -1) { + assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); + /* Return the encoded contents size */ + } + return ec; +} + + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t +der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, + int tag_mode, int last_tag_form, + ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ + asn_app_consume_bytes_f *cb, void *app_key) { +#define ASN1_DER_MAX_TAGS_COUNT 4 + ber_tlv_tag_t + tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; + ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; + const ber_tlv_tag_t *tags; /* Copy of tags stream */ + int tags_count; /* Number of tags */ + size_t overall_length; + int i; + + ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", + sd->name, tag_mode, sd->tags_count, + ber_tlv_tag_string(tag), + tag_mode + ?(sd->tags_count+1 + -((tag_mode == -1) && sd->tags_count)) + :sd->tags_count + ); + + if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { + ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); + return -1; + } + + if(tag_mode) { + /* + * Instead of doing shaman dance like we do in ber_check_tags(), + * allocate a small array on the stack + * and initialize it appropriately. + */ + int stag_offset; + ber_tlv_tag_t *tags_buf = tags_buf_scratch; + tags_count = sd->tags_count + + 1 /* EXPLICIT or IMPLICIT tag is given */ + - ((tag_mode == -1) && sd->tags_count); + /* Copy tags over */ + tags_buf[0] = tag; + stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); + for(i = 1; i < tags_count; i++) + tags_buf[i] = sd->tags[i + stag_offset]; + tags = tags_buf; + } else { + tags = sd->tags; + tags_count = sd->tags_count; + } + + /* No tags to write */ + if(tags_count == 0) + return 0; + + /* + * Array of tags is initialized. + * Now, compute the size of the TLV pairs, from right to left. + */ + overall_length = struct_length; + for(i = tags_count - 1; i >= 0; --i) { + lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); + if(lens[i] == -1) return -1; + overall_length += lens[i]; + lens[i] = overall_length - lens[i]; + } + + if(!cb) return overall_length - struct_length; + + ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, + tags_count); + + /* + * Encode the TL sequence for real. + */ + for(i = 0; i < tags_count; i++) { + ssize_t len; + int _constr; + + /* Check if this tag happens to be constructed */ + _constr = (last_tag_form || i < (tags_count - 1)); + + len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); + if(len == -1) return -1; + } + + return overall_length - struct_length; +} + +static ssize_t +der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, + int constructed) { + uint8_t buf[32]; + size_t size = 0; + int buf_size = cb?sizeof(buf):0; + ssize_t tmp; + + /* Serialize tag (T from TLV) into possibly zero-length buffer */ + tmp = ber_tlv_tag_serialize(tag, buf, buf_size); + if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; + size += tmp; + + /* Serialize length (L from TLV) into possibly zero-length buffer */ + tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); + if(tmp == -1) return -1; + size += tmp; + + if(size > sizeof(buf)) + return -1; + + /* + * If callback is specified, invoke it, and check its return value. + */ + if(cb) { + if(constructed) *buf |= 0x20; + if(cb(buf, size, app_key) < 0) + return -1; + } + + return size; +} diff --git a/src/tmx/Asn_J2735/src/r2020/oer_decoder.c b/src/tmx/Asn_J2735/src/r2020/oer_decoder.c new file mode 100644 index 000000000..a926c4348 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/oer_decoder.c @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2023 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * The OER decoder of any type. + */ +asn_dec_rval_t +oer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + const void *ptr, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return type_descriptor->op->oer_decoder(opt_codec_ctx, type_descriptor, 0, + struct_ptr, /* Pointer to the destination structure */ + ptr, size /* Buffer and its size */ + ); +} + +/* + * Open Type is encoded as a length (#8.6) followed by that number of bytes. + * Since we're just skipping, reading the length would be enough. + */ +ssize_t +oer_open_type_skip(const void *bufptr, size_t size) { + size_t len = 0; + return oer_fetch_length(bufptr, size, &len); +} + +/* + * Read the Open Type (X.696 (08/2015), #30). + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t +oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *bufptr, size_t size) { + asn_dec_rval_t dr; + size_t container_len = 0; + ssize_t len_len; + enum asn_struct_free_method dispose_method = + (*struct_ptr) ? ASFM_FREE_UNDERLYING_AND_RESET : ASFM_FREE_EVERYTHING; + + /* Get the size of a length determinant */ + len_len = oer_fetch_length(bufptr, size, &container_len); + if(len_len <= 0) { + return len_len; /* Error or more data expected */ + } + + /* + * len_len can't be bigger than size, but size without len_len + * should be bigger or equal to container length + */ + if(size - len_len < container_len) { + /* More data is expected */ + return 0; + } + + dr = td->op->oer_decoder(opt_codec_ctx, td, constraints, struct_ptr, + (const uint8_t *)bufptr + len_len, container_len); + if(dr.code == RC_OK) { + return len_len + container_len; + } else { + /* Even if RC_WMORE, we can't get more data into a closed container. */ + td->op->free_struct(td, *struct_ptr, dispose_method); + *struct_ptr = NULL; + return -1; + } +} + + +asn_dec_rval_t +oer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval = {RC_OK, 0}; + size_t expected_length = 0; + ssize_t len_len; + + (void)td; + (void)opt_codec_ctx; + (void)constraints; + + if(!st) { + st = (ASN__PRIMITIVE_TYPE_t *)(*sptr = CALLOC( + 1, sizeof(ASN__PRIMITIVE_TYPE_t))); + if(!st) ASN__DECODE_FAILED; + } + + + /* + * X.696 (08/2015) #27.2 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + len_len = oer_fetch_length(ptr, size, &expected_length); + if(len_len > 0) { + rval.consumed = len_len; + ptr = (const char *)ptr + len_len; + size -= len_len; + } else if(len_len == 0) { + ASN__DECODE_STARVED; + } else if(len_len < 0) { + ASN__DECODE_FAILED; + } + + if(size < expected_length) { + ASN__DECODE_STARVED; + } else { + uint8_t *buf = MALLOC(expected_length + 1); + if(buf == NULL) { + ASN__DECODE_FAILED; + } else { + memcpy(buf, ptr, expected_length); + buf[expected_length] = '\0'; + } + FREEMEM(st->buf); + st->buf = buf; + st->size = expected_length; + + rval.consumed += expected_length; + return rval; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/oer_encoder.c b/src/tmx/Asn_J2735/src/r2020/oer_encoder.c new file mode 100644 index 000000000..1d9534927 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/oer_encoder.c @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2023 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * The OER encoder of any type. + */ +asn_enc_rval_t +oer_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes, void *app_key) { + ASN_DEBUG("OER encoder invoked for %s", type_descriptor->name); + + /* + * Invoke type-specific encoder. + */ + return type_descriptor->op->oer_encoder( + type_descriptor, 0, + struct_ptr, /* Pointer to the destination structure */ + consume_bytes, app_key); +} + +/* + * Argument type and callback necessary for oer_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int +encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +/* + * A variant of the oer_encode() which encodes the data into the provided buffer + */ +asn_enc_rval_t +oer_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +) { + enc_to_buf_arg arg; + asn_enc_rval_t ec; + + arg.buffer = buffer; + arg.left = buffer_size; + + if(type_descriptor->op->oer_encoder == NULL) { + ec.encoded = -1; + ec.failed_type = type_descriptor; + ec.structure_ptr = struct_ptr; + ASN_DEBUG("OER encoder is not defined for %s", + type_descriptor->name); + } else { + ec = type_descriptor->op->oer_encoder( + type_descriptor, constraints, + struct_ptr, /* Pointer to the destination structure */ + encode_to_buffer_cb, &arg); + if(ec.encoded != -1) { + assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); + /* Return the encoded contents size */ + } + } + return ec; +} + +asn_enc_rval_t +oer_encode_primitive(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + ssize_t ret; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s (%" ASN_PRI_SIZE " bytes)", td ? td->name : "", st->size); + + /* + * X.696 (08/2015) #27.2 + */ + ret = oer_serialize_length(st->size, cb, app_key); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + er.encoded += ret; + + er.encoded += st->size; + if(cb(st->buf, st->size, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} + +static int +oer__count_bytes(const void *buffer, size_t size, void *bytes_ptr) { + size_t *bytes = bytes_ptr; + (void)buffer; + *bytes += size; + return 0; +} + +ssize_t +oer_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t serialized_byte_count = 0; + asn_enc_rval_t er = {0,0,0}; + ssize_t len_len; + + er = td->op->oer_encoder(td, constraints, sptr, oer__count_bytes, + &serialized_byte_count); + if(er.encoded < 0) return -1; + assert(serialized_byte_count == (size_t)er.encoded); + + len_len = oer_serialize_length(serialized_byte_count, cb, app_key); + if(len_len == -1) return -1; + + er = td->op->oer_encoder(td, constraints, sptr, cb, app_key); + if(er.encoded < 0) return -1; + assert(serialized_byte_count == (size_t)er.encoded); + + return len_len + er.encoded; +} + diff --git a/src/tmx/Asn_J2735/src/r2020/oer_support.c b/src/tmx/Asn_J2735/src/r2020/oer_support.c new file mode 100644 index 000000000..b252a9bce --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/oer_support.c @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2023 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +#include + +/* + * Fetch the length determinant (X.696 08/2015, #8.6) into *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t +oer_fetch_length(const void *bufptr, size_t size, size_t *len_r) { + uint8_t first_byte; + size_t len_len; /* Length of the length determinant */ + const uint8_t *b; + const uint8_t *bend; + size_t len; + + if(size == 0) { + *len_r = 0; + return 0; + } + + first_byte = *(const uint8_t *)bufptr; + if((first_byte & 0x80) == 0) { /* Short form */ + *len_r = first_byte; /* 0..127 */ + return 1; + } + + len_len = (first_byte & 0x7f); + if((1 + len_len) > size) { + *len_r = 0; + return 0; + } + + b = (const uint8_t *)bufptr + 1; + bend = b + len_len; + + for(; b < bend && *b == 0; b++) { + /* Skip the leading 0-bytes */ + } + + if((bend - b) > (ssize_t)sizeof(size_t)) { + /* Length is not representable by the native size_t type */ + *len_r = 0; + return -1; + } + + for(len = 0; b < bend; b++) { + len = (len << 8) + *b; + } + + if(len > RSIZE_MAX) { /* A bit of C11 validation */ + *len_r = 0; + return -1; + } + + *len_r = len; + assert(len_len + 1 == (size_t)(bend - (const uint8_t *)bufptr)); + return len_len + 1; +} + + +/* + * Serialize OER length. Returns the number of bytes serialized + * or -1 if a given callback returned with negative result. + */ +ssize_t +oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, + void *app_key) { + uint8_t scratch[1 + sizeof(length)]; + uint8_t *sp = scratch; + int littleEndian = 1; /* Run-time detection */ + const uint8_t *pstart; + const uint8_t *pend; + const uint8_t *p; + int add; + + if(length <= 127) { + uint8_t b = length; + if(cb(&b, 1, app_key) < 0) { + return -1; + } + return 1; + } + + if(*(char *)&littleEndian) { + pstart = (const uint8_t *)&length + sizeof(length) - 1; + pend = (const uint8_t *)&length; + add = -1; + } else { + pstart = (const uint8_t *)&length; + pend = pstart + sizeof(length); + add = 1; + } + + for(p = pstart; p != pend; p += add) { + /* Skip leading zeros. */ + if(*p) break; + } + + for(sp = scratch + 1; ; p += add) { + *sp++ = *p; + if(p == pend) break; + } + assert((sp - scratch) - 1 <= 0x7f); + scratch[0] = 0x80 + ((sp - scratch) - 1); + + if(cb(scratch, sp - scratch, app_key) < 0) { + return -1; + } + + return sp - scratch; +} + diff --git a/src/tmx/Asn_J2735/src/r2020/per_decoder.c b/src/tmx/Asn_J2735/src/r2020/per_decoder.c new file mode 100644 index 000000000..42b92cacd --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/per_decoder.c @@ -0,0 +1,5 @@ +#include +#include +#include + +// Absolutely nothing diff --git a/src/tmx/Asn_J2735/src/r2020/per_encoder.c b/src/tmx/Asn_J2735/src/r2020/per_encoder.c new file mode 100644 index 000000000..01ab70b06 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/per_encoder.c @@ -0,0 +1,35 @@ +#include +#include + +int +ignore_output(const void *data, size_t size, void *app_key) { + (void)data; + (void)size; + (void)app_key; + return 0; +} + +int +encode_dyn_cb(const void *buffer, size_t size, void *key) { + enc_dyn_arg *arg = key; + if(arg->length + size >= arg->allocated) { + size_t new_size = arg->allocated ? arg->allocated : 8; + void *p; + + do { + new_size <<= 2; + } while(arg->length + size >= new_size); + + p = REALLOC(arg->buffer, new_size); + if(!p) { + FREEMEM(arg->buffer); + memset(arg, 0, sizeof(*arg)); + return -1; + } + arg->buffer = p; + arg->allocated = new_size; + } + memcpy(((char *)arg->buffer) + arg->length, buffer, size); + arg->length += size; + return 0; +} diff --git a/src/tmx/Asn_J2735/src/r2020/per_opentype.c b/src/tmx/Asn_J2735/src/r2020/per_opentype.c new file mode 100644 index 000000000..5620c5bb9 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/per_opentype.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include + +/* + * Internal functions. + */ + +asn_dec_rval_t +uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)ctx; + (void)td; + (void)constraints; + (void)sptr; + + while(per_get_few_bits(pd, 1) >= 0); + + rv.code = RC_OK; + rv.consumed = pd->moved; + + return rv; +} diff --git a/src/tmx/Asn_J2735/src/r2020/per_support.c b/src/tmx/Asn_J2735/src/r2020/per_support.c new file mode 100644 index 000000000..62d343c74 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/per_support.c @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +// Absolutely nothing diff --git a/src/tmx/Asn_J2735/src/r2020/uper_decoder.c b/src/tmx/Asn_J2735/src/r2020/uper_decoder.c new file mode 100644 index 000000000..a88e95cfb --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/uper_decoder.c @@ -0,0 +1,96 @@ +#include +#include +#include + +/* + * Decode a "Production of a complete encoding", X.691#10.1. + * The complete encoding contains at least one byte, and is an integral + * multiple of 8 bytes. + */ +asn_dec_rval_t +uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +uper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->uper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %ld, counted %ld", + (long)rval.consumed, (long)pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} diff --git a/src/tmx/Asn_J2735/src/r2020/uper_encoder.c b/src/tmx/Asn_J2735/src/r2020/uper_encoder.c new file mode 100644 index 000000000..4c1d24a6c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/uper_encoder.c @@ -0,0 +1,127 @@ +#include +#include +#include + +static int _uper_encode_flush_outp(asn_per_outp_t *po); + +asn_enc_rval_t +uper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->uper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->uper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; + } + + return er; +} + +/* + * Argument type and callback necessary for uper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); + + return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_uper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); +} diff --git a/src/tmx/Asn_J2735/src/r2020/uper_opentype.c b/src/tmx/Asn_J2735/src/r2020/uper_opentype.c new file mode 100644 index 000000000..17ee06416 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/uper_opentype.c @@ -0,0 +1,372 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +typedef struct uper_ugot_key { + asn_per_data_t oldpd; /* Old per data source */ + size_t unclaimed; + size_t ot_moved; /* Number of bits moved by OT processing */ + int repeat; +} uper_ugot_key; + +static int uper_ugot_refill(asn_per_data_t *pd); +static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); + +/* + * Encode an "open type field". + * #10.1, #10.2 + */ +int +uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, + size); + + bptr = buf; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE + " to %s and allowing to save %" ASN_PRI_SSIZE, + size, td->name, may_save); + if(may_save < 0) break; + if(per_put_many_bits(po, bptr, may_save * 8)) break; + bptr = (char *)bptr + may_save; + size -= may_save; + if(need_eom && uper_put_length(po, 0, 0)) { + FREEMEM(buf); + return -1; + } + } while(size); + + FREEMEM(buf); + if(size) return -1; + + return 0; +} + +static asn_dec_rval_t +uper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = uper_get_length(pd, -1, 0, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, (buf == NULL)? NULL : buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* No one would give us more */ + } + + return rv; +} + +static asn_dec_rval_t CC_NOTUSED +uper_open_type_get_complex(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + uper_ugot_key arg; + asn_dec_rval_t rv; + ssize_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s from %s", td->name, + asn_bit_data_string(pd)); + arg.oldpd = *pd; + arg.unclaimed = 0; + arg.ot_moved = 0; + arg.repeat = 1; + pd->refill = uper_ugot_refill; + pd->refill_key = &arg; + pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ + pd->moved = 0; /* This now counts the open type size in bits */ + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); + ASN_DEBUG_INDENT_ADD(-4); + +#define UPDRESTOREPD do { \ + /* buffer and nboff are valid, preserve them. */ \ + pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ + pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ + pd->refill = arg.oldpd.refill; \ + pd->refill_key = arg.oldpd.refill_key; \ + } while(0) + + if(rv.code != RC_OK) { + UPDRESTOREPD; + return rv; + } + + ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, + asn_bit_data_string(pd), + asn_bit_data_string(&arg.oldpd), + (int)arg.unclaimed, (int)arg.repeat); + + padding = pd->moved % 8; + if(padding) { + int32_t pvalue; + if(padding > 7) { + ASN_DEBUG("Too large padding %d in open type", + (int)padding); + rv.code = RC_FAIL; + UPDRESTOREPD; + return rv; + } + padding = 8 - padding; + ASN_DEBUG("Getting padding of %d bits", (int)padding); + pvalue = per_get_few_bits(pd, padding); + switch(pvalue) { + case -1: + ASN_DEBUG("Padding skip failed"); + UPDRESTOREPD; + ASN__DECODE_STARVED; + case 0: break; + default: + ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", + (int)padding, (int)pvalue); + UPDRESTOREPD; + ASN__DECODE_FAILED; + } + } + if(pd->nboff != pd->nbits) { + ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, + asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); + if(1) { + UPDRESTOREPD; + ASN__DECODE_FAILED; + } else { + arg.unclaimed += pd->nbits - pd->nboff; + } + } + + /* Adjust pd back so it points to original data */ + UPDRESTOREPD; + + /* Skip data not consumed by the decoder */ + if(arg.unclaimed) { + ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); + switch(per_skip_bits(pd, arg.unclaimed)) { + case -1: + ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); + ASN__DECODE_STARVED; + case 0: + ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); + break; + default: + /* Padding must be blank */ + ASN_DEBUG("Non-blank unconsumed padding"); + ASN__DECODE_FAILED; + } + arg.unclaimed = 0; + } + + if(arg.repeat) { + ASN_DEBUG("Not consumed the whole thing"); + rv.code = RC_FAIL; + return rv; + } + + return rv; +} + + +asn_dec_rval_t +uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_TYPE_operation_t s_op; + asn_dec_rval_t rv; + + s_td.name = ""; + s_td.op = &s_op; + s_op.uper_decoder = uper_sot_suck; + + rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + +/* + * Internal functions. + */ + +static int +uper_ugot_refill(asn_per_data_t *pd) { + uper_ugot_key *arg = pd->refill_key; + ssize_t next_chunk_bytes, next_chunk_bits; + ssize_t avail; + + asn_per_data_t *oldpd = &arg->oldpd; + + ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", + (long)pd->moved, (long)oldpd->moved); + + /* Advance our position to where pd is */ + oldpd->buffer = pd->buffer; + oldpd->nboff = pd->nboff; + oldpd->nbits -= pd->moved - arg->ot_moved; + oldpd->moved += pd->moved - arg->ot_moved; + arg->ot_moved = pd->moved; + + if(arg->unclaimed) { + /* Refill the container */ + if(per_get_few_bits(oldpd, 1)) + return -1; + if(oldpd->nboff == 0) { + assert(0); + return -1; + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff - 1; + pd->nbits = oldpd->nbits; + ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", + (long)pd->moved); + return 0; + } + + if(!arg->repeat) { + ASN_DEBUG("Want more but refill doesn't have it"); + return -1; + } + + next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); + ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", + (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); + if(next_chunk_bytes < 0) return -1; + if(next_chunk_bytes == 0) { + pd->refill = 0; /* No more refills, naturally */ + assert(!arg->repeat); /* Implementation guarantee */ + } + next_chunk_bits = next_chunk_bytes << 3; + avail = oldpd->nbits - oldpd->nboff; + if(avail >= next_chunk_bits) { + pd->nbits = oldpd->nboff + next_chunk_bits; + arg->unclaimed = 0; + ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", + (long)next_chunk_bits, (long)oldpd->moved, + (long)oldpd->nboff, (long)oldpd->nbits, + (long)(oldpd->nbits - oldpd->nboff)); + } else { + pd->nbits = oldpd->nbits; + arg->unclaimed = next_chunk_bits - avail; + ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", + (long)avail, (long)next_chunk_bits, + (long)arg->unclaimed); + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff; + ASN_DEBUG("Refilled pd%s old%s", + asn_bit_data_string(pd), asn_bit_data_string(oldpd)); + return 0; +} + +static int +per_skip_bits(asn_per_data_t *pd, int skip_nbits) { + int hasNonZeroBits = 0; + while(skip_nbits > 0) { + int skip; + + /* per_get_few_bits() is more efficient when nbits <= 24 */ + if(skip_nbits < 24) + skip = skip_nbits; + else + skip = 24; + skip_nbits -= skip; + + switch(per_get_few_bits(pd, skip)) { + case -1: return -1; /* Starving */ + case 0: continue; /* Skipped empty space */ + default: hasNonZeroBits = 1; continue; + } + } + return hasNonZeroBits; +} diff --git a/src/tmx/Asn_J2735/src/r2020/uper_support.c b/src/tmx/Asn_J2735/src/r2020/uper_support.c new file mode 100644 index 000000000..ce8adc5e7 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/uper_support.c @@ -0,0 +1,311 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * X.691-201508 #10.9 General rules for encoding a length determinant. + * Get the optionally constrained length "n" from the stream. + */ +ssize_t +uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, + int *repeat) { + ssize_t value; + + *repeat = 0; + + /* #11.9.4.1 Encoding if constrained (according to effective bits) */ + if(ebits >= 0 && ebits <= 16) { + value = per_get_few_bits(pd, ebits); + if(value >= 0) value += lower_bound; + return value; + } + + value = per_get_few_bits(pd, 8); + if((value & 0x80) == 0) { /* #11.9.3.6 */ + return (value & 0x7F); + } else if((value & 0x40) == 0) { /* #11.9.3.7 */ + /* bit 8 ... set to 1 and bit 7 ... set to zero */ + value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); + return value; /* potential -1 from per_get_few_bits passes through. */ + } else if(value < 0) { + ASN_DEBUG("END of stream reached for PER"); + return -1; + } + value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) { + return -1; /* Prohibited by #11.9.3.8 */ + } + *repeat = 1; + return (16384 * value); +} + +/* + * Get the normally small length "n". + * This procedure used to decode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +ssize_t +uper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%d", (int)length); + return length; + } else { + int repeat; + length = uper_get_length(pd, -1, 0, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +/* + * Get the normally small non-negative whole number. + * X.691, #10.6 + */ +ssize_t +uper_get_nsnnwn(asn_per_data_t *pd) { + ssize_t value; + + value = per_get_few_bits(pd, 7); + if(value & 64) { /* implicit (value < 0) */ + value &= 63; + value <<= 2; + value |= per_get_few_bits(pd, 2); + if(value & 128) /* implicit (value < 0) */ + return -1; + if(value == 0) + return 0; + if(value >= 3) + return -1; + value = per_get_few_bits(pd, 8 * value); + return value; + } + + return value; +} + +/* + * X.691-11/2008, #11.6 + * Encoding of a normally small non-negative whole number + */ +int +uper_put_nsnnwn(asn_per_outp_t *po, int n) { + int bytes; + + if(n <= 63) { + if(n < 0) return -1; + return per_put_few_bits(po, n, 7); + } + if(n < 256) + bytes = 1; + else if(n < 65536) + bytes = 2; + else if(n < 256 * 65536) + bytes = 3; + else + return -1; /* This is not a "normally small" value */ + if(per_put_few_bits(po, bytes, 8)) + return -1; + + return per_put_few_bits(po, n, 8 * bytes); +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, uintmax_t *out_value, int nbits) { + uintmax_t lhalf; /* Lower half of the number*/ + intmax_t half; + + if(nbits <= 31) { + half = per_get_few_bits(pd, nbits); + if(half < 0) return -1; + *out_value = half; + return 0; + } + + if((size_t)nbits > 8 * sizeof(*out_value)) + return -1; /* RANGE */ + + half = per_get_few_bits(pd, 31); + if(half < 0) return -1; + + if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) + return -1; + + *out_value = ((uintmax_t)half << (nbits - 31)) | lhalf; + return 0; +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int +uper_put_constrained_whole_number_u(asn_per_outp_t *po, uintmax_t v, + int nbits) { + if(nbits <= 31) { + return per_put_few_bits(po, v, nbits); + } else { + /* Put higher portion first, followed by lower 31-bit */ + if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) + return -1; + return per_put_few_bits(po, v, 31); + } +} + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" (or part of it) into the stream. + */ +ssize_t +uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + if(length <= 127) { /* #11.9.3.6 */ + *need_eom = 0; + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } else if(length < 16384) { /* #10.9.3.7 */ + *need_eom = 0; + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + } + + *need_eom = 0 == (length & 16383); + length >>= 14; + if(length > 4) { + *need_eom = 0; + length = 4; + } + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); + +} + + +/* + * Put the normally small length "n" into the stream. + * This procedure used to encode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +int +uper_put_nslength(asn_per_outp_t *po, size_t length) { + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length - 1, 7) ? -1 : 0; + } else { + int need_eom = 0; + if(uper_put_length(po, length, &need_eom) != (ssize_t)length + || need_eom) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +static int +per__imax_range(intmax_t lb, intmax_t ub, uintmax_t *range_r) { + uintmax_t bounds_range; + if((ub < 0) == (lb < 0)) { + bounds_range = ub - lb; + } else if(lb < 0) { + assert(ub >= 0); + bounds_range = 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); + } else { + assert(!"Unreachable"); + return -1; + } + *range_r = bounds_range; + return 0; +} + +int +per_imax_range_rebase(intmax_t v, intmax_t lb, intmax_t ub, uintmax_t *output) { + uintmax_t range; + + assert(lb <= ub); + + if(v < lb || v > ub || per__imax_range(lb, ub, &range) < 0) { + /* Range error. */ + return -1; + } + + /* + * Fundamentally what we're doing is returning (v-lb). + * However, this triggers undefined behavior when the word width + * of signed (v) is the same as the size of unsigned (*output). + * In practice, it triggers the UndefinedSanitizer. Therefore we shall + * compute the ranges accurately to avoid C's undefined behavior. + */ + if((v < 0) == (lb < 0)) { + *output = v-lb; + return 0; + } else if(v < 0) { + uintmax_t rebased = 1 + (uintmax_t)-(v+1) + (uintmax_t)lb; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else if(lb < 0) { + uintmax_t rebased = 1 + (uintmax_t)-(lb+1) + (uintmax_t)v; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else { + assert(!"Unreachable"); + return -1; + } +} + +int +per_long_range_rebase(long v, intmax_t lb, intmax_t ub, unsigned long *output) { + uintmax_t tmp = *output; + int rc = per_imax_range_rebase((intmax_t)v, lb, ub, &tmp); + *output = tmp; + return rc; +} + +int +per_imax_range_unrebase(uintmax_t inp, intmax_t lb, intmax_t ub, intmax_t *outp) { + uintmax_t range; + + if(per__imax_range(lb, ub, &range) != 0) { + return -1; + } + + if(inp > range) { + /* + * We can encode something in the given number of bits that technically + * exceeds the range. This is an avenue for security errors, + * so we don't allow that. + */ + return -1; + } + + if(inp <= INTMAX_MAX) { + *outp = (intmax_t)inp + lb; + } else { + *outp = (lb + INTMAX_MAX + 1) + (intmax_t)((inp - INTMAX_MAX) - 1); + } + + return 0; +} + +int +per_long_range_unrebase(unsigned long inp, intmax_t lb, intmax_t ub, long *outp) { + intmax_t tmp = *outp; + int rc = per_imax_range_unrebase((uintmax_t)inp, lb, ub, &tmp); + *outp = tmp; + return rc; +} diff --git a/src/tmx/Asn_J2735/src/r2020/xer_decoder.c b/src/tmx/Asn_J2735/src/r2020/xer_decoder.c new file mode 100644 index 000000000..2a14557a6 --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/xer_decoder.c @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* XER/XML parsing support */ + + +/* + * Decode the XER encoding of a given type. + */ +asn_dec_rval_t +xer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *buffer, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); +} + + + +struct xer__cb_arg { + pxml_chunk_type_e chunk_type; + size_t chunk_size; + const void *chunk_buf; + int callback_not_invoked; +}; + +static int +xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { + struct xer__cb_arg *arg = (struct xer__cb_arg *)key; + arg->chunk_type = type; + arg->chunk_size = _chunk_size; + arg->chunk_buf = _chunk_data; + arg->callback_not_invoked = 0; + return -1; /* Terminate the XML parsing */ +} + +/* + * Fetch the next token from the XER/XML stream. + */ +ssize_t +xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { + struct xer__cb_arg arg; + int new_stateContext = *stateContext; + ssize_t ret; + + arg.callback_not_invoked = 1; + ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); + if(ret < 0) return -1; + if(arg.callback_not_invoked) { + assert(ret == 0); /* No data was consumed */ + *ch_type = PXER_WMORE; + return 0; /* Try again with more data */ + } else { + assert(arg.chunk_size); + assert(arg.chunk_buf == buffer); + } + + /* + * Translate the XML chunk types into more convenient ones. + */ + switch(arg.chunk_type) { + case PXML_TEXT: + *ch_type = PXER_TEXT; + break; + case PXML_TAG: + *ch_type = PXER_WMORE; + return 0; /* Want more */ + case PXML_TAG_END: + *ch_type = PXER_TAG; + break; + case PXML_COMMENT: + case PXML_COMMENT_END: + *ch_type = PXER_COMMENT; + break; + } + + *stateContext = new_stateContext; + return arg.chunk_size; +} + +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define RANGLE 0x3e /* '>' */ + +xer_check_tag_e +xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { + const char *buf = (const char *)buf_ptr; + const char *end; + xer_check_tag_e ct = XCT_OPENING; + + if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { + if(size >= 2) + ASN_DEBUG("Broken XML tag: \"%c...%c\"", + buf[0], buf[size - 1]); + return XCT_BROKEN; + } + + /* + * Determine the tag class. + */ + if(buf[1] == CSLASH) { + buf += 2; /* advance past "" */ + ct = XCT_CLOSING; + if(size > 0 && buf[size-1] == CSLASH) + return XCT_BROKEN; /* */ + } else { + buf++; /* advance past "<" */ + size -= 2; /* strip "<" and ">" */ + if(size > 0 && buf[size-1] == CSLASH) { + ct = XCT_BOTH; + size--; /* One more, for "/" */ + } + } + + /* Sometimes we don't care about the tag */ + if(!need_tag || !*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + /* + * Determine the tag name. + */ + for(end = buf + size; buf < end; buf++, need_tag++) { + int b = *buf, n = *need_tag; + if(b != n) { + if(n == 0) { + switch(b) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* "": whitespace is normal */ + return ct; + } + } + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + } + if(b == 0) + return XCT_BROKEN; /* Embedded 0 in buf?! */ + } + if(*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + return ct; +} + + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + if(rval.code != RC_OK) \ + ASN_DEBUG("Failed with %d", rval.code); \ + return rval; \ + } while(0) + +#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ + ssize_t converted_size = body_receiver \ + (struct_key, chunk_buf, chunk_size, \ + (size_t)chunk_size < size); \ + if(converted_size == -1) RETURN(RC_FAIL); \ + if(converted_size == 0 \ + && size == (size_t)chunk_size) \ + RETURN(RC_WMORE); \ + chunk_size = converted_size; \ + } while(0) +#define XER_GOT_EMPTY() do { \ + if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ + RETURN(RC_FAIL); \ + } while(0) + +/* + * Generalized function for decoding the primitive values. + */ +asn_dec_rval_t +xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, + const char *xml_tag, /* Expected XML tag */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder) + (void *struct_key, const void *chunk_buf, size_t chunk_size), + ssize_t (*body_receiver) + (void *struct_key, const void *chunk_buf, size_t chunk_size, + int have_more) + ) { + + asn_dec_rval_t rval; + ssize_t consumed_myself = 0; + + (void)opt_codec_ctx; + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + */ + if(ctx->phase > 1) RETURN(RC_FAIL); + for(;;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TEXT: + if(ctx->phase == 0) { + /* + * We have to ignore whitespace here, + * but in order to be forward compatible + * with EXTENDED-XER (EMBED-VALUES, #25) + * any text is just ignored here. + */ + } else { + XER_GOT_BODY(buf_ptr, ch_size, size); + } + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + assert(ch_type == PXER_TAG && size); + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + /* + * Phase 0: + * Expecting the opening tag + * for the type being processed. + * Phase 1: + * Waiting for the closing XML tag. + */ + switch(tcv) { + case XCT_BOTH: + if(ctx->phase) break; + /* Finished decoding of an empty element */ + XER_GOT_EMPTY(); + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + case XCT_CLOSING: + if(!ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_UNKNOWN_BO: + /* + * Certain tags in the body may be expected. + */ + if(opt_unexpected_tag_decoder + && opt_unexpected_tag_decoder(struct_key, + buf_ptr, ch_size) >= 0) { + /* Tag's processed fine */ + ADVANCE(ch_size); + if(!ctx->phase) { + /* We are not expecting + * the closing tag anymore. */ + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + } + continue; + } + /* Fall through */ + default: + break; /* Unexpected tag */ + } + + ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); + break; /* Dark and mysterious things have just happened */ + } + + RETURN(RC_FAIL); +} + + +size_t +xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { + const char *p = (const char *)chunk_buf; + const char *pend = (p == NULL)? NULL : p + chunk_size; + + for(; p < pend; p++) { + switch(*p) { + /* X.693, #8.1.4 + * HORISONTAL TAB (9) + * LINE FEED (10) + * CARRIAGE RETURN (13) + * SPACE (32) + */ + case 0x09: case 0x0a: case 0x0d: case 0x20: + continue; + default: + break; + } + break; + } + return (p - (const char *)chunk_buf); +} + +/* + * This is a vastly simplified, non-validating XML tree skipper. + */ +int +xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { + assert(*depth > 0); + switch(tcv) { + case XCT_BOTH: + case XCT_UNKNOWN_BO: + /* These negate each other. */ + return 0; + case XCT_OPENING: + case XCT_UNKNOWN_OP: + ++(*depth); + return 0; + case XCT_CLOSING: + case XCT_UNKNOWN_CL: + if(--(*depth) == 0) + return (tcv == XCT_CLOSING) ? 2 : 1; + return 0; + default: + return -1; + } +} diff --git a/src/tmx/Asn_J2735/src/r2020/xer_encoder.c b/src/tmx/Asn_J2735/src/r2020/xer_encoder.c new file mode 100644 index 000000000..4177ede5c --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/xer_encoder.c @@ -0,0 +1,237 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The XER encoder of any type. May be invoked by the application. + */ +asn_enc_rval_t +xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, + enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + asn_enc_rval_t tmper; + const char *mname; + size_t mlen; + int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; + + if(!td || !sptr) goto cb_failed; + + mname = td->xml_tag; + mlen = strlen(mname); + + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("\n", xcan); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +/* + * This is a helper function for xer_fprint, which directs all incoming data + * into the provided file descriptor. + */ +static int +xer__print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + +int +xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { + asn_enc_rval_t er = {0,0,0}; + + if(!stream) stream = stdout; + if(!td || !sptr) + return -1; + + er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); + if(er.encoded == -1) + return -1; + + return fflush(stream); +} + +struct xer_buffer { + char *buffer; + size_t buffer_size; + size_t allocated_size; +}; + +static int +xer__buffer_append(const void *buffer, size_t size, void *app_key) { + struct xer_buffer *xb = app_key; + + while(xb->buffer_size + size + 1 > xb->allocated_size) { + size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); + char *new_buf = MALLOC(new_size); + if(!new_buf) return -1; + if (xb->buffer) { + memcpy(new_buf, xb->buffer, xb->buffer_size); + } + FREEMEM(xb->buffer); + xb->buffer = new_buf; + xb->allocated_size = new_size; + } + + memcpy(xb->buffer + xb->buffer_size, buffer, size); + xb->buffer_size += size; + xb->buffer[xb->buffer_size] = '\0'; + return 0; +} + +enum xer_equivalence_e +xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, + const void *struct2, FILE *opt_debug_stream) { + struct xer_buffer xb1 = {0, 0, 0}; + struct xer_buffer xb2 = {0, 0, 0}; + asn_enc_rval_t e1, e2; + asn_dec_rval_t rval; + void *sptr = NULL; + + if(!td || !struct1 || !struct2) { + if(opt_debug_stream) { + if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); + if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); + if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); + } + return XEQ_FAILURE; + } + + e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); + if(e1.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + return XEQ_ENCODE1_FAILED; + } + + e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ENCODE1_FAILED; + } + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structures XER-encoded into different byte streams:\n=== " + "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", + xb1.buffer, xb2.buffer); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DIFFERENT; + } else { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Both structures encoded into the same XER byte stream " + "of size %" ASN_PRI_SIZE ":\n%s", + xb1.buffer_size, xb1.buffer); + } + } + + rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, + xb1.buffer_size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decode unexpectedly requires " + "more data:\n%s\n", + td->name, xb1.buffer); + } + /* Fall through */ + case RC_FAIL: + default: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decoding resulted in failure.\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DECODE_FAILED; + } + + if(rval.consumed != xb1.buffer_size + && ((rval.consumed > xb1.buffer_size) + || xer_whitespace_span(xb1.buffer + rval.consumed, + xb1.buffer_size - rval.consumed) + != (xb1.buffer_size - rval.consumed))) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " + "encoded (%" ASN_PRI_SIZE ")\n", + td->name, rval.consumed, xb1.buffer_size); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + /* + * Reuse xb2 to encode newly decoded structure. + */ + FREEMEM(xb2.buffer); + memset(&xb2, 0, sizeof(xb2)); + + e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + ASN_STRUCT_FREE(*td, sptr); + sptr = 0; + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "XER Encoding of round-trip decode of %s resulted in " + "different byte stream:\n" + "=== Original ===\n%s\n" + "=== Round-tripped ===\n%s\n", + xb1.buffer, xb2.buffer, td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_SUCCESS; +} + diff --git a/src/tmx/Asn_J2735/src/r2020/xer_support.c b/src/tmx/Asn_J2735/src/r2020/xer_support.c new file mode 100644 index 000000000..36b4bfbfc --- /dev/null +++ b/src/tmx/Asn_J2735/src/r2020/xer_support.c @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003, 2004, 2005 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* Parser states */ +typedef enum { + ST_TEXT, + ST_TAG_START, + ST_TAG_BODY, + ST_TAG_QUOTE_WAIT, + ST_TAG_QUOTED_STRING, + ST_TAG_UNQUOTED_STRING, + ST_COMMENT_WAIT_DASH1, /* ""[0] */ + ST_COMMENT_CLO_RT /* "-->"[1] */ +} pstate_e; + +static const int +_charclass[256] = { + 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ +}; +#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) +#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) +#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) + +/* Aliases for characters, ASCII/UTF-8 */ +#define EXCLAM 0x21 /* '!' */ +#define CQUOTE 0x22 /* '"' */ +#define CDASH 0x2d /* '-' */ +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define CEQUAL 0x3d /* '=' */ +#define RANGLE 0x3e /* '>' */ +#define CQUEST 0x3f /* '?' */ + +/* Invoke token callback */ +#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ + int _ret; \ + pstate_e ns = _ns; \ + ssize_t _sz = (p - chunk_start) + _current_too; \ + if (!_sz) { \ + /* Shortcut */ \ + state = _ns; \ + break; \ + } \ + _ret = cb(type, chunk_start, _sz, key); \ + if(_ret < _sz) { \ + if(_current_too && _ret == -1) \ + state = ns; \ + goto finish; \ + } \ + chunk_start = p + _current_too; \ + state = ns; \ + } while(0) + +#define TOKEN_CB(_type, _ns, _current_too) \ + TOKEN_CB_CALL(_type, _ns, _current_too, 0) + +#define PXML_TAG_FINAL_CHUNK_TYPE PXML_TAG_END +#define PXML_COMMENT_FINAL_CHUNK_TYPE PXML_COMMENT_END + +#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ + TOKEN_CB_CALL( _type ## _FINAL_CHUNK_TYPE , _ns, _current_too, 1) + +/* + * Parser itself + */ +ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { + pstate_e state = (pstate_e)*stateContext; + const char *chunk_start = (const char *)xmlbuf; + const char *p = chunk_start; + const char *end = p + size; + + for(; p < end; p++) { + int C = *(const unsigned char *)p; + switch(state) { + case ST_TEXT: + /* + * Initial state: we're in the middle of some text, + * or just have started. + */ + if (C == LANGLE) + /* We're now in the tag, probably */ + TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); + break; + case ST_TAG_START: + if (ALPHA(C) || (C == CSLASH)) + state = ST_TAG_BODY; + else if (C == EXCLAM) + state = ST_COMMENT_WAIT_DASH1; + else + /* + * Not characters and not whitespace. + * Must be something like "3 < 4". + */ + TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ + break; + case ST_TAG_BODY: + switch(C) { + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + case LANGLE: + /* + * The previous tag wasn't completed, but still + * recognized as valid. (Mozilla-compatible) + */ + TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); + break; + case CEQUAL: + state = ST_TAG_QUOTE_WAIT; + break; + } + break; + case ST_TAG_QUOTE_WAIT: + /* + * State after the equal sign ("=") in the tag. + */ + switch(C) { + case CQUOTE: + state = ST_TAG_QUOTED_STRING; + break; + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + default: + if(!WHITESPACE(C)) + /* Unquoted string value */ + state = ST_TAG_UNQUOTED_STRING; + } + break; + case ST_TAG_QUOTED_STRING: + /* + * Tag attribute's string value in quotes. + */ + if(C == CQUOTE) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_TAG_UNQUOTED_STRING: + if(C == RANGLE) { + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + } else if(WHITESPACE(C)) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH1: + if(C == CDASH) { + state = ST_COMMENT_WAIT_DASH2; + } else { + /* Some ordinary tag. */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH2: + if(C == CDASH) { + /* Seen "<--" */ + state = ST_COMMENT; + } else { + /* Some ordinary tag */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT: + if(C == CDASH) { + state = ST_COMMENT_CLO_DASH2; + } + break; + case ST_COMMENT_CLO_DASH2: + if(C == CDASH) { + state = ST_COMMENT_CLO_RT; + } else { + /* This is not an end of a comment */ + state = ST_COMMENT; + } + break; + case ST_COMMENT_CLO_RT: + if(C == RANGLE) { + TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); + } else if(C == CDASH) { + /* Maintain current state, still waiting for '>' */ + } else { + state = ST_COMMENT; + } + break; + } /* switch(*ptr) */ + } /* for() */ + + /* + * Flush the partially processed chunk, state permitting. + */ + if(p - chunk_start) { + switch (state) { + case ST_COMMENT: + TOKEN_CB(PXML_COMMENT, state, 0); + break; + case ST_TEXT: + TOKEN_CB(PXML_TEXT, state, 0); + break; + default: break; /* a no-op */ + } + } + +finish: + *stateContext = (int)state; + return chunk_start - (const char *)xmlbuf; +} + diff --git a/src/tmx/CMakeLists.txt b/src/tmx/CMakeLists.txt index ffb6a4880..559adc3a5 100644 --- a/src/tmx/CMakeLists.txt +++ b/src/tmx/CMakeLists.txt @@ -45,6 +45,7 @@ LINK_DIRECTORIES (${PROJECT_NAME} "${TMX_LIB_DIR}") # ADD_SUBDIRECTORY (Asn_J2735) ADD_LIBRARY (libasn_j2735 ALIAS ${ASN_J2735_LIBRARIES}) +MESSAGE (STATUS "Added ${ASN_J2735_LIBRARIES} library.") # # Set up some required platform dependencies, including MySQL # diff --git a/src/tmx/TmxApi/tmx/TmxApiMessages.h b/src/tmx/TmxApi/tmx/TmxApiMessages.h index ddd10a674..b8a1e6daa 100644 --- a/src/tmx/TmxApi/tmx/TmxApiMessages.h +++ b/src/tmx/TmxApi/tmx/TmxApiMessages.h @@ -196,7 +196,7 @@ enum msgPSID rtcmCorrections_PSID = 0x8000, signalRequestMessage_PSID = 0xE0000016, signalStatusMessage_PSID = 0x8002, - sensorDataSharingMessage_PSID = 0x90, + sensorDataSharingMessage_PSID = 0x8010, travelerInformation_PSID = 0x8003, personalSafetyMessage_PSID = 0x27, testMessage00_PSID = 0xBFEE, @@ -221,7 +221,7 @@ static CONSTEXPR const char *MSGPSID_ROADSIDEALERT_PSID_STRING = "0x8003"; static CONSTEXPR const char *MSGPSID_RTCMCORRECTIONS_PSID_STRING = "0x8000"; static CONSTEXPR const char *MSGPSID_SIGNALREQUESTMESSAGE_PSID_STRING = "0xE0000016"; static CONSTEXPR const char *MSGPSID_SIGNALSTATUSMESSAGE_PSID_STRING = "0x8002"; -static CONSTEXPR const char *MSGPSID_SENSORDATASHARINGMESSAGE_PSID_STRING = "0x90"; +static CONSTEXPR const char *MSGPSID_SENSORDATASHARINGMESSAGE_PSID_STRING = "0x8010"; static CONSTEXPR const char *MSGPSID_TRAVELERINFORMATION_PSID_STRING = "0x8003"; static CONSTEXPR const char *MSGPSID_PERSONALSAFETYMESSAGE_PSID_STRING = "0x27"; static CONSTEXPR const char *MSGPSID_TESTMESSAGE00_PSID_STRING = "0xBFEE"; diff --git a/src/tmx/TmxApi/tmx/j2735_messages/J2735MessageTemplate.hpp b/src/tmx/TmxApi/tmx/j2735_messages/J2735MessageTemplate.hpp index b9e5630d9..b8f56902f 100644 --- a/src/tmx/TmxApi/tmx/j2735_messages/J2735MessageTemplate.hpp +++ b/src/tmx/TmxApi/tmx/j2735_messages/J2735MessageTemplate.hpp @@ -51,7 +51,7 @@ inline typename MessageFrameTraits::message_type *\ _j2735_cast< MessageFrameTraits, SaeJ2735Traits >(const T *ptr) \ { return tmx::messages::j2735::UperFrameEncode(ptr); } -#else +#elif SAEJ2735_SPEC < 2020 #define TMX_J2735_MESSAGE_FRAME_FROM(T) \ template <> \ inline T *_j2735_cast< SaeJ2735Traits, MessageFrameTraits>\ @@ -81,6 +81,36 @@ inline typename MessageFrameTraits::message_type *\ return 0; \ } +#else +#define TMX_J2735_MESSAGE_FRAME_FROM(T) \ +template <> \ +inline T *_j2735_cast< SaeJ2735Traits, MessageFrameTraits>\ + (const typename MessageFrameTraits::message_type *ptr) \ +{ \ + if (ptr && ptr->value.present == MessageFrame__value_PR_ ##T) \ + return (T *)&(ptr->value.choice.T); \ + else \ + return 0; \ +} + +#define TMX_J2735_MESSAGE_FRAME_TO(T) \ +template <> \ +inline typename MessageFrameTraits::message_type *\ + _j2735_cast< MessageFrameTraits, SaeJ2735Traits >(const T *ptr) \ +{ \ + if (ptr) \ + { \ + typename MessageFrameTraits::message_type *frame = \ + (typename MessageFrameTraits::message_type *)\ + calloc(1, sizeof(typename MessageFrameTraits::message_type)); \ + frame->messageId = get_default_messageId< SaeJ2735Traits >(); \ + frame->value.present = MessageFrame__value_PR_ ##T; \ + frame->value.choice.T = *(ptr); \ + return frame; \ + } \ + return 0; \ +} + #endif #define TMX_J2735_DECLARE_MESSAGE(NM, T, ID, TYPE) \ diff --git a/src/tmx/TmxApi/tmx/j2735_messages/testMessage01.hpp b/src/tmx/TmxApi/tmx/j2735_messages/testMessage01.hpp index 0be856c91..0b16f7ab4 100644 --- a/src/tmx/TmxApi/tmx/j2735_messages/testMessage01.hpp +++ b/src/tmx/TmxApi/tmx/j2735_messages/testMessage01.hpp @@ -14,8 +14,8 @@ #include #if SAEJ2735_SPEC >= 63 -//TMX_J2735_DECLARE(tsm6, TestMessage06, api::basicSafetyMessage_D, api::MSGSUBTYPE_BASICSAFETYMESSAGE_STRING) -//#else +// TMX_J2735_DECLARE(tsm6, TestMessage06, api::basicSafetyMessage_D, api::MSGSUBTYPE_BASICSAFETYMESSAGE_STRING) +// #else TMX_J2735_DECLARE(tsm1, TestMessage01, api::testMessage01, api::MSGSUBTYPE_TESTMESSAGE01_STRING) // Specialize the unique key function diff --git a/src/tmx/TmxApi/tmx/j2735_messages/testMessage02.hpp b/src/tmx/TmxApi/tmx/j2735_messages/testMessage02.hpp index 5376e113f..a1179ce3c 100644 --- a/src/tmx/TmxApi/tmx/j2735_messages/testMessage02.hpp +++ b/src/tmx/TmxApi/tmx/j2735_messages/testMessage02.hpp @@ -14,8 +14,8 @@ #include #if SAEJ2735_SPEC >= 63 -//TMX_J2735_DECLARE(tsm6, TestMessage06, api::basicSafetyMessage_D, api::MSGSUBTYPE_BASICSAFETYMESSAGE_STRING) -//#else +// TMX_J2735_DECLARE(tsm6, TestMessage06, api::basicSafetyMessage_D, api::MSGSUBTYPE_BASICSAFETYMESSAGE_STRING) +// #else TMX_J2735_DECLARE(tsm2, TestMessage02, api::testMessage02, api::MSGSUBTYPE_TESTMESSAGE02_STRING) // Specialize the unique key function diff --git a/src/tmx/TmxApi/tmx/j2735_messages/testMessage04.hpp b/src/tmx/TmxApi/tmx/j2735_messages/testMessage04.hpp index c78a3d750..c0df98a0b 100644 --- a/src/tmx/TmxApi/tmx/j2735_messages/testMessage04.hpp +++ b/src/tmx/TmxApi/tmx/j2735_messages/testMessage04.hpp @@ -14,8 +14,8 @@ #include #if SAEJ2735_SPEC >= 63 -//TMX_J2735_DECLARE(tsm6, TestMessage06, api::basicSafetyMessage_D, api::MSGSUBTYPE_BASICSAFETYMESSAGE_STRING) -//#else +// TMX_J2735_DECLARE(tsm6, TestMessage06, api::basicSafetyMessage_D, api::MSGSUBTYPE_BASICSAFETYMESSAGE_STRING) +// #else TMX_J2735_DECLARE(tsm4, TestMessage04, api::testMessage04, api::MSGSUBTYPE_TESTMESSAGE04_STRING) // Specialize the unique key function diff --git a/src/tmx/TmxApi/tmx/j2735_messages/testMessage05.hpp b/src/tmx/TmxApi/tmx/j2735_messages/testMessage05.hpp index 535d09c23..aeffcc6dd 100644 --- a/src/tmx/TmxApi/tmx/j2735_messages/testMessage05.hpp +++ b/src/tmx/TmxApi/tmx/j2735_messages/testMessage05.hpp @@ -14,8 +14,8 @@ #include #if SAEJ2735_SPEC >= 63 -//TMX_J2735_DECLARE(tsm6, TestMessage06, api::basicSafetyMessage_D, api::MSGSUBTYPE_BASICSAFETYMESSAGE_STRING) -//#else +// TMX_J2735_DECLARE(tsm6, TestMessage06, api::basicSafetyMessage_D, api::MSGSUBTYPE_BASICSAFETYMESSAGE_STRING) +// #else TMX_J2735_DECLARE(tsm5, TestMessage05, api::testMessage05, api::MSGSUBTYPE_TESTMESSAGE05_STRING) // Specialize the unique key function diff --git a/src/tmx/TmxApi/tmx/messages/IvpJ2735.h b/src/tmx/TmxApi/tmx/messages/IvpJ2735.h index 5698de1ab..eef5455d8 100644 --- a/src/tmx/TmxApi/tmx/messages/IvpJ2735.h +++ b/src/tmx/TmxApi/tmx/messages/IvpJ2735.h @@ -14,7 +14,7 @@ #include #ifndef SAEJ2735_SPEC -#define SAEJ2735_SPEC 63 +#define SAEJ2735_SPEC 2020 #endif #include diff --git a/src/tmx/TmxApi/tmx/messages/SaeJ2735Traits.hpp b/src/tmx/TmxApi/tmx/messages/SaeJ2735Traits.hpp index b2c03cc1e..114b78f75 100644 --- a/src/tmx/TmxApi/tmx/messages/SaeJ2735Traits.hpp +++ b/src/tmx/TmxApi/tmx/messages/SaeJ2735Traits.hpp @@ -14,7 +14,7 @@ #include #ifndef SAEJ2735_SPEC -#define SAEJ2735_SPEC 63 +#define SAEJ2735_SPEC 2020 #endif #define DEFINE_MEMBER_CHECKER(member) \ diff --git a/src/tmx/TmxCore/src/MessageRouterBasic.cpp b/src/tmx/TmxCore/src/MessageRouterBasic.cpp index ff7b78a5f..9545a57c9 100644 --- a/src/tmx/TmxCore/src/MessageRouterBasic.cpp +++ b/src/tmx/TmxCore/src/MessageRouterBasic.cpp @@ -50,11 +50,9 @@ void MessageRouterBasic::broadcastMessage(MessageReceiver *sender, IvpMessage *m //PerformanceTimer timer; - pthread_mutex_lock(&this->mMapLock); pthread_mutex_lock(&this->mActiveBroadcastsLock); this->mActiveBroadcasts++; pthread_mutex_unlock(&this->mActiveBroadcastsLock); - pthread_mutex_unlock(&this->mMapLock); int broadcastCount = 0; @@ -107,7 +105,7 @@ void MessageRouterBasic::broadcastMessage(MessageReceiver *sender, IvpMessage *m } } } - + pthread_mutex_lock(&this->mActiveBroadcastsLock); this->mActiveBroadcasts--; pthread_mutex_unlock(&this->mActiveBroadcastsLock); diff --git a/src/tmx/TmxCore/src/MessageRouterBasic.h b/src/tmx/TmxCore/src/MessageRouterBasic.h index 58cc10dc5..60d8fd04c 100644 --- a/src/tmx/TmxCore/src/MessageRouterBasic.h +++ b/src/tmx/TmxCore/src/MessageRouterBasic.h @@ -52,7 +52,7 @@ class MessageRouterBasic : public MessageRouter * Keeps track of how many threads are actively inside the broadcast method in a thread safe manner (using mActiveBroadcastsLock). * This is to allow concurrent execution of the broadcast, but give the register and unregister methods a way to tell when broadcasts are inactive. */ - volatile int mActiveBroadcasts; + int mActiveBroadcasts; /*! * Used to keep the mActiveBroadcast count accurate since multiple thread's may be accessing. diff --git a/src/tmx/TmxUtils/src/simulation/SimulationEnvUtils.cpp b/src/tmx/TmxUtils/src/simulation/SimulationEnvUtils.cpp index 0913db6e7..a659b3502 100644 --- a/src/tmx/TmxUtils/src/simulation/SimulationEnvUtils.cpp +++ b/src/tmx/TmxUtils/src/simulation/SimulationEnvUtils.cpp @@ -1,4 +1,4 @@ -#include +#include "simulation/SimulationEnvUtils.h" namespace tmx::utils::sim{ bool is_simulation_mode() { @@ -13,15 +13,17 @@ namespace tmx::utils::sim{ } - std::string get_sim_config(const char *config_name) { + std::string get_sim_config(const char *config_name, bool required) { if (is_simulation_mode() && config_name) { - try { + if ( std::getenv(config_name) != nullptr) { std::string config = std::getenv(config_name); return config; } - catch(const std::logic_error &e) { + else { std::string config_name_str = config_name; - throw TmxException("Simulation Config " + config_name_str + " not set!"); + if ( required ) { + throw TmxException("Required simulation config " + config_name_str + " not set!"); + } } } else { throw TmxException("V2X-Hub not in sumulation mode or config param name is null pointer!"); diff --git a/src/tmx/TmxUtils/src/simulation/SimulationEnvUtils.h b/src/tmx/TmxUtils/src/simulation/SimulationEnvUtils.h index efffc4ffa..6b2822fd8 100644 --- a/src/tmx/TmxUtils/src/simulation/SimulationEnvUtils.h +++ b/src/tmx/TmxUtils/src/simulation/SimulationEnvUtils.h @@ -77,7 +77,13 @@ namespace tmx::utils::sim{ * @return true if SIMULATION_MODE is "true" or "TRUE" and false otherwise. */ bool is_simulation_mode(); - - std::string get_sim_config(const char *config_name); + /** + * @brief Get simulation configuration. + * @param config_name Name of configuration parameter + * @param required bool flag whether configuration paramter is required (Default: true) + * @throws tmx::TmxException if required configuration is unset or system not in simulation mode. + * @return string value of sim configuration + */ + std::string get_sim_config(const char *config_name, bool required = true); } \ No newline at end of file diff --git a/src/tmx/TmxUtils/test/J2735MessageTest.cpp b/src/tmx/TmxUtils/test/J2735MessageTest.cpp index c885ecdd9..1bc605656 100644 --- a/src/tmx/TmxUtils/test/J2735MessageTest.cpp +++ b/src/tmx/TmxUtils/test/J2735MessageTest.cpp @@ -527,8 +527,9 @@ TEST_F(J2735MessageTest, EncodeBasicSafetyMessage_PartII) auto partIICnt = (BSMpartIIExtension_t*) calloc(1, sizeof(BSMpartIIExtension_t)); partIICnt->partII_Id = 1; partIICnt->partII_Value.present = BSMpartIIExtension__partII_Value_PR_SpecialVehicleExtensions; - auto specialVEx= (SpecialVehicleExtensions_t*) calloc(1, sizeof(SpecialVehicleExtensions_t)); - auto emergencyDetails= (EmergencyDetails_t*) calloc(1, sizeof(EmergencyDetails_t)); + + auto specialVEx = (SpecialVehicleExtensions_t*) calloc(1, sizeof(SpecialVehicleExtensions_t)); + auto emergencyDetails = (EmergencyDetails_t*) calloc(1, sizeof(EmergencyDetails_t)); emergencyDetails->lightsUse = LightbarInUse_inUse; auto resp_type = (ResponseType_t*) calloc(1, sizeof(ResponseType_t)); *resp_type = ResponseType_emergency; @@ -540,20 +541,20 @@ TEST_F(J2735MessageTest, EncodeBasicSafetyMessage_PartII) message->partII = bsmPartII; // BSM regional extension - auto regional = (BasicSafetyMessage::BasicSafetyMessage__regional *)calloc(1, sizeof(BasicSafetyMessage::BasicSafetyMessage__regional)); - auto reg_bsm = (Reg_BasicSafetyMessage *)calloc(1, sizeof(Reg_BasicSafetyMessage)); + auto regional = (BasicSafetyMessage::BasicSafetyMessage__regional*) calloc(1, sizeof(BasicSafetyMessage::BasicSafetyMessage__regional)); + auto reg_bsm = (Reg_BasicSafetyMessage_t*) calloc(1, sizeof(Reg_BasicSafetyMessage_t)); reg_bsm->regionId = 128; reg_bsm->regExtValue.present = Reg_BasicSafetyMessage__regExtValue_PR_BasicSafetyMessage_addGrpCarma; - auto carma_bsm_data = (BasicSafetyMessage_addGrpCarma_t *)calloc(1, sizeof(BasicSafetyMessage_addGrpCarma_t)); - auto carma_bsm_destination_points = (BasicSafetyMessage_addGrpCarma::BasicSafetyMessage_addGrpCarma__routeDestinationPoints *)calloc(1, sizeof(BasicSafetyMessage_addGrpCarma::BasicSafetyMessage_addGrpCarma__routeDestinationPoints)); - auto point = (Position3D_t *)calloc(1, sizeof(Position3D_t)); + auto carma_bsm_data = (BasicSafetyMessage_addGrpCarma_t*) calloc(1, sizeof(BasicSafetyMessage_addGrpCarma_t)); + auto carma_bsm_destination_points = (BasicSafetyMessage_addGrpCarma::BasicSafetyMessage_addGrpCarma__routeDestinationPoints*) calloc(1, sizeof(BasicSafetyMessage_addGrpCarma::BasicSafetyMessage_addGrpCarma__routeDestinationPoints)); + auto point = (Position3D_t*) calloc(1, sizeof(Position3D_t)); auto dummy_lat = 12; auto dummy_long = 1312; point->lat = dummy_lat; point->Long = dummy_long; asn_sequence_add(&carma_bsm_destination_points->list.array, point); - auto point2 = (Position3D_t *)calloc(1, sizeof(Position3D_t)); + auto point2 = (Position3D_t*) calloc(1, sizeof(Position3D_t)); point2->lat = dummy_lat + 1000; point2->Long = dummy_long + 1000; asn_sequence_add(&carma_bsm_destination_points->list.array, point2); @@ -563,6 +564,8 @@ TEST_F(J2735MessageTest, EncodeBasicSafetyMessage_PartII) asn_sequence_add(®ional->list.array, reg_bsm); message->regional = regional; + xer_fprint(stdout, &asn_DEF_BasicSafetyMessage, message); + //Encode BSM tmx::messages::BsmEncodedMessage bsmEncodeMessage; tmx::messages::BsmMessage* _bsmMessage = new tmx::messages::BsmMessage(message); @@ -579,7 +582,7 @@ TEST_F(J2735MessageTest, EncodeBasicSafetyMessage_PartII) ASSERT_EQ(LightbarInUse_inUse, decoded_bsm_ptr->partII->list.array[0]->partII_Value.choice.SpecialVehicleExtensions.vehicleAlerts->lightsUse); ASSERT_EQ(SirenInUse_inUse, decoded_bsm_ptr->partII->list.array[0]->partII_Value.choice.SpecialVehicleExtensions.vehicleAlerts->sirenUse); auto decoded_regional = (BasicSafetyMessage::BasicSafetyMessage__regional *)calloc(1, sizeof(BasicSafetyMessage::BasicSafetyMessage__regional)); - auto decoded_reg_bsm = (Reg_BasicSafetyMessage *)calloc(1, sizeof(Reg_BasicSafetyMessage)); + auto decoded_reg_bsm = (Reg_BasicSafetyMessage_t *)calloc(1, sizeof(Reg_BasicSafetyMessage_t)); auto decode_carma_bsm_data = (BasicSafetyMessage_addGrpCarma_t *)calloc(1, sizeof(BasicSafetyMessage_addGrpCarma_t)); decoded_regional = decoded_bsm_ptr->regional; decoded_reg_bsm = decoded_regional->list.array[0]; @@ -621,7 +624,7 @@ TEST_F(J2735MessageTest, EncodeTrafficControlRequest){ TEST_F(J2735MessageTest, EncodeTrafficControlMessage){ //Has tag in TCM - string tsm5str=" 30642B129B984162 0 9 9 0034b8d88d084ffdaf23837926031658 0 0034b8d88d084ffdaf23837926031658 27506547 153722867280912 1111111 epsg:3785 WGS84 27506547 -818331529 281182119 0 424 3403 000 -2037220 -2037220 -2037220 -2037210 -2037220 -2037220 -2047222 -2037220 -203722-2 -2037210 -2037220 -2037220 -2037220 -2037220 -13460 "; + string tsm5str="30642B129B9841620990034b8d88d084ffdaf2383792603165800034b8d88d084ffdaf23837926031658275065471537228672809121111111epsg:3785WGS8427506547-81833152928118211904243403000-2037220-2037220-2037220-2037210-2037220-2037220-2047222-2037220-203722-2-2037210-2037220-2037220-2037220-2037220-13460"; std::stringstream ss; tsm5Message tsm5msg; tsm5EncodedMessage tsm5Enc; @@ -660,11 +663,19 @@ TEST_F (J2735MessageTest, EncodeSrm) requestType->role = 0; requestor->type = requestType; RequestorPositionVector_t *position = (RequestorPositionVector_t *)calloc(1, sizeof(RequestorPositionVector_t)); + #if SAEJ2735_SPEC < 2020 DSRC_Angle_t *heading_angle = (DSRC_Angle_t *)calloc(1, sizeof(DSRC_Angle_t)); + #else + Common_Angle_t *heading_angle = (Common_Angle_t *)calloc(1, sizeof(Common_Angle_t)); + #endif *heading_angle = 123; position->heading = heading_angle; Position3D_t *position_point = (Position3D_t *)calloc(1, sizeof(Position3D_t)); + #if SAEJ2735_SPEC < 2020 DSRC_Elevation_t *elev = (DSRC_Elevation_t *)calloc(1, sizeof(DSRC_Elevation_t)); + #else + Common_Elevation_t *elev = (Common_Elevation_t *)calloc(1, sizeof(Common_Elevation_t)); + #endif *elev = 12; position_point->elevation = elev; position_point->lat = 3712333; @@ -735,7 +746,11 @@ TEST_F (J2735MessageTest, EncodeSrm) TEST_F(J2735MessageTest, EncodeTravelerInformation){ //Advisory + #if SAEJ2735_SPEC < 2020 string timStr="1115549000000000023667BAC0389549775-7714918353901111111111111111115549170389549775-7714918353901111111111111111
389549775-771491835390
74
007186curve13569987654321
"; + #else + string timStr="100000000000F9E1D8D0389549153-771488965400000000000000000020233945743200050389549153-7714889654003660000000000000000-771489394389549194-10-77148721538954899610-771485210389548981100027Curve Ahead2564258720"; + #endif std::stringstream ss; TimMessage timMsg; TimEncodedMessage timEnc; @@ -745,7 +760,11 @@ TEST_F(J2735MessageTest, EncodeTravelerInformation){ timMsg.set_contents(container.get_storage().get_tree()); timEnc.encode_j2735_message(timMsg); ASSERT_EQ(31, timEnc.get_msgId()); + #if SAEJ2735_SPEC < 2020 string expectedHex = "001f526011c35d000000000023667bac0407299b9ef9e7a9b9408230dfffe4386ba00078005a53373df3cf5372810461b90ffff53373df3cf53728104618129800010704a04c7d7976ca3501872e1bb66ad19b2620"; + #else + string expectedHex = "001f6820100000000000f9e1d8d0803299b9eac27a9baa74232000000fcec0a9df4028007e53373d584f53754e846400b720000000b8f5374e3666e7ac5013ece3d4ddc1099b9e988050538f5378f9666e7a5a814140034000dea1f5e5db2a083a32e1c80a048b26a22100"; + #endif ASSERT_EQ(expectedHex, timEnc.get_payload_str()); } @@ -765,8 +784,8 @@ TEST_F(J2735MessageTest, EncodeSDSM) sDSMTimeStamp->year = year; message->sDSMTimeStamp = *sDSMTimeStamp; - message->refPos.lat = 38.121212; - message->refPos.Long = -77.121212; + message->refPos.lat = 38121212; + message->refPos.Long = -77121212; message->refPosXYConf.orientation = 10; message->refPosXYConf.semiMajor = 12; @@ -776,6 +795,7 @@ TEST_F(J2735MessageTest, EncodeSDSM) auto objectData = (DetectedObjectData_t*) calloc(1, sizeof(DetectedObjectData_t)); objectData->detObjCommon.objType = ObjectType_unknown; objectData->detObjCommon.objTypeCfd = 1; + objectData->detObjCommon.objectID = 1; objectData->detObjCommon.measurementTime = 1; objectData->detObjCommon.timeConfidence = 1; objectData->detObjCommon.pos.offsetX = 1; @@ -798,7 +818,7 @@ TEST_F(J2735MessageTest, EncodeSDSM) free(message); free(frame_msg.get_j2735_data().get()); ASSERT_EQ(41, SdsmEncodeMessage.get_msgId()); - std::string expectedSDSMEncHex = "0029250a010c0c0a101f9c35a4e9266b49d1b20c34000a00000020000bba0a000200004400240009"; + std::string expectedSDSMEncHex = "0029250a010c0c0a101f9c37ea97fc66b10b430c34000a00000020002bba0a000200004400240009"; ASSERT_EQ(expectedSDSMEncHex, SdsmEncodeMessage.get_payload_str()); //Decode SDSM diff --git a/src/tmx/TmxUtils/test/TestSimulationEnvUtils.cpp b/src/tmx/TmxUtils/test/TestSimulationEnvUtils.cpp new file mode 100644 index 000000000..9232c0c62 --- /dev/null +++ b/src/tmx/TmxUtils/test/TestSimulationEnvUtils.cpp @@ -0,0 +1,71 @@ +#include +#include +#include + + +TEST(testSimulationEnvUtils, is_simulation_mode_unset) +{ + // Unset any environment set SIMULATION_MODE + unsetenv(tmx::utils::sim::SIMULATION_MODE); + EXPECT_FALSE(tmx::utils::sim::is_simulation_mode()); +} + +TEST(testSimulationEnvUtils, is_simulation_mode_true) { + setenv(tmx::utils::sim::SIMULATION_MODE, "true", 1); + EXPECT_TRUE(tmx::utils::sim::is_simulation_mode()); + setenv(tmx::utils::sim::SIMULATION_MODE, "TRUE", 1); + EXPECT_TRUE(tmx::utils::sim::is_simulation_mode()); +} + +TEST(testSimulationEnvUtils, is_simulation_mode_false) { + setenv(tmx::utils::sim::SIMULATION_MODE, "false", 1); + EXPECT_FALSE(tmx::utils::sim::is_simulation_mode()); + setenv(tmx::utils::sim::SIMULATION_MODE, "FALSE", 1); + EXPECT_FALSE(tmx::utils::sim::is_simulation_mode()); +} + +TEST(testSimulationEnvUtils, get_sim_config_non_simulation_mode) { + // Precondition for test (ASSERT) + ASSERT_FALSE(tmx::utils::sim::is_simulation_mode()); + EXPECT_THROW(tmx::utils::sim::get_sim_config(tmx::utils::sim::SIMULATION_IP), tmx::TmxException ); + +} + +TEST(testSimulationEnvUtils, get_sim_config_unset) { + // Precondition for test (ASSERT) + setenv(tmx::utils::sim::SIMULATION_MODE, "true", 1); + unsetenv(tmx::utils::sim::SIMULATION_IP); + ASSERT_TRUE(tmx::utils::sim::is_simulation_mode()); + + EXPECT_THROW(tmx::utils::sim::get_sim_config(tmx::utils::sim::SIMULATION_IP), tmx::TmxException ); +} + +TEST(testSimulationEnvUtils, get_sim_config_set) { + // Precondition for test (ASSERT) + std::string simulation_ip = "127.0.0.1"; + setenv(tmx::utils::sim::SIMULATION_MODE, "true", 1); + setenv(tmx::utils::sim::SIMULATION_IP, simulation_ip.c_str(), 1); + ASSERT_TRUE(tmx::utils::sim::is_simulation_mode()); + + EXPECT_EQ(tmx::utils::sim::get_sim_config(tmx::utils::sim::SIMULATION_IP), simulation_ip ); +} + +TEST(testSimulationEnvUtils, get_sim_config_optional_set) { + // Precondition for test (ASSERT) + std::string simulation_ip = "127.0.0.1"; + setenv(tmx::utils::sim::SIMULATION_MODE, "true", 1); + setenv(tmx::utils::sim::SIMULATION_IP, simulation_ip.c_str(), 1); + ASSERT_TRUE(tmx::utils::sim::is_simulation_mode()); + + EXPECT_EQ(tmx::utils::sim::get_sim_config(tmx::utils::sim::SIMULATION_IP,false), simulation_ip ); +} + +TEST(testSimulationEnvUtils, get_sim_config_optional_unset) { + // Precondition for test (ASSERT) + std::string simulation_ip = "127.0.0.1"; + setenv(tmx::utils::sim::SIMULATION_MODE, "true", 1); + unsetenv(tmx::utils::sim::SIMULATION_IP); + ASSERT_TRUE(tmx::utils::sim::is_simulation_mode()); + + EXPECT_TRUE(tmx::utils::sim::get_sim_config(tmx::utils::sim::SIMULATION_IP,false).empty()); +} \ No newline at end of file diff --git a/src/tmx/tmx.doxyfile b/src/tmx/tmx.doxyfile index 04fbd1519..4e72c5532 100644 --- a/src/tmx/tmx.doxyfile +++ b/src/tmx/tmx.doxyfile @@ -1935,7 +1935,7 @@ INCLUDE_FILE_PATTERNS = # recursively expanded use the := operator instead of the = operator. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -PREDEFINED = SAEJ2735_SPEC=63 +PREDEFINED = SAEJ2735_SPEC=2020 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # tag can be used to specify a list of macro names that should be expanded. The diff --git a/src/v2i-hub/CARMACloudPlugin/manifest.json b/src/v2i-hub/CARMACloudPlugin/manifest.json index e8241c871..2a36095c8 100644 --- a/src/v2i-hub/CARMACloudPlugin/manifest.json +++ b/src/v2i-hub/CARMACloudPlugin/manifest.json @@ -25,9 +25,24 @@ }, { "key":"WebServiceIP", - "default":"127.0.0.1", + "default":"0.0.0.0", "description":"Server IP address for V2X hub" }, + { + "key":"WebServicePort", + "default":"22222", + "description":"Server Port for V2X hub to receive TCM messages" + }, + { + "key":"CARMACloudIP", + "default":"http://127.0.0.1", + "description":"Server IP address of carma-cloud" + }, + { + "key":"CARMACloudPort", + "default":"33333", + "description":"Server Port for V2X hub to send TCR messages to carma-cloud" + }, { "key":"fetchTime", "default":"15", @@ -63,11 +78,6 @@ "default": "No response received from CMV after repeatedly broadcast TCMs.", "description": "If the plugin does not receives any aknowledgement from CMV within the configured seconds that match the original TCM, the plugin will create an NO ACK message and display it on UI." }, - { - "key":"WebServicePort", - "default":"22222", - "description":"Server Port for V2X hub to receive TCM messages" - }, { "key":"listTCM", "default":"true", diff --git a/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.cpp b/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.cpp index 4f46a190c..54aa176ae 100644 --- a/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.cpp +++ b/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.cpp @@ -1,653 +1,649 @@ -#include "CARMACloudPlugin.h" -#include -#include -#include -using namespace std; -using namespace tmx::messages; -using namespace tmx::utils; -using namespace boost::property_tree; - -namespace CARMACloudPlugin { - - - -/** - * Construct a new CARMACloudPlugin with the given name. - * - * @param name The name to give the plugin for identification purposes - */ -CARMACloudPlugin::CARMACloudPlugin(string name) :PluginClient(name) { - - UpdateConfigSettings(); - std::lock_guard lock(_cfgLock); - AddMessageFilter < tsm4Message > (this, &CARMACloudPlugin::HandleCARMARequest); - AddMessageFilter < tsm3Message > (this, &CARMACloudPlugin::HandleMobilityOperationMessage); - - // Subscribe to all messages specified by the filters above. - SubscribeToMessages(); - std::thread webthread(&CARMACloudPlugin::StartWebService,this); - webthread.detach(); // wait for the thread to finish - url ="http://127.0.0.1:33333"; // 33333 is the port that will send from v2xhub to carma cloud ## initally was 23665 - base_hb = "/carmacloud/v2xhub"; - base_req = "/carmacloud/tcmreq"; - base_ack = "/carmacloud/tcmack"; - method = "POST"; - _not_ACK_TCMs = std::make_shared>(); - _tcm_broadcast_times = std::make_shared>(); - _tcm_broadcast_starting_time = std::make_shared>(); - std::thread Broadcast_t(&CARMACloudPlugin::TCMAckCheckAndRebroadcastTCM, this); - Broadcast_t.detach(); - -} - - -void CARMACloudPlugin::HandleCARMARequest(tsm4Message &msg, routeable_message &routeableMsg) -{ - auto carmaRequest = msg.get_j2735_data(); - - - - // convert reqid bytes to hex string. - size_t hexlen = 2; //size of each hex representation with a leading 0 - char reqid[carmaRequest->body.choice.tcrV01.reqid.size * hexlen + 1]; - for (int i = 0; i < carmaRequest->body.choice.tcrV01.reqid.size; i++) - { - sprintf(reqid+(i*hexlen), "%.2X", carmaRequest->body.choice.tcrV01.reqid.buf[i]); - } - - printf("%s\n",reqid); - - long int reqseq = carmaRequest->body.choice.tcrV01.reqseq; - long int scale = carmaRequest->body.choice.tcrV01.scale; - - - int totBounds = carmaRequest->body.choice.tcrV01.bounds.list.count; - int cnt=0; - char bounds_str[5000]; - strcpy(bounds_str,""); - - // get current time - std::time_t tm = std::time(0)/60-fetchtime*24*60; // T minus 24 hours in min - - while(cntbody.choice.tcrV01.bounds.list.array[cnt]->reflat; - long longg = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->reflon; - - - long dtx0 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[0]->deltax; - long dty0 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[0]->deltay; - long dtx1 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[1]->deltax; - long dty1 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[1]->deltay; - long dtx2 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[2]->deltax; - long dty2 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[2]->deltay; - - sprintf(bounds_str+strlen(bounds_str),"%u%ld%ld%ld%ld%ld%ld%ld%ld",oldest,longg,lat,dtx0,dty0,dtx1,dty1,dtx2,dty2); - - cnt++; - - - } - - char xml_str[10000]; - sprintf(xml_str,"%s%ld%ld%s",std::to_string(webport).c_str(),list_tcm.c_str(),reqid, reqseq,scale,bounds_str); - - PLOG(logINFO) << "Sent TCR to cloud: "<< xml_str< strategies_v; - ConvertString2Vector(strategies_v, _strategies); - - //Process incoming MobilityOperation message - auto mobilityOperationMsg = msg.get_j2735_data(); - - //process MobilityOperation strategy - stringstream ss; - ss << mobilityOperationMsg->body.strategy.buf; - string mo_strategy = ss.str(); - std::transform(mo_strategy.begin(), mo_strategy.end(), mo_strategy.begin(), ::tolower ); - - if( std::find( strategies_v.begin(), strategies_v.end(), mo_strategy ) != strategies_v.end() && mo_strategy.find(_TCMAcknowledgementStrategy) != std::string::npos) - { - //Process MobilityOperation strategy params - ss.str(""); - ss << mobilityOperationMsg->body.operationParams.buf; - string strategy_params_str = ss.str(); - std::vector strategy_params_v; - ConvertString2Vector(strategy_params_v, strategy_params_str); - - string even_log_description = GetValueFromStrategyParamsByKey(strategy_params_v, "reason"); - string acknnowledgement_str = GetValueFromStrategyParamsByKey(strategy_params_v, "acknowledgement"); - string traffic_control_id = GetValueFromStrategyParamsByKey(strategy_params_v, "traffic_control_id"); - string msgnum = GetValueFromStrategyParamsByKey(strategy_params_v, "msgnum"); - boost::trim(traffic_control_id); - std::transform(traffic_control_id.begin(), traffic_control_id.end(), traffic_control_id.begin(), ::tolower ); - ss.str(""); - ss << mobilityOperationMsg->header.hostStaticId.buf; - string CMV_id = ss.str(); - - std::lock_guard lock(_not_ACK_TCMs_mutex); - auto matching_TCMS = _not_ACK_TCMs->equal_range(traffic_control_id); - bool is_tcm_removed = false; - for(auto itr = matching_TCMS.first; itr != matching_TCMS.second; itr++) - { - //The traffic control id should match with the TCM id per CMV (CARMA vehicle) and combines with msgnum to uniquely identify each TCM. - tsm5EncodedMessage msg = itr->second; - tsm5Message decoded_tsm5_msg = msg.decode_j2735_message(); - std::shared_ptr msg_j2735_data = decoded_tsm5_msg.get_j2735_data(); - if (msg_j2735_data == NULL) { - PLOG(logERROR) << "get_j2735_data() on decoded j2735 returned NULL." << std::endl; - break; - } - - if(msg_j2735_data->body.choice.tcmV01.msgnum == stol(msgnum)) - { - //Remove a single TCM identified by reqid (traffic control id) and msgnum. - _not_ACK_TCMs->erase(itr); - PLOG(logINFO) << "Acknowledgement received, traffic_control_id =" << traffic_control_id << ", msgnum = "<< msgnum << " removed from TCM map." << std::endl; - is_tcm_removed = true; - break; - } - } - if(!is_tcm_removed) - { - PLOG(logERROR) << "Acknowledgement received, but traffic_control_id =" << traffic_control_id << ", msgnum = "<< msgnum << " NOT found in TCM map." << std::endl; - } - - //Create an event log object for both positive and negative ACK (ackownledgement), and broadcast the event log - tmx::messages::TmxEventLogMessage event_log_msg; - - //acknnowledgement: Flag to indicate whether the received geofence was processed successfully by the CMV. 1 mapping to acknowledged by CMV - int ack = std::stoi(acknnowledgement_str); - ack == acknowledgement_status::acknowledgement_status__acknowledged ? event_log_msg.set_level(IvpLogLevel::IvpLogLevel_info) : event_log_msg.set_level(IvpLogLevel::IvpLogLevel_warn); - event_log_msg.set_description(mo_strategy + ": Traffic control id = " + traffic_control_id + ( CMV_id.length() <= 0 ? "":", CMV Id = " + CMV_id )+ ", reason = " + even_log_description); - PLOG(logDEBUG) << "event_log_msg " << event_log_msg << std::endl; - this->BroadcastMessage(event_log_msg); - - //Only send negative ack to carma-cloud if receiving any acks from CMV. - if(ack != acknowledgement_status::acknowledgement_status__acknowledged ) - { - stringstream sss; - sss << " " << traffic_control_id - << ""<< msgnum - <<""<< CMV_id - <<"" << acknowledgement_status::acknowledgement_status__rejected - << "" << even_log_description - << ""; - PLOG(logINFO) << "Sent Negative ACK: "<< sss.str() <bytesAvailable()>0) - { - auto readBytes = socket->readAll(); - if (socket->headers().keys().contains(CONTENT_ENCODING_KEY) && std::string(socket->headers().constFind(CONTENT_ENCODING_KEY).value().data()) == CONTENT_ENCODING_VALUE) - { - //readBytes is compressed in gzip format - st.append(UncompressBytes(readBytes)); - }else{ - st.append(readBytes); - } - } - QByteArray array = st.toLocal8Bit(); - - char* _cloudUpdate = array.data(); // would be the cloud update packet, needs parsing - - - string tcm = _cloudUpdate; - - PLOG(logINFO) << "Received TCM from cloud" << tcm << std::endl; - if(tcm.length() == 0) - { - PLOG(logERROR) << "Received TCM length is zero, and skipped." << std::endl; - return; - } - - //Transform carma-cloud TCM XML to J2735 compatible TCM XML by updating tags - tcm=updateTags(tcm,"",""); - tcm=updateTags(tcm,"",""); - tcm=updateTags(tcm,"TrafficControlParams","params"); - tcm=updateTags(tcm,"TrafficControlGeometry","geometry"); - tcm=updateTags(tcm,"TrafficControlPackage","package"); - - //List of tcm in string format - std::list tcm_sl = FilterTCMs(tcm); - - for(const auto tcm_s: tcm_sl) - { - tsm5Message tsm5message; - tsm5EncodedMessage tsm5ENC; - tmx::message_container_type container; - - - std::stringstream ss; - ss << tcm_s; - - container.load(ss); - tsm5message.set_contents(container.get_storage().get_tree()); - tsm5ENC.encode_j2735_message(tsm5message); - BroadcastTCM(tsm5ENC); - PLOG(logINFO) << " CARMACloud Plugin :: Broadcast tsm5:: " << tsm5ENC.get_payload_str(); - - //Get TCM id - Id64b_t tcmv01_req_id = tsm5message.get_j2735_data()->body.choice.tcmV01.reqid; - //Translate TCM request id to hex string - ss.str(""); - for(size_t i=0; i < tcmv01_req_id.size; i++) - { - ss << std::setfill('0') << std::setw(2) << std::hex << (unsigned) tcmv01_req_id.buf[i]; - } - string tcmv01_req_id_hex = ss.str(); - //Transform all hex to lower case - std::transform(tcmv01_req_id_hex.begin(), tcmv01_req_id_hex.end(), tcmv01_req_id_hex.begin(), ::tolower ); - if(tcmv01_req_id_hex.length() > 0) - { - //Update map of tcm request id hex and tcm hex - std::lock_guard lock(_not_ACK_TCMs_mutex); - _not_ACK_TCMs->insert({tcmv01_req_id_hex, tsm5ENC}); - } - } -} - -std::list CARMACloudPlugin::FilterTCMs(const std::string& tcm_response) const -{ - std::list tcm_sl = {}; - try - { - std::stringstream iss; - iss << tcm_response; - boost::property_tree::ptree parent_node; - boost::property_tree::read_xml(iss, parent_node); - auto child_nodes = parent_node.get_child_optional("TrafficControlMessageList"); - //The tcm response is a list of TCM - if (child_nodes) - { - for (const auto &p : child_nodes.get()) - { - boost::property_tree::ptree tcm_node; - tcm_node.put_child(p.first, p.second); - std::ostringstream oss; - boost::property_tree::write_xml(oss, tcm_node); - tcm_sl.push_back(oss.str()); - } - }else{ - tcm_sl.push_back(iss.str()); - } - } - catch (const boost::property_tree::xml_parser_error &e) - { - PLOG(logERROR) << "Failed to parse the xml string." << e.what(); - } - return tcm_sl; -} - -void CARMACloudPlugin::TCMAckCheckAndRebroadcastTCM() -{ - while(true) - { - std::this_thread::sleep_for(std::chrono::milliseconds(_TCMRepeatedlyBroadcastSleep)); - if(_plugin->state == IvpPluginState_error) - { - break; - } - if(_not_ACK_TCMs->size() > 0) - { - std::lock_guard lock(_not_ACK_TCMs_mutex); - - std::set expired_req_ids; - - for( auto itr = _not_ACK_TCMs->begin(); itr!=_not_ACK_TCMs->end(); itr++ ) - { - string tcmv01_req_id_hex = itr->first; - auto cur_time = (std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch())).count(); - if (_tcm_broadcast_starting_time->count(tcmv01_req_id_hex) == 0) - { - _tcm_broadcast_starting_time->insert({tcmv01_req_id_hex, cur_time}); - } - else if ( (cur_time - _tcm_broadcast_starting_time->at(tcmv01_req_id_hex)) > _TCMRepeatedlyBroadcastTimeOut ) - { - expired_req_ids.insert(tcmv01_req_id_hex); - continue; - } - - - tsm5EncodedMessage tsm5ENC = itr->second; - string tcm_hex_payload = tsm5ENC.get_payload_str(); - if(IsSkipBroadcastCurTCM(tcmv01_req_id_hex, tcm_hex_payload)) - { - continue; - } - BroadcastTCM(tsm5ENC); - PLOG(logINFO) << " CARMACloud Plugin :: Repeatedly Broadcast tsm5:: " << tsm5ENC.get_payload_str(); - } //END TCMs LOOP - - // For any ids which have expired clean up the maps - for (auto tcmv01_req_id_hex : expired_req_ids) { - //Create an event log object for both NO ACK (ackownledgement), and broadcast the event log - tmx::messages::TmxEventLogMessage event_log_msg; - event_log_msg.set_level(IvpLogLevel::IvpLogLevel_warn); - event_log_msg.set_description(_TCMAcknowledgementStrategy + ": " + _TCMNOAcknowledgementDescription + " Traffic control id = " + tcmv01_req_id_hex); - PLOG(logDEBUG) << "event_log_msg " << event_log_msg << std::endl; - this->BroadcastMessage(event_log_msg); - - //send negative ack to carma-cloud - stringstream sss; - sss << " " << tcmv01_req_id_hex - << "" << acknowledgement_status::acknowledgement_status__not_acknowledged - << "" << _TCMNOAcknowledgementDescription - << ""; - PLOG(logINFO) << "Sent No ACK as Time Out: "<< sss.str() <erase(tcmv01_req_id_hex); - //If time out, stop tracking the starting time of the TCMs being broadcast so far - _tcm_broadcast_starting_time->erase(tcmv01_req_id_hex); - //If time out, stop tracking the number of times the TCMs ( that has the same TCR reqid) being broadcast - _tcm_broadcast_times->erase(tcmv01_req_id_hex); - } - } - else - { - PLOG(logDEBUG) << "NO TCMs to broadcast." << std::endl; - _tcm_broadcast_times->clear(); - _tcm_broadcast_starting_time->clear(); - } - } -} - -void CARMACloudPlugin::BroadcastTCM(tsm5EncodedMessage& tsm5ENC) { - //Broadcast TCM - string enc = tsm5ENC.get_encoding(); - std::unique_ptr msg; - msg.reset(); - msg.reset(dynamic_cast(factory.NewMessage(api::MSGSUBTYPE_TESTMESSAGE05_STRING))); - msg->refresh_timestamp(); - msg->set_payload(tsm5ENC.get_payload_str()); - msg->set_encoding(enc); - msg->set_flags(IvpMsgFlags_RouteDSRC); - msg->addDsrcMetadata(0x8003); - msg->refresh_timestamp(); - routeable_message *rMsg = dynamic_cast(msg.get()); - BroadcastMessage(*rMsg); -} - -bool CARMACloudPlugin::IsSkipBroadcastCurTCM(const string & tcmv01_req_id_hex, const string & tcm_hex_payload ) const -{ - //Skip repeatedly broadcasting - if(_TCMRepeatedlyBroadCastTotalTimes == 0) - { - return true; - } - - bool is_skip_cur_tcm = false; - bool is_tcm_hex_found = false; - auto tcms_metadatas = _tcm_broadcast_times->equal_range(tcmv01_req_id_hex); - for(auto itr = tcms_metadatas.first; itr !=tcms_metadatas.second; itr ++) - { - string tcm_hex = itr->second.tcm_hex; - int times = itr->second.num_of_times; - if(tcm_hex == tcm_hex_payload) - { - is_tcm_hex_found = true; - if (times >= _TCMRepeatedlyBroadCastTotalTimes) - { - PLOG(logDEBUG) << "SKIP broadcasting as TCMs reqid = " << tcmv01_req_id_hex<< " has been repeatedly broadcast " << times << " times." << std::endl; - //Skip the broadcasting logic below if the TCMs with this request id has already been broadcast more than _TCMRepeatedlyBroadCastTotalTimes - is_skip_cur_tcm = true; - } - else - { - //update the number of times a TCM being broadcast within time out period - times += 1; //Increase by 1 for every iteration - itr->second.num_of_times = times; - PLOG(logDEBUG) << " TCMs reqid = " << tcmv01_req_id_hex<< " repeatedly broadcast " << times << " times." << std::endl; - } - } - } - - if(!is_tcm_hex_found) - { - //Initialize the number of times a TCM being broadcast - TCMBroadcastMetadata t; - t.num_of_times = 1; - t.tcm_hex = tcm_hex_payload; - _tcm_broadcast_times->insert( {tcmv01_req_id_hex, t}); - PLOG(logDEBUG) << " TCMs reqid = "<< tcmv01_req_id_hex << " has been broadcast once."<< std::endl; - } - return is_skip_cur_tcm; -} - -int CARMACloudPlugin::StartWebService() -{ - //Web services - char *placeholderX[1]={0}; - int placeholderC=1; - QCoreApplication a(placeholderC,placeholderX); - - QHostAddress address = QHostAddress(QString::fromStdString (webip)); - quint16 port = static_cast(webport); - - QSharedPointer handler(new OpenAPI::OAIApiRequestHandler()); - handler = QSharedPointer (new OpenAPI::OAIApiRequestHandler()); - - auto router = QSharedPointer::create(); - router->setUpRoutes(); - - QObject::connect(handler.data(), &OpenAPI::OAIApiRequestHandler::requestReceived, [&](QHttpEngine::Socket *socket) { - - CARMAResponseHandler(socket); - }); - - QObject::connect(handler.data(), &OpenAPI::OAIApiRequestHandler::requestReceived, [&](QHttpEngine::Socket *socket) { - - router->processRequest(socket); - }); - - QHttpEngine::Server server(handler.data()); - - if (!server.listen(address, port)) { - qCritical("Unable to listen on the specified port."); - return 1; - } - PLOG(logERROR)<<"CARMACloudPlugin:: Started web service"; - return a.exec(); - -} - - -void CARMACloudPlugin::UpdateConfigSettings() { - std::lock_guard lock(_cfgLock); - GetConfigValue("Frequency", _frequency); - GetConfigValue("WebServiceIP",webip); - GetConfigValue("WebServicePort",webport); - GetConfigValue("fetchTime",fetchtime); - GetConfigValue("MobilityOperationStrategies", _strategies); - GetConfigValue("TCMRepeatedlyBroadcastTimeOut",_TCMRepeatedlyBroadcastTimeOut); - GetConfigValue("TCMNOAcknowledgementDescription", _TCMNOAcknowledgementDescription); - GetConfigValue("TCMRepeatedlyBroadCastTotalTimes", _TCMRepeatedlyBroadCastTotalTimes); - GetConfigValue("TCMRepeatedlyBroadcastSleep", _TCMRepeatedlyBroadcastSleep); - GetConfigValue("listTCM",list_tcm); - - -} - -void CARMACloudPlugin::OnConfigChanged(const char *key, const char *value) { - PluginClient::OnConfigChanged(key, value); - UpdateConfigSettings(); -} - -void CARMACloudPlugin::OnStateChange(IvpPluginState state) { - PluginClient::OnStateChange(state); - - if (state == IvpPluginState_registered) { - UpdateConfigSettings(); - } -} - -void CARMACloudPlugin::CloudSendAsync(const string& local_msg,const string& local_url, const string& local_base, const string& local_method) -{ - std::thread t([this, &local_msg, &local_url, &local_base, &local_method](){ - CloudSend(local_msg, local_url, local_base, local_method); - }); - t.detach(); -} - -int CARMACloudPlugin::CloudSend(const string &local_msg, const string& local_url, const string& local_base, const string& local_method) -{ - CURL *req; - CURLcode res; - string urlfull = local_url+local_base; - req = curl_easy_init(); - if(req) { - curl_easy_setopt(req, CURLOPT_URL, urlfull.c_str()); - - if(strcmp(local_method.c_str(),"POST")==0) - { - curl_easy_setopt(req, CURLOPT_POSTFIELDS, local_msg.c_str()); - curl_easy_setopt(req, CURLOPT_TIMEOUT_MS, 1000L); // Request operation complete within max millisecond timeout - res = curl_easy_perform(req); - if(res != CURLE_OK) - { - fprintf(stderr, "curl send failed: %s\n",curl_easy_strerror(res)); - return 1; - } - } - curl_easy_cleanup(req); - } - - return 0; -} - -void CARMACloudPlugin::ConvertString2Vector(std::vector &sub_str_v, const string &str) const{ - stringstream ss; - ss << str; - while (ss.good()) - { - std::string substring; - getline(ss, substring, ','); - std::transform(substring.begin(), substring.end(),substring.begin(), ::tolower ); - sub_str_v.push_back( substring ); - } -} - -string CARMACloudPlugin::GetValueFromStrategyParamsByKey(const std::vector & strategy_params_v, const string& key) const -{ - string value = ""; - for(auto itr = strategy_params_v.begin(); itr != strategy_params_v.end(); itr++) - { - std::pair key_value_pair; - ConvertString2Pair(key_value_pair, *itr); - if (key_value_pair.first.find(key) != std::string::npos) - { - value = key_value_pair.second; - return value; - } - } - return value; -} - -void CARMACloudPlugin::ConvertString2Pair(std::pair &str_pair, const string &str) const -{ - stringstream ss; - ss << str; - size_t count = 0; - string key, value; - while (ss.good()) - { - std::string substring; - getline(ss, substring, ':'); - if(count == 0) - { - std::transform(substring.begin(), substring.end(),substring.begin(), ::tolower ); - key = substring; - count += 1; - }else{ - value += substring + " "; - } - } - str_pair = std::make_pair(key, value); -} - -QByteArray CARMACloudPlugin::UncompressBytes(const QByteArray compressedBytes) const -{ - z_stream strm; - strm.zalloc = nullptr;//Refer to zlib docs (https://zlib.net/zlib_how.html) - strm.zfree = nullptr; - strm.opaque = nullptr; - strm.avail_in = compressedBytes.size(); - strm.next_in = (Byte *)compressedBytes.data(); - //checking input z_stream to see if there is any error, eg: invalid data etc. - auto err = inflateInit2(&strm, MAX_WBITS + 16); // gzip input - QByteArray outBuf; - //MAX numbers of bytes stored in a buffer - const int BUFFER_SIZE = 4092; - //There is successful, starting to decompress data - if (err == Z_OK) - { - int isDone = 0; - do - { - char buffer[BUFFER_SIZE] = {0}; - strm.avail_out = BUFFER_SIZE; - strm.next_out = (Byte *)buffer; - //Uncompress finished - isDone = inflate(&strm, Z_FINISH); - outBuf.append(buffer); - } while (Z_STREAM_END != isDone); //Reach the end of stream to be uncompressed - }else{ - PLOG(logWARNING) << "Error initalize stream. Err code = " << err << std::endl; - } - //Finished decompress data stream - inflateEnd(&strm); - return outBuf; -} - -int CARMACloudPlugin::Main() { - - - FILE_LOG(logINFO) << "Starting plugin."; - - while (_plugin->state != IvpPluginState_error) { - - if (IsPluginState(IvpPluginState_registered)) - { - this_thread::sleep_for(chrono::milliseconds(5000)); - } - } - - return (EXIT_SUCCESS); -} -} /* namespace */ - -int main(int argc, char *argv[]) { - return run_plugin < CARMACloudPlugin::CARMACloudPlugin > ("CARMACloudPlugin", argc, argv); -} +#include "CARMACloudPlugin.h" +#include +#include +#include +using namespace std; +using namespace tmx::messages; +using namespace tmx::utils; +using namespace boost::property_tree; + +namespace CARMACloudPlugin { + + + +/** + * Construct a new CARMACloudPlugin with the given name. + * + * @param name The name to give the plugin for identification purposes + */ +CARMACloudPlugin::CARMACloudPlugin(string name) : PluginClientClockAware(name) +{ + + UpdateConfigSettings(); + std::lock_guard lock(_cfgLock); + AddMessageFilter < tsm4Message > (this, &CARMACloudPlugin::HandleCARMARequest); + AddMessageFilter < tsm3Message > (this, &CARMACloudPlugin::HandleMobilityOperationMessage); + + // Subscribe to all messages specified by the filters above. + SubscribeToMessages(); + std::thread webthread(&CARMACloudPlugin::StartWebService,this); + webthread.detach(); // wait for the thread to finish + base_hb = "/carmacloud/v2xhub"; + base_req = "/carmacloud/tcmreq"; + base_ack = "/carmacloud/tcmack"; + method = "POST"; + _not_ACK_TCMs = std::make_shared>(); + _tcm_broadcast_times = std::make_shared>(); + _tcm_broadcast_starting_time = std::make_shared>(); + std::thread Broadcast_t(&CARMACloudPlugin::TCMAckCheckAndRebroadcastTCM, this); + Broadcast_t.detach(); +} + +void CARMACloudPlugin::HandleCARMARequest(tsm4Message &msg, routeable_message &routeableMsg) +{ + auto carmaRequest = msg.get_j2735_data(); + + + + // convert reqid bytes to hex string. + size_t hexlen = 2; //size of each hex representation with a leading 0 + char reqid[carmaRequest->body.choice.tcrV01.reqid.size * hexlen + 1]; + for (int i = 0; i < carmaRequest->body.choice.tcrV01.reqid.size; i++) + { + sprintf(reqid+(i*hexlen), "%.2X", carmaRequest->body.choice.tcrV01.reqid.buf[i]); + } + + printf("%s\n",reqid); + + long int reqseq = carmaRequest->body.choice.tcrV01.reqseq; + long int scale = carmaRequest->body.choice.tcrV01.scale; + + + int totBounds = carmaRequest->body.choice.tcrV01.bounds.list.count; + int cnt=0; + char bounds_str[5000]; + strcpy(bounds_str, ""); + + int oldestInMins = getClock()->nowInSeconds() / 60 - fetchtime * 24 * 60; // T minus 24 hours in min + + while (cnt < totBounds) + { + + long lat = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->reflat; + long longg = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->reflon; + + auto oldest = std::max(oldestInMins, 0); // Replace tm with 0 if negative + + long dtx0 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[0]->deltax; + long dty0 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[0]->deltay; + long dtx1 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[1]->deltax; + long dty1 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[1]->deltay; + long dtx2 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[2]->deltax; + long dty2 = carmaRequest->body.choice.tcrV01.bounds.list.array[cnt]->offsets.list.array[2]->deltay; + + sprintf(bounds_str + strlen(bounds_str), "%u%ld%ld%ld%ld%ld%ld%ld%ld", oldest, longg, lat, dtx0, dty0, dtx1, dty1, dtx2, dty2); + + cnt++; + } + + char xml_str[10000]; + sprintf(xml_str,"%s%ld%ld%s",std::to_string(webport).c_str(),list_tcm.c_str(),reqid, reqseq,scale,bounds_str); + + PLOG(logINFO) << "Sent TCR to cloud: "<< xml_str< strategies_v; + ConvertString2Vector(strategies_v, _strategies); + + //Process incoming MobilityOperation message + auto mobilityOperationMsg = msg.get_j2735_data(); + + //process MobilityOperation strategy + stringstream ss; + ss << mobilityOperationMsg->body.strategy.buf; + string mo_strategy = ss.str(); + std::transform(mo_strategy.begin(), mo_strategy.end(), mo_strategy.begin(), ::tolower ); + + if( std::find( strategies_v.begin(), strategies_v.end(), mo_strategy ) != strategies_v.end() && mo_strategy.find(_TCMAcknowledgementStrategy) != std::string::npos) + { + //Process MobilityOperation strategy params + ss.str(""); + ss << mobilityOperationMsg->body.operationParams.buf; + string strategy_params_str = ss.str(); + std::vector strategy_params_v; + ConvertString2Vector(strategy_params_v, strategy_params_str); + + string even_log_description = GetValueFromStrategyParamsByKey(strategy_params_v, "reason"); + string acknnowledgement_str = GetValueFromStrategyParamsByKey(strategy_params_v, "acknowledgement"); + string traffic_control_id = GetValueFromStrategyParamsByKey(strategy_params_v, "traffic_control_id"); + string msgnum = GetValueFromStrategyParamsByKey(strategy_params_v, "msgnum"); + boost::trim(traffic_control_id); + std::transform(traffic_control_id.begin(), traffic_control_id.end(), traffic_control_id.begin(), ::tolower ); + ss.str(""); + ss << mobilityOperationMsg->header.hostStaticId.buf; + string CMV_id = ss.str(); + + std::lock_guard lock(_not_ACK_TCMs_mutex); + auto matching_TCMS = _not_ACK_TCMs->equal_range(traffic_control_id); + bool is_tcm_removed = false; + for(auto itr = matching_TCMS.first; itr != matching_TCMS.second; itr++) + { + //The traffic control id should match with the TCM id per CMV (CARMA vehicle) and combines with msgnum to uniquely identify each TCM. + tsm5EncodedMessage msg = itr->second; + tsm5Message decoded_tsm5_msg = msg.decode_j2735_message(); + std::shared_ptr msg_j2735_data = decoded_tsm5_msg.get_j2735_data(); + if (msg_j2735_data == NULL) { + PLOG(logERROR) << "get_j2735_data() on decoded j2735 returned NULL." << std::endl; + break; + } + + if(msg_j2735_data->body.choice.tcmV01.msgnum == stol(msgnum)) + { + //Remove a single TCM identified by reqid (traffic control id) and msgnum. + _not_ACK_TCMs->erase(itr); + PLOG(logINFO) << "Acknowledgement received, traffic_control_id =" << traffic_control_id << ", msgnum = "<< msgnum << " removed from TCM map." << std::endl; + is_tcm_removed = true; + break; + } + } + if(!is_tcm_removed) + { + PLOG(logERROR) << "Acknowledgement received, but traffic_control_id =" << traffic_control_id << ", msgnum = "<< msgnum << " NOT found in TCM map." << std::endl; + } + + //Create an event log object for both positive and negative ACK (ackownledgement), and broadcast the event log + tmx::messages::TmxEventLogMessage event_log_msg; + + //acknnowledgement: Flag to indicate whether the received geofence was processed successfully by the CMV. 1 mapping to acknowledged by CMV + int ack = std::stoi(acknnowledgement_str); + ack == acknowledgement_status::acknowledgement_status__acknowledged ? event_log_msg.set_level(IvpLogLevel::IvpLogLevel_info) : event_log_msg.set_level(IvpLogLevel::IvpLogLevel_warn); + event_log_msg.set_description(mo_strategy + ": Traffic control id = " + traffic_control_id + ( CMV_id.length() <= 0 ? "":", CMV Id = " + CMV_id )+ ", reason = " + even_log_description); + PLOG(logDEBUG) << "event_log_msg " << event_log_msg << std::endl; + this->BroadcastMessage(event_log_msg); + + //Only send negative ack to carma-cloud if receiving any acks from CMV. + if(ack != acknowledgement_status::acknowledgement_status__acknowledged ) + { + stringstream sss; + sss << " " << traffic_control_id + << ""<< msgnum + <<""<< CMV_id + <<"" << acknowledgement_status::acknowledgement_status__rejected + << "" << even_log_description + << ""; + PLOG(logINFO) << "Sent Negative ACK: "<< sss.str() <bytesAvailable()>0) + { + PLOG(logDEBUG) << "Bytes available." << std::endl; + auto readBytes = socket->readAll(); + st.append(readBytes); + } + + if(st.size() == 0) + { + PLOG(logERROR) << "Received TCM is empty, and skipped." << std::endl; + return; + } + PLOG(logINFO) << "Received TCM bytes size: " << st.size()<< std::endl; + + std::string tcm = ""; + bool isCompressed = socket->headers().keys().contains(CONTENT_ENCODING_KEY) && std::string(socket->headers().constFind(CONTENT_ENCODING_KEY).value().data()) == CONTENT_ENCODING_VALUE; + if (isCompressed) + { + QByteArray tcmBytes = UncompressBytes(st); + if(tcmBytes.size() == 0) + { + return; + } + tcm = tcmBytes.data(); + }else{ + tcm = st.data(); + } + + //Transform carma-cloud TCM XML to J2735 compatible TCM XML by updating tags + tcm=updateTags(tcm,"",""); + tcm=updateTags(tcm,"",""); + tcm=updateTags(tcm,"TrafficControlParams","params"); + tcm=updateTags(tcm,"TrafficControlGeometry","geometry"); + tcm=updateTags(tcm,"TrafficControlPackage","package"); + PLOG(logDEBUG2) << "Received TCM: " << tcm << std::endl; + + std::list tcmSL = {}; + if (isCompressed) + { + tcmSL = FilterTCMs(tcm); + }else{ + tcmSL.push_back(tcm); + } + + for(const auto tcm_s: tcmSL) + { + tsm5Message tsm5message; + tsm5EncodedMessage tsm5ENC; + tmx::message_container_type container; + + std::stringstream ss; + ss << tcm_s; + + container.load(ss); + tsm5message.set_contents(container.get_storage().get_tree()); + tsm5ENC.encode_j2735_message(tsm5message); + BroadcastTCM(tsm5ENC); + PLOG(logINFO) << " CARMACloud Plugin :: Broadcast tsm5:: " << tsm5ENC.get_payload_str(); + + //Get TCM id + Id64b_t tcmv01_req_id = tsm5message.get_j2735_data()->body.choice.tcmV01.reqid; + //Translate TCM request id to hex string + ss.str(""); + for(size_t i=0; i < tcmv01_req_id.size; i++) + { + ss << std::setfill('0') << std::setw(2) << std::hex << (unsigned) tcmv01_req_id.buf[i]; + } + string tcmv01_req_id_hex = ss.str(); + //Transform all hex to lower case + std::transform(tcmv01_req_id_hex.begin(), tcmv01_req_id_hex.end(), tcmv01_req_id_hex.begin(), ::tolower ); + if(tcmv01_req_id_hex.length() > 0) + { + //Update map of tcm request id hex and tcm hex + std::lock_guard lock(_not_ACK_TCMs_mutex); + _not_ACK_TCMs->insert({tcmv01_req_id_hex, tsm5ENC}); + } + } +} + +std::list CARMACloudPlugin::FilterTCMs(const std::string& tcm_response) const +{ + std::list tcm_sl = {}; + try + { + std::stringstream iss; + iss << tcm_response; + boost::property_tree::ptree parent_node; + boost::property_tree::read_xml(iss, parent_node); + auto child_nodes = parent_node.get_child_optional("TrafficControlMessageList"); + //The tcm response is a list of TCM + if (child_nodes) + { + for (const auto &p : child_nodes.get()) + { + boost::property_tree::ptree tcm_node; + tcm_node.put_child(p.first, p.second); + std::ostringstream oss; + boost::property_tree::write_xml(oss, tcm_node); + tcm_sl.push_back(oss.str()); + } + }else{ + tcm_sl.push_back(iss.str()); + } + } + catch (const boost::property_tree::xml_parser_error &e) + { + PLOG(logERROR) << "Failed to parse the xml string." << e.what(); + } + return tcm_sl; +} + +void CARMACloudPlugin::TCMAckCheckAndRebroadcastTCM() +{ + while(true) + { + std::this_thread::sleep_for(std::chrono::milliseconds(_TCMRepeatedlyBroadcastSleep)); + if(_plugin->state == IvpPluginState_error) + { + break; + } + if(_not_ACK_TCMs->size() > 0) + { + std::lock_guard lock(_not_ACK_TCMs_mutex); + + std::set expired_req_ids; + + for( auto itr = _not_ACK_TCMs->begin(); itr!=_not_ACK_TCMs->end(); itr++ ) + { + string tcmv01_req_id_hex = itr->first; + auto cur_time = (std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch())).count(); + if (_tcm_broadcast_starting_time->count(tcmv01_req_id_hex) == 0) + { + _tcm_broadcast_starting_time->insert({tcmv01_req_id_hex, cur_time}); + } + else if ( (cur_time - _tcm_broadcast_starting_time->at(tcmv01_req_id_hex)) > _TCMRepeatedlyBroadcastTimeOut ) + { + expired_req_ids.insert(tcmv01_req_id_hex); + continue; + } + + + tsm5EncodedMessage tsm5ENC = itr->second; + string tcm_hex_payload = tsm5ENC.get_payload_str(); + if(IsSkipBroadcastCurTCM(tcmv01_req_id_hex, tcm_hex_payload)) + { + continue; + } + BroadcastTCM(tsm5ENC); + PLOG(logINFO) << " CARMACloud Plugin :: Repeatedly Broadcast tsm5:: " << tsm5ENC.get_payload_str(); + } //END TCMs LOOP + + // For any ids which have expired clean up the maps + for (auto tcmv01_req_id_hex : expired_req_ids) { + //Create an event log object for both NO ACK (ackownledgement), and broadcast the event log + tmx::messages::TmxEventLogMessage event_log_msg; + event_log_msg.set_level(IvpLogLevel::IvpLogLevel_warn); + event_log_msg.set_description(_TCMAcknowledgementStrategy + ": " + _TCMNOAcknowledgementDescription + " Traffic control id = " + tcmv01_req_id_hex); + PLOG(logDEBUG) << "event_log_msg " << event_log_msg << std::endl; + this->BroadcastMessage(event_log_msg); + + //send negative ack to carma-cloud + stringstream sss; + sss << " " << tcmv01_req_id_hex + << "" << acknowledgement_status::acknowledgement_status__not_acknowledged + << "" << _TCMNOAcknowledgementDescription + << ""; + PLOG(logINFO) << "Sent No ACK as Time Out: "<< sss.str() <erase(tcmv01_req_id_hex); + //If time out, stop tracking the starting time of the TCMs being broadcast so far + _tcm_broadcast_starting_time->erase(tcmv01_req_id_hex); + //If time out, stop tracking the number of times the TCMs ( that has the same TCR reqid) being broadcast + _tcm_broadcast_times->erase(tcmv01_req_id_hex); + } + } + else + { + PLOG(logDEBUG4) << "NO TCMs to broadcast." << std::endl; + _tcm_broadcast_times->clear(); + _tcm_broadcast_starting_time->clear(); + } + } +} + +void CARMACloudPlugin::BroadcastTCM(tsm5EncodedMessage& tsm5ENC) { + //Broadcast TCM + string enc = tsm5ENC.get_encoding(); + std::unique_ptr msg; + msg.reset(); + msg.reset(dynamic_cast(factory.NewMessage(api::MSGSUBTYPE_TESTMESSAGE05_STRING))); + msg->refresh_timestamp(); + msg->set_payload(tsm5ENC.get_payload_str()); + msg->set_encoding(enc); + msg->set_flags(IvpMsgFlags_RouteDSRC); + msg->addDsrcMetadata(0x8003); + msg->refresh_timestamp(); + routeable_message *rMsg = dynamic_cast(msg.get()); + BroadcastMessage(*rMsg); +} + +bool CARMACloudPlugin::IsSkipBroadcastCurTCM(const string & tcmv01_req_id_hex, const string & tcm_hex_payload ) const +{ + //Skip repeatedly broadcasting + if(_TCMRepeatedlyBroadCastTotalTimes == 0) + { + return true; + } + + bool is_skip_cur_tcm = false; + bool is_tcm_hex_found = false; + auto tcms_metadatas = _tcm_broadcast_times->equal_range(tcmv01_req_id_hex); + for(auto itr = tcms_metadatas.first; itr !=tcms_metadatas.second; itr ++) + { + string tcm_hex = itr->second.tcm_hex; + int times = itr->second.num_of_times; + if(tcm_hex == tcm_hex_payload) + { + is_tcm_hex_found = true; + if (times >= _TCMRepeatedlyBroadCastTotalTimes) + { + PLOG(logDEBUG) << "SKIP broadcasting as TCMs reqid = " << tcmv01_req_id_hex<< " has been repeatedly broadcast " << times << " times." << std::endl; + //Skip the broadcasting logic below if the TCMs with this request id has already been broadcast more than _TCMRepeatedlyBroadCastTotalTimes + is_skip_cur_tcm = true; + } + else + { + //update the number of times a TCM being broadcast within time out period + times += 1; //Increase by 1 for every iteration + itr->second.num_of_times = times; + PLOG(logDEBUG) << " TCMs reqid = " << tcmv01_req_id_hex<< " repeatedly broadcast " << times << " times." << std::endl; + } + } + } + + if(!is_tcm_hex_found) + { + //Initialize the number of times a TCM being broadcast + TCMBroadcastMetadata t; + t.num_of_times = 1; + t.tcm_hex = tcm_hex_payload; + _tcm_broadcast_times->insert( {tcmv01_req_id_hex, t}); + PLOG(logDEBUG) << " TCMs reqid = "<< tcmv01_req_id_hex << " has been broadcast once."<< std::endl; + } + return is_skip_cur_tcm; +} + +int CARMACloudPlugin::StartWebService() +{ + //Web services + char *placeholderX[1]={0}; + int placeholderC=1; + QCoreApplication a(placeholderC,placeholderX); + + QHostAddress address = QHostAddress(QString::fromStdString (webip)); + quint16 port = static_cast(webport); + + QHttpEngine::QObjectHandler apiHandler; + apiHandler.registerMethod(TCM_REPLY, [this](QHttpEngine::Socket *socket) + { + this->CARMAResponseHandler(socket); + socket->close(); }); + QHttpEngine::Server server(&apiHandler); + + if (!server.listen(address, port)) { + qCritical("Unable to listen on the specified port."); + return 1; + } + PLOG(logINFO)<<"CARMACloudPlugin:: Started web service"; + return a.exec(); + +} + + +void CARMACloudPlugin::UpdateConfigSettings() { + std::lock_guard lock(_cfgLock); + GetConfigValue("Frequency", _frequency); + GetConfigValue("WebServiceIP",webip); + GetConfigValue("WebServicePort",webport); + GetConfigValue("fetchTime",fetchtime); + GetConfigValue("MobilityOperationStrategies", _strategies); + GetConfigValue("TCMRepeatedlyBroadcastTimeOut",_TCMRepeatedlyBroadcastTimeOut); + GetConfigValue("TCMNOAcknowledgementDescription", _TCMNOAcknowledgementDescription); + GetConfigValue("TCMRepeatedlyBroadCastTotalTimes", _TCMRepeatedlyBroadCastTotalTimes); + GetConfigValue("TCMRepeatedlyBroadcastSleep", _TCMRepeatedlyBroadcastSleep); + GetConfigValue("listTCM",list_tcm); + std::string carma_cloud_ip; + uint carma_cloud_port; + GetConfigValue("CARMACloudIP",carma_cloud_ip); + GetConfigValue("CARMACloudPort",carma_cloud_port); + carma_cloud_url = carma_cloud_ip + ":" + std::to_string(carma_cloud_port); + PLOG(logDEBUG) << "Setting CARMA Cloud URL to " << carma_cloud_url << std::endl; + +} + +void CARMACloudPlugin::OnConfigChanged(const char *key, const char *value) { + PluginClient::OnConfigChanged(key, value); + UpdateConfigSettings(); +} + +void CARMACloudPlugin::OnStateChange(IvpPluginState state) { + PluginClient::OnStateChange(state); + + if (state == IvpPluginState_registered) { + UpdateConfigSettings(); + } +} + +void CARMACloudPlugin::CloudSendAsync(const string& local_msg,const string& local_url, const string& local_base, const string& local_method) +{ + std::thread t([this, &local_msg, &local_url, &local_base, &local_method](){ + CloudSend(local_msg, local_url, local_base, local_method); + }); + t.detach(); +} + +int CARMACloudPlugin::CloudSend(const string &local_msg, const string& local_url, const string& local_base, const string& local_method) +{ + CURL *req; + CURLcode res; + string urlfull = local_url+local_base; + req = curl_easy_init(); + if(req) { + curl_easy_setopt(req, CURLOPT_URL, urlfull.c_str()); + + if(strcmp(local_method.c_str(),"POST")==0) + { + curl_easy_setopt(req, CURLOPT_POSTFIELDS, local_msg.c_str()); + curl_easy_setopt(req, CURLOPT_TIMEOUT_MS, 1000L); // Request operation complete within max millisecond timeout + res = curl_easy_perform(req); + if(res != CURLE_OK) + { + fprintf(stderr, "curl send failed: %s\n",curl_easy_strerror(res)); + return 1; + } + } + curl_easy_cleanup(req); + } + + return 0; +} + +void CARMACloudPlugin::ConvertString2Vector(std::vector &sub_str_v, const string &str) const{ + stringstream ss; + ss << str; + while (ss.good()) + { + std::string substring; + getline(ss, substring, ','); + std::transform(substring.begin(), substring.end(),substring.begin(), ::tolower ); + sub_str_v.push_back( substring ); + } +} + +string CARMACloudPlugin::GetValueFromStrategyParamsByKey(const std::vector & strategy_params_v, const string& key) const +{ + string value = ""; + for(auto itr = strategy_params_v.begin(); itr != strategy_params_v.end(); itr++) + { + std::pair key_value_pair; + ConvertString2Pair(key_value_pair, *itr); + if (key_value_pair.first.find(key) != std::string::npos) + { + value = key_value_pair.second; + return value; + } + } + return value; +} + +void CARMACloudPlugin::ConvertString2Pair(std::pair &str_pair, const string &str) const +{ + stringstream ss; + ss << str; + size_t count = 0; + string key, value; + while (ss.good()) + { + std::string substring; + getline(ss, substring, ':'); + if(count == 0) + { + std::transform(substring.begin(), substring.end(),substring.begin(), ::tolower ); + key = substring; + count += 1; + }else{ + value += substring + " "; + } + } + str_pair = std::make_pair(key, value); +} + +QByteArray CARMACloudPlugin::UncompressBytes(const QByteArray compressedBytes) const +{ + z_stream strm; + strm.zalloc = Z_NULL;//Refer to zlib docs (https://zlib.net/zlib_how.html) + strm.zfree = Z_NULL; + strm.opaque = Z_NULL; + strm.avail_in = compressedBytes.size(); + strm.next_in = (Byte *)compressedBytes.data(); + //checking input z_stream to see if there is any error, eg: invalid data etc. + auto err = inflateInit2(&strm, MAX_WBITS+32); // gzip input https://stackoverflow.com/questions/1838699/how-can-i-decompress-a-gzip-stream-with-zlib + QByteArray outBuf; + //MAX numbers of bytes stored in a buffer + const int BUFFER_SIZE = 4092; + //There is successful, starting to decompress data + if (err == Z_OK) + { + int isDone = 0; + do + { + char buffer[BUFFER_SIZE] = {0}; + strm.avail_out = BUFFER_SIZE; + strm.next_out = (Byte *)buffer; + isDone = inflate(&strm, Z_NO_FLUSH); + outBuf.append(buffer, BUFFER_SIZE - strm.avail_out); + } while (Z_STREAM_END != isDone); // Reach the end of stream to be uncompressed + }else{ + PLOG(logERROR) << "Error initalize stream. Err code = " << err << std::endl; + } + //Finished decompress data stream + inflateEnd(&strm); + return outBuf; +} + +int CARMACloudPlugin::Main() { + + + FILE_LOG(logINFO) << "Starting plugin."; + + while (_plugin->state != IvpPluginState_error) { + + if (IsPluginState(IvpPluginState_registered)) + { + this_thread::sleep_for(chrono::milliseconds(5000)); + } + } + + return (EXIT_SUCCESS); +} +} /* namespace */ + +int main(int argc, char *argv[]) { + return run_plugin < CARMACloudPlugin::CARMACloudPlugin > ("CARMACloudPlugin", argc, argv); +} diff --git a/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.h b/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.h index d6b88c2da..e092c03ab 100644 --- a/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.h +++ b/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.h @@ -67,13 +67,13 @@ #include #endif #include +#include #include #include #include - - +#include using namespace std; @@ -91,7 +91,8 @@ enum acknowledgement_status { acknowledgement_status__not_acknowledged = 3 //CMV does not respond at all within the v2xhub repeatedly broadcast time period }; -class CARMACloudPlugin: public PluginClient { +class CARMACloudPlugin : public PluginClientClockAware +{ public: CARMACloudPlugin(std::string); virtual ~CARMACloudPlugin(); @@ -99,6 +100,7 @@ class CARMACloudPlugin: public PluginClient { uint16_t webport; std::string webip; uint16_t fetchtime; + void CARMAResponseHandler(QHttpEngine::Socket *socket); protected: void UpdateConfigSettings(); @@ -109,7 +111,6 @@ class CARMACloudPlugin: public PluginClient { void OnStateChange(IvpPluginState state); int StartWebService(); - void CARMAResponseHandler(QHttpEngine::Socket *socket); int CloudSend(const string& msg,const string& url, const string& base, const string& method); //Send HTTP request async void CloudSendAsync(const string& msg,const string& url, const string& base, const string& method); @@ -174,7 +175,7 @@ class CARMACloudPlugin: public PluginClient { pthread_mutex_t _timMutex = PTHREAD_MUTEX_INITIALIZER; J2735MessageFactory factory; uint64_t _frequency = 0; - string url; + string carma_cloud_url; string base_hb; string base_req; string method; @@ -210,7 +211,8 @@ class CARMACloudPlugin: public PluginClient { const char *CONTENT_ENCODING_KEY = "Content-Encoding"; const char *CONTENT_ENCODING_VALUE = "gzip"; std::string list_tcm = "true"; - + //API URL to accept TCM response + const QString TCM_REPLY = "tcmreply"; }; std::mutex _cfgLock; } diff --git a/src/v2i-hub/CARMAStreetsPlugin/src/JsonToJ2735SpatConverter.cpp b/src/v2i-hub/CARMAStreetsPlugin/src/JsonToJ2735SpatConverter.cpp index 999be321d..c864b2497 100644 --- a/src/v2i-hub/CARMAStreetsPlugin/src/JsonToJ2735SpatConverter.cpp +++ b/src/v2i-hub/CARMAStreetsPlugin/src/JsonToJ2735SpatConverter.cpp @@ -152,20 +152,22 @@ namespace CARMAStreetsPlugin void JsonToJ2735SpatConverter::convertJson2TimeChangeDetail(const Json::Value &time_change_detail_json, TimeChangeDetails_t *timing) const { + #if SAEJ2735_SPEC < 2020 timing->startTime = (DSRC_TimeMark_t *)calloc(1, sizeof(DSRC_TimeMark_t)); + timing->maxEndTime = (DSRC_TimeMark_t *)calloc(1, sizeof(DSRC_TimeMark_t)); + timing->likelyTime = (DSRC_TimeMark_t *)calloc(1, sizeof(DSRC_TimeMark_t)); + timing->nextTime = (DSRC_TimeMark_t *)calloc(1, sizeof(DSRC_TimeMark_t)); + #else + timing->startTime = (SPAT_TimeMark_t *)calloc(1, sizeof(SPAT_TimeMark_t)); + timing->maxEndTime = (SPAT_TimeMark_t *)calloc(1, sizeof(SPAT_TimeMark_t)); + timing->likelyTime = (SPAT_TimeMark_t *)calloc(1, sizeof(SPAT_TimeMark_t)); + timing->nextTime = (SPAT_TimeMark_t *)calloc(1, sizeof(SPAT_TimeMark_t)); + #endif *timing->startTime = time_change_detail_json["start_time"].asInt(); - timing->minEndTime = time_change_detail_json["min_end_time"].asInt(); - - timing->maxEndTime = (DSRC_TimeMark_t *)calloc(1, sizeof(DSRC_TimeMark_t)); *timing->maxEndTime = time_change_detail_json["max_end_time"].asInt(); - - timing->likelyTime = (DSRC_TimeMark_t *)calloc(1, sizeof(DSRC_TimeMark_t)); *timing->likelyTime = time_change_detail_json["likely_time"].asInt(); - - timing->nextTime = (DSRC_TimeMark_t *)calloc(1, sizeof(DSRC_TimeMark_t)); *timing->nextTime = time_change_detail_json["next_time"].asInt(); - timing->confidence = (TimeIntervalConfidence_t *)calloc(1, sizeof(TimeIntervalConfidence_t)); *timing->confidence = time_change_detail_json["confidence"].asInt(); } diff --git a/src/v2i-hub/CARMAStreetsPlugin/src/JsonToJ3224SDSMConverter.cpp b/src/v2i-hub/CARMAStreetsPlugin/src/JsonToJ3224SDSMConverter.cpp index 7b81db987..907bf04b9 100644 --- a/src/v2i-hub/CARMAStreetsPlugin/src/JsonToJ3224SDSMConverter.cpp +++ b/src/v2i-hub/CARMAStreetsPlugin/src/JsonToJ3224SDSMConverter.cpp @@ -99,7 +99,11 @@ namespace CARMAStreetsPlugin sdsm->refPos.Long = sdsm_json["ref_pos"]["long"].asInt64(); // Optional elevation if (sdsm_json["ref_pos"].isMember("elevation") ) { + #if SAEJ2735_SPEC < 2020 auto elevation = (DSRC_Elevation_t*) calloc(1, sizeof(DSRC_Elevation_t)); + #else + auto elevation = (Common_Elevation_t*) calloc(1, sizeof(Common_Elevation_t)); + #endif *elevation = sdsm_json["ref_pos"]["elevation"].asInt64(); sdsm->refPos.elevation = elevation; } diff --git a/src/v2i-hub/CARMAStreetsPlugin/test/test_J2735MapToJsonConverter.cpp b/src/v2i-hub/CARMAStreetsPlugin/test/test_J2735MapToJsonConverter.cpp index 304d7f999..5d81236bc 100644 --- a/src/v2i-hub/CARMAStreetsPlugin/test/test_J2735MapToJsonConverter.cpp +++ b/src/v2i-hub/CARMAStreetsPlugin/test/test_J2735MapToJsonConverter.cpp @@ -16,7 +16,11 @@ namespace unit_test CARMAStreetsPlugin::J2735MapToJsonConverter converter; MapData *mapData = (MapData *)calloc(1, sizeof(MapData)); LayerID_t layer_id = 1; + #if SAEJ2735_SPEC < 2020 DSRC_MsgCount_t msgIssueRevision = 2; + #else + Common_MsgCount_t msgIssueRevision = 2; + #endif mapData->layerID = &layer_id; mapData->msgIssueRevision = msgIssueRevision; auto layer_type = std::make_unique(1); diff --git a/src/v2i-hub/CARMAStreetsPlugin/test/test_J2735ToSRMJsonConverter.cpp b/src/v2i-hub/CARMAStreetsPlugin/test/test_J2735ToSRMJsonConverter.cpp index aacbcaddf..80d6931d2 100644 --- a/src/v2i-hub/CARMAStreetsPlugin/test/test_J2735ToSRMJsonConverter.cpp +++ b/src/v2i-hub/CARMAStreetsPlugin/test/test_J2735ToSRMJsonConverter.cpp @@ -29,11 +29,19 @@ class test_J2735ToSRMJsonConverter : public ::testing::Test requestType->role = 0; requestor->type = requestType; RequestorPositionVector_t *position = (RequestorPositionVector_t *)calloc(1, sizeof(RequestorPositionVector_t)); + #if SAEJ2735_SPEC < 2020 DSRC_Angle_t *heading_angle = (DSRC_Angle_t *)calloc(1, sizeof(DSRC_Angle_t)); + #else + Common_Angle_t *heading_angle = (Common_Angle_t *)calloc(1, sizeof(Common_Angle_t)); + #endif *heading_angle = 123; position->heading = heading_angle; Position3D_t *position_point = (Position3D_t *)calloc(1, sizeof(Position3D_t)); + #if SAEJ2735_SPEC < 2020 DSRC_Elevation_t *elev = (DSRC_Elevation_t *)calloc(1, sizeof(DSRC_Elevation_t)); + #else + Common_Elevation_t *elev = (Common_Elevation_t *)calloc(1, sizeof(Common_Elevation_t)); + #endif *elev = 12; position_point->elevation = elev; position_point->lat = 3712333; diff --git a/src/v2i-hub/CARMAStreetsPlugin/test/test_J3224ToSDSMJsonConverter.cpp b/src/v2i-hub/CARMAStreetsPlugin/test/test_J3224ToSDSMJsonConverter.cpp index 132cd2e20..0c8bc67b2 100644 --- a/src/v2i-hub/CARMAStreetsPlugin/test/test_J3224ToSDSMJsonConverter.cpp +++ b/src/v2i-hub/CARMAStreetsPlugin/test/test_J3224ToSDSMJsonConverter.cpp @@ -54,7 +54,11 @@ namespace unit_test message->refPos.lat = 400000000; message->refPos.Long = 800000000; + #if SAEJ2735_SPEC < 2020 auto pos_elevation_ptr = CARMAStreetsPlugin::create_store_shared(shared_ptrs); + #else + auto pos_elevation_ptr = CARMAStreetsPlugin::create_store_shared(shared_ptrs); + #endif *pos_elevation_ptr = 30; message->refPos.elevation = pos_elevation_ptr; diff --git a/src/v2i-hub/CARMAStreetsPlugin/test/test_JsonToJ2735SpatConverter.cpp b/src/v2i-hub/CARMAStreetsPlugin/test/test_JsonToJ2735SpatConverter.cpp index 584c246af..df80dc883 100644 --- a/src/v2i-hub/CARMAStreetsPlugin/test/test_JsonToJ2735SpatConverter.cpp +++ b/src/v2i-hub/CARMAStreetsPlugin/test/test_JsonToJ2735SpatConverter.cpp @@ -128,17 +128,17 @@ namespace CARMAStreetsPlugin /** * @brief Unit test to ensure encodeSpat will throw and exception attempting to encode timing - * data that exceeds max value of 36001 (see ASN1 documentation for TimeMark). + * data that exceeds max value of 36111 (see 2020 ASN1 documentation for TimeMark). * */ TEST_F(test_JsonToJ2735SpatConverter, time_mark_over_max_value) { std::string spat_json_string = "{\"time_stamp\":387178,\"name\":\"\",\"intersections\":[{\"name\":\"East Intersection\",\"id\":9945,\"revision\":1,\"status\":0,\"moy\":387178,\"time_stamp\":32248,\"states\":[" "{\"movement_name\":\"\",\"signal_group\":8,\"state_time_speed\":[{\"event_state\":3,\"timing\":{\"start_time\":34975,\"min_end_time\":35405,\"max_end_time\":35405,\"confidence\":0}},{\"event_state\":6,\"timing\":{\"start_time\":35405,\"min_end_time\":35505,\"max_end_time\":35505,\"confidence\":0}},{\"event_state\":8,\"timing\":{\"start_time\":35505,\"min_end_time\":35535,\"max_end_time\":35535,\"confidence\":0}},{\"event_state\":3,\"timing\":{\"start_time\":35535,\"min_end_time\":35965,\"max_end_time\":35965,\"confidence\":0}}]}," "{\"movement_name\":\"\",\"signal_group\":2,\"state_time_speed\":[{\"event_state\":3,\"timing\":{\"start_time\":34695,\"min_end_time\":35125,\"max_end_time\":35125,\"confidence\":0}},{\"event_state\":6,\"timing\":{\"start_time\":35125,\"min_end_time\":35225,\"max_end_time\":35225,\"confidence\":0}},{\"event_state\":8,\"timing\":{\"start_time\":35225,\"min_end_time\":35255,\"max_end_time\":35255,\"confidence\":0}},{\"event_state\":3,\"timing\":{\"start_time\":35255,\"min_end_time\":35685,\"max_end_time\":35685,\"confidence\":0}}]}," - "{\"movement_name\":\"\",\"signal_group\":1,\"state_time_speed\":[{\"event_state\":3,\"timing\":{\"start_time\":35115,\"min_end_time\":35545,\"max_end_time\":35545,\"confidence\":0}},{\"event_state\":6,\"timing\":{\"start_time\":35545,\"min_end_time\":35645,\"max_end_time\":35645,\"confidence\":0}},{\"event_state\":8,\"timing\":{\"start_time\":35645,\"min_end_time\":35675,\"max_end_time\":35675,\"confidence\":0}},{\"event_state\":3,\"timing\":{\"start_time\":35675,\"min_end_time\":36105,\"max_end_time\":36105,\"confidence\":0}}]}," + "{\"movement_name\":\"\",\"signal_group\":1,\"state_time_speed\":[{\"event_state\":3,\"timing\":{\"start_time\":35115,\"min_end_time\":35545,\"max_end_time\":35545,\"confidence\":0}},{\"event_state\":6,\"timing\":{\"start_time\":35545,\"min_end_time\":35645,\"max_end_time\":35645,\"confidence\":0}},{\"event_state\":8,\"timing\":{\"start_time\":35645,\"min_end_time\":35675,\"max_end_time\":35675,\"confidence\":0}},{\"event_state\":3,\"timing\":{\"start_time\":35675,\"min_end_time\":36205,\"max_end_time\":36205,\"confidence\":0}}]}," "{\"movement_name\":\"\",\"signal_group\":3,\"state_time_speed\":[{\"event_state\":3,\"timing\":{\"start_time\":34835,\"min_end_time\":35265,\"max_end_time\":35265,\"confidence\":0}},{\"event_state\":6,\"timing\":{\"start_time\":35265,\"min_end_time\":35365,\"max_end_time\":35365,\"confidence\":0}},{\"event_state\":8,\"timing\":{\"start_time\":35365,\"min_end_time\":35395,\"max_end_time\":35395,\"confidence\":0}},{\"event_state\":3,\"timing\":{\"start_time\":35395,\"min_end_time\":35825,\"max_end_time\":35825,\"confidence\":0}}]}," "{\"movement_name\":\"\",\"signal_group\":4,\"state_time_speed\":[{\"event_state\":3,\"timing\":{\"start_time\":34975,\"min_end_time\":35405,\"max_end_time\":35405,\"confidence\":0}},{\"event_state\":6,\"timing\":{\"start_time\":35405,\"min_end_time\":35505,\"max_end_time\":35505,\"confidence\":0}},{\"event_state\":8,\"timing\":{\"start_time\":35505,\"min_end_time\":35535,\"max_end_time\":35535,\"confidence\":0}},{\"event_state\":3,\"timing\":{\"start_time\":35535,\"min_end_time\":35965,\"max_end_time\":35965,\"confidence\":0}}]}," - "{\"movement_name\":\"\",\"signal_group\":5,\"state_time_speed\":[{\"event_state\":3,\"timing\":{\"start_time\":35115,\"min_end_time\":35545,\"max_end_time\":35545,\"confidence\":0}},{\"event_state\":6,\"timing\":{\"start_time\":35545,\"min_end_time\":35645,\"max_end_time\":35645,\"confidence\":0}},{\"event_state\":8,\"timing\":{\"start_time\":35645,\"min_end_time\":35675,\"max_end_time\":35675,\"confidence\":0}},{\"event_state\":3,\"timing\":{\"start_time\":35675,\"min_end_time\":36105,\"max_end_time\":36105,\"confidence\":0}}]}," + "{\"movement_name\":\"\",\"signal_group\":5,\"state_time_speed\":[{\"event_state\":3,\"timing\":{\"start_time\":35115,\"min_end_time\":35545,\"max_end_time\":35545,\"confidence\":0}},{\"event_state\":6,\"timing\":{\"start_time\":35545,\"min_end_time\":35645,\"max_end_time\":35645,\"confidence\":0}},{\"event_state\":8,\"timing\":{\"start_time\":35645,\"min_end_time\":35675,\"max_end_time\":35675,\"confidence\":0}},{\"event_state\":3,\"timing\":{\"start_time\":35675,\"min_end_time\":36205,\"max_end_time\":36205,\"confidence\":0}}]}," "{\"movement_name\":\"\",\"signal_group\":6,\"state_time_speed\":[{\"event_state\":3,\"timing\":{\"start_time\":34695,\"min_end_time\":35125,\"max_end_time\":35125,\"confidence\":0}},{\"event_state\":6,\"timing\":{\"start_time\":35125,\"min_end_time\":35225,\"max_end_time\":35225,\"confidence\":0}},{\"event_state\":8,\"timing\":{\"start_time\":35225,\"min_end_time\":35255,\"max_end_time\":35255,\"confidence\":0}},{\"event_state\":3,\"timing\":{\"start_time\":35255,\"min_end_time\":35685,\"max_end_time\":35685,\"confidence\":0}}]}]}]}"; Json::Reader reader; auto spat_ptr = std::make_shared(); diff --git a/src/v2i-hub/CDASimAdapter/src/CDASimAdapter.cpp b/src/v2i-hub/CDASimAdapter/src/CDASimAdapter.cpp index 1986bb608..38eb994ab 100644 --- a/src/v2i-hub/CDASimAdapter/src/CDASimAdapter.cpp +++ b/src/v2i-hub/CDASimAdapter/src/CDASimAdapter.cpp @@ -103,7 +103,10 @@ namespace CDASimAdapter{ uint v2x_port = std::stoul(sim::get_sim_config(sim::V2X_PORT)); uint sim_v2x_port = std::stoul(sim::get_sim_config(sim::SIM_V2X_PORT)); std::string infrastructure_id = sim::get_sim_config(sim::INFRASTRUCTURE_ID); - std::string sensor_json_file_path = sim::get_sim_config(sim::SENSOR_JSON_FILE_PATH); + // Sensor JSON file path is an optional environment variable that allows configuration of + // simulated sensor if provided. + std::string sensor_json_file_path = ""; + sensor_json_file_path = sim::get_sim_config(sim::SENSOR_JSON_FILE_PATH, false); PLOG(logINFO) << "CDASim connecting " << simulation_ip << "\nUsing Registration Port : " << std::to_string( simulation_registration_port) << diff --git a/src/v2i-hub/CDASimAdapter/src/CDASimConnection.cpp b/src/v2i-hub/CDASimAdapter/src/CDASimConnection.cpp index 982ac5f64..07b26e516 100644 --- a/src/v2i-hub/CDASimAdapter/src/CDASimConnection.cpp +++ b/src/v2i-hub/CDASimAdapter/src/CDASimConnection.cpp @@ -6,7 +6,7 @@ using namespace tmx::utils; namespace CDASimAdapter{ CDASimConnection::CDASimConnection(const std::string &simulation_ip, const std::string &infrastructure_id, const uint simulation_registration_port, const uint sim_v2x_port, const std::string &local_ip, const uint time_sync_port,const uint simulated_interaction_port, const uint v2x_port, - const Point &location, const std::string &sensor_json_file_path) : + const Point &location, const std::string &sensor_json_file_path ) : _simulation_ip(simulation_ip), _infrastructure_id(infrastructure_id), _simulation_registration_port(simulation_registration_port), _simulation_v2x_port(sim_v2x_port), _local_ip(local_ip), _time_sync_port(time_sync_port), _simulated_interaction_port(simulated_interaction_port),_v2x_port(v2x_port), _location(location) ,_sensor_json_file_path(sensor_json_file_path) { @@ -52,12 +52,18 @@ namespace CDASimAdapter{ //Read local sensor file and populate the sensors JSON //Sample sensors.json: https://raw.githubusercontent.com/usdot-fhwa-OPS/V2X-Hub/develop/src/v2i-hub/CDASimAdapter/test/sensors.json - auto sensors_json_v = read_json_file(_sensor_json_file_path); - if(sensors_json_v.empty()) - { - PLOG(logWARNING) << "Sensors JSON is empty!" << std::endl; - } - message["sensors"] = sensors_json_v; + // Sensor configuration is an optional part of registration message. + if ( !_sensor_json_file_path.empty() ) { + auto sensors_json_v = read_json_file(_sensor_json_file_path); + if(sensors_json_v.empty()) + { + PLOG(logWARNING) << "Sensors JSON is empty!" << std::endl; + } + message["sensors"] = sensors_json_v; + } + else { + PLOG(logWARNING) << "No sensors where configured for this V2X-Hub instance."; + } Json::StyledWriter writer; message_str = writer.write(message); return message_str; @@ -97,10 +103,8 @@ namespace CDASimAdapter{ // Initialize V2X-Hub UDP Server and Client to foward V2X messages between CARMA Simulation Infrastructure // Adapter and V2X-Hub. // TODO: Using TMX Utils get immediate forward port - // TODO: Replace 0 with immediate forward port immediate_forward_listener = std::make_shared( local_ip, 5678); // TODO: Using TMX Utils get message receiver port - // TODO: Replace 0 with message receiver port message_receiver_publisher = std::make_shared( local_ip, 8765); // Initialize UDP Server for listening for incoming CARMA-Simulation time synchronization. PLOG(logDEBUG) << "Creating UDPServer for Time Sync Messages: " << local_ip << ":" << std::to_string(time_sync_port) << "\n" diff --git a/src/v2i-hub/CDASimAdapter/src/include/CDASimConnection.hpp b/src/v2i-hub/CDASimAdapter/src/include/CDASimConnection.hpp index b6bb55424..2c8a03bf5 100644 --- a/src/v2i-hub/CDASimAdapter/src/include/CDASimConnection.hpp +++ b/src/v2i-hub/CDASimAdapter/src/include/CDASimConnection.hpp @@ -35,7 +35,7 @@ namespace CDASimAdapter { */ explicit CDASimConnection( const std::string &simulation_ip, const std::string &infrastructure_id, const uint simulation_registration_port, const uint sim_v2x_port, const std::string &local_ip, const uint time_sync_port, const uint simulated_interaction_port, const uint v2x_port, - const tmx::utils::Point &location, const std::string &sensor_json_file_path); + const tmx::utils::Point &location, const std::string &sensor_json_file_path = ""); /** * @brief Method to forward v2x message to CARMA Simulation * @param v2x_message string @@ -173,9 +173,12 @@ namespace CDASimAdapter { std::shared_ptr time_sync_listener; std::shared_ptr sensor_detected_object_listener; - FRIEND_TEST(TestCARMASimulationConnection, get_handshake_json); - FRIEND_TEST(TestCARMASimulationConnection, read_json_file); - FRIEND_TEST(TestCARMASimulationConnection, string_to_json); + FRIEND_TEST(TestCDASimConnection, get_handshake_json); + FRIEND_TEST(TestCDASimConnection, get_handshake_json_no_sensor_config); + FRIEND_TEST(TestCDASimConnection, read_json_file); + FRIEND_TEST(TestCDASimConnection, string_to_json); + + }; } diff --git a/src/v2i-hub/CDASimAdapter/test/TestCARMASimulationConnection.cpp b/src/v2i-hub/CDASimAdapter/test/TestCDASimConnection.cpp similarity index 74% rename from src/v2i-hub/CDASimAdapter/test/TestCARMASimulationConnection.cpp rename to src/v2i-hub/CDASimAdapter/test/TestCDASimConnection.cpp index 2e992933e..c1ec10d4d 100644 --- a/src/v2i-hub/CDASimAdapter/test/TestCARMASimulationConnection.cpp +++ b/src/v2i-hub/CDASimAdapter/test/TestCDASimConnection.cpp @@ -19,7 +19,7 @@ using namespace tmx::utils; namespace CDASimAdapter { - class TestCARMASimulationConnection : public ::testing::Test { + class TestCDASimConnection : public ::testing::Test { protected: void SetUp() override { // Initialize CARMA Simulation connection with (0,0,0) location. @@ -35,11 +35,11 @@ namespace CDASimAdapter { }; - TEST_F( TestCARMASimulationConnection, initialize) { + TEST_F( TestCDASimConnection, initialize) { ASSERT_FALSE(connection->is_connected()); } - TEST_F( TestCARMASimulationConnection, forward_message) { + TEST_F( TestCDASimConnection, forward_message) { std::shared_ptr client = std::make_shared(); std::string test_message = "message"; EXPECT_CALL( *client, Send(test_message) ).Times(2).WillOnce(testing::DoAll(Return(-1))).WillRepeatedly(testing::DoAll(Return(test_message.size()))); @@ -47,7 +47,7 @@ namespace CDASimAdapter { connection->forward_message(test_message, client); } - TEST_F( TestCARMASimulationConnection, forward_message_invalid ) { + TEST_F( TestCDASimConnection, forward_message_invalid ) { std::shared_ptr client = std::make_shared(); std::string test_message = ""; // ASSERT that we never call Send message. @@ -59,11 +59,11 @@ namespace CDASimAdapter { connection->forward_message(test_message, client); } - TEST_F( TestCARMASimulationConnection, consume_msg){ + TEST_F( TestCDASimConnection, consume_msg){ std::shared_ptr server = std::make_shared(); char *msg_data = new char(); - char *test_string = "Test Message"; + char test_string[] = "Test Message"; EXPECT_CALL( *server, TimedReceive(_, _, _) ).Times(2). WillOnce(testing::DoAll(Return(-1))). WillRepeatedly( testing::DoAll( SetArrayArgument<0>(test_string, test_string + strlen(test_string) + 1),Return(10))); @@ -78,11 +78,11 @@ namespace CDASimAdapter { } - TEST_F( TestCARMASimulationConnection, setup_upd_connection) { + TEST_F( TestCDASimConnection, setup_upd_connection) { ASSERT_TRUE(connection->setup_udp_connection("127.0.0.1", "127.0.0.1", 4567, 4568, 4569, 4570)); } - TEST_F( TestCARMASimulationConnection, get_handshake_json) { + TEST_F( TestCDASimConnection, get_handshake_json) { Point location; location.X = 1000; location.Y = 38.955; @@ -91,23 +91,34 @@ namespace CDASimAdapter { in_strm.open(sensors_file_path, std::ifstream::binary); if(in_strm.is_open()) { - ASSERT_EQ(connection->get_handshake_json("4566", "127.0.0.1", 4567, 4568, 4569, location), + EXPECT_EQ(connection->get_handshake_json("4566", "127.0.0.1", 4567, 4568, 4569, location), "{\n \"infrastructureId\" : \"4566\",\n \"location\" : {\n \"x\" : 1000.0,\n \"y\" : 38.954999999999998,\n \"z\" : -77.149000000000001\n },\n \"rxMessageIpAddress\" : \"127.0.0.1\",\n \"rxMessagePort\" : 4569,\n \"sensors\" : [\n {\n \"location\" : {\n \"x\" : 0.0,\n \"y\" : 0.0,\n \"z\" : 0.0\n },\n \"orientation\" : {\n \"pitch\" : 0.0,\n \"roll\" : 0.0,\n \"yaw\" : 0.0\n },\n \"sensorId\" : \"SomeID\",\n \"type\" : \"SemanticLidar\"\n },\n {\n \"location\" : {\n \"x\" : 1.0,\n \"y\" : 2.0,\n \"z\" : 0.0\n },\n \"orientation\" : {\n \"pitch\" : 0.0,\n \"roll\" : 0.0,\n \"yaw\" : 23.0\n },\n \"sensorId\" : \"SomeID2\",\n \"type\" : \"SemanticLidar\"\n }\n ],\n \"simulatedInteractionPort\" : 4568,\n \"timeSyncPort\" : 4567\n}\n"); } } - TEST_F( TestCARMASimulationConnection, carma_simulation_handshake) { + TEST_F( TestCDASimConnection, get_handshake_json_no_sensor_config) { + Point location; + location.X = 1000; + location.Y = 38.955; + location.Z = -77.149; + connection.reset(new CDASimConnection("127.0.0.1", "1212", 4567, 4678, "127.0.0.1", 1213, 1214, 1215, location)); + // Test method when sensors_file_path is empty + EXPECT_EQ(connection->get_handshake_json("4566", "127.0.0.1", 4567, 4568, 4569, location), + "{\n \"infrastructureId\" : \"4566\",\n \"location\" : {\n \"x\" : 1000.0,\n \"y\" : 38.954999999999998,\n \"z\" : -77.149000000000001\n },\n \"rxMessageIpAddress\" : \"127.0.0.1\",\n \"rxMessagePort\" : 4569,\n \"simulatedInteractionPort\" : 4568,\n \"timeSyncPort\" : 4567\n}\n"); + } + + TEST_F( TestCDASimConnection, carma_simulation_handshake) { Point location; // UDP creation error - ASSERT_FALSE(connection->carma_simulation_handshake("", "45", NULL, + EXPECT_FALSE(connection->carma_simulation_handshake("", "45", 0, "", 45, 45, 45, location)); } - TEST_F(TestCARMASimulationConnection, connect) { - ASSERT_TRUE(connection->connect()); + TEST_F(TestCDASimConnection, connect) { + EXPECT_TRUE(connection->connect()); } - TEST_F(TestCARMASimulationConnection, read_json_file) + TEST_F(TestCDASimConnection, read_json_file) { auto sensorJsonV = connection->read_json_file("Invalid_file_path" ); ASSERT_TRUE(sensorJsonV.empty()); @@ -120,7 +131,7 @@ namespace CDASimAdapter { } } - TEST_F(TestCARMASimulationConnection, string_to_json) + TEST_F(TestCDASimConnection, string_to_json) { auto sensorJsonV = connection->string_to_json("Invalid Json"); ASSERT_TRUE(sensorJsonV.empty()); diff --git a/src/v2i-hub/CswPlugin/src/DsrcBuilder.cpp b/src/v2i-hub/CswPlugin/src/DsrcBuilder.cpp index 302cfb4c6..978b4cbb9 100644 --- a/src/v2i-hub/CswPlugin/src/DsrcBuilder.cpp +++ b/src/v2i-hub/CswPlugin/src/DsrcBuilder.cpp @@ -35,7 +35,12 @@ void DsrcBuilder::AddCurveSpeedAdvisory(TiDataFrame *frame, unsigned int speedLi void DsrcBuilder::AddItisCode(ITIScodesAndText *advisory, long code) { ITIScodesAndText__Member* member = (ITIScodesAndText__Member*)malloc(sizeof(ITIScodesAndText__Member)); + #if SAEJ2735_SPEC < 2020 member->item.present = ITIScodesAndText__Memberitem_PR_itis; + #else + member->item.present = ITIScodesAndText__Member__item_PR_itis; + #endif + member->item.choice.itis = code; ASN_SEQUENCE_ADD(&advisory->list, member); } @@ -45,7 +50,11 @@ void DsrcBuilder::AddItisText(ITIScodesAndText *advisory, std::string text) int textLength = text.length(); ITIScodesAndText__Member* member = (ITIScodesAndText__Member*)malloc(sizeof(ITIScodesAndText__Member)); + #if SAEJ2735_SPEC < 2020 member->item.present = ITIScodesAndText__Memberitem_PR_text; + #else + member->item.present = ITIScodesAndText__Member__item_PR_text; + #endif member->item.choice.text.buf = NULL; OCTET_STRING_fromString(&(member->item.choice.text), text.c_str()); diff --git a/src/v2i-hub/CswPlugin/src/XmlCurveParser.cpp b/src/v2i-hub/CswPlugin/src/XmlCurveParser.cpp index 0f8ace728..399444aa3 100644 --- a/src/v2i-hub/CswPlugin/src/XmlCurveParser.cpp +++ b/src/v2i-hub/CswPlugin/src/XmlCurveParser.cpp @@ -287,8 +287,12 @@ TiDataFrame* XmlCurveParser::ReadRegions(DOMElement* regionsElement) DsrcBuilder::SetStartTimeToYesterday(frame); // Set the duration (minutes) to its max value. + #if SAEJ2735_SPEC < 2020 frame->duratonTime = 32000; - + #else + frame->durationTime = 32000; + #endif + frame->startYear = NULL; frame->url = NULL; // Priority is 0-7 with 7 the highest priority. @@ -442,10 +446,12 @@ Position3D* XmlCurveParser::ReadReferencePoint(DOMElement* referencePointElement anchor->elevation->buf[0] = elevation >> 8; anchor->elevation->buf[1] = elevation & 0xFF; -#else +#elif SAEJ2735_SPEC < 2020 anchor->elevation = (DSRC_Elevation_t *)malloc(sizeof(DSRC_Elevation_t)); - *(anchor->elevation) = elevation; +#else + anchor->elevation = (Common_Elevation_t *)malloc(sizeof(Common_Elevation_t)); #endif + *(anchor->elevation) = elevation; if (_debugOutput) cout << "ReferencePoint Elevation: " << elevation << endl; } diff --git a/src/v2i-hub/ImmediateForwardPlugin/manifest.json b/src/v2i-hub/ImmediateForwardPlugin/manifest.json index 288201cc1..b4842c489 100644 --- a/src/v2i-hub/ImmediateForwardPlugin/manifest.json +++ b/src/v2i-hub/ImmediateForwardPlugin/manifest.json @@ -14,7 +14,7 @@ }, { "key": "Messages_Destination_1", - "default": "{ \"Messages\": [ { \"TmxType\": \"SPAT-P\", \"SendType\": \"SPAT\", \"PSID\": \"0x8002\", \"Channel\": \"183\" }, { \"TmxType\": \"MAP-P\", \"SendType\": \"MAP\", \"PSID\": \"0x8002\", \"Channel\": \"183\" }, { \"TmxType\": \"PSM\", \"SendType\": \"PSM\", \"PSID\": \"0x8002\", \"Channel\": \"183\" } ,{ \"TmxType\": \"TMSG07\", \"SendType\": \"TMSG07\", \"PSID\": \"0x8002\", \"Channel\": \"183\" },{ \"TmxType\": \"TMSG03-P\", \"SendType\": \"TMSG03-P\", \"PSID\": \"0xBFEE\", \"Channel\": \"183\" },{ \"TmxType\": \"TMSG05-P\", \"SendType\": \"TMSG05-P\", \"PSID\": \"0x8003\", \"Channel\": \"183\" }, { \"TmxType\": \"SSM\", \"SendType\": \"SSM\", \"PSID\": \"0x8002\", \"Channel\": \"183\" },{ \"TmxType\": \"SDSM\", \"SendType\": \"SensorDataSharingMessage\", \"PSID\": \"0x90\", \"Channel\": \"183\" }] }", + "default": "{ \"Messages\": [ { \"TmxType\": \"SPAT-P\", \"SendType\": \"SPAT\", \"PSID\": \"0x8002\", \"Channel\": \"183\" }, { \"TmxType\": \"MAP-P\", \"SendType\": \"MAP\", \"PSID\": \"0x8002\", \"Channel\": \"183\" }, { \"TmxType\": \"PSM-P\", \"SendType\": \"PSM\", \"PSID\": \"0x27\", \"Channel\": \"183\" } ,{ \"TmxType\": \"TMSG07-P\", \"SendType\": \"TMSG07\", \"PSID\": \"0x8002\", \"Channel\": \"183\" },{ \"TmxType\": \"TMSG03-P\", \"SendType\": \"TMSG03\", \"PSID\": \"0xBFEE\", \"Channel\": \"183\" },{ \"TmxType\": \"TMSG05-P\", \"SendType\": \"TMSG05\", \"PSID\": \"0x8003\", \"Channel\": \"183\" }, { \"TmxType\": \"SSM-P\", \"SendType\": \"SSM\", \"PSID\": \"0x8002\", \"Channel\": \"183\" },{ \"TmxType\": \"SDSM\", \"SendType\": \"SensorDataSharingMessage\", \"PSID\": \"0x8010\", \"Channel\": \"183\" }] }", "description": "JSON data defining the message types, PSIDs, and channel number for messages forwarded to the V2X radio at destination 1." }, { diff --git a/src/v2i-hub/MapPlugin/src/inputs/isd/ISDDataAdaptor.hpp b/src/v2i-hub/MapPlugin/src/inputs/isd/ISDDataAdaptor.hpp index 72460f29e..76658170c 100644 --- a/src/v2i-hub/MapPlugin/src/inputs/isd/ISDDataAdaptor.hpp +++ b/src/v2i-hub/MapPlugin/src/inputs/isd/ISDDataAdaptor.hpp @@ -22,10 +22,14 @@ #define DEFINED_NODE NodeListXY_PR_nodes #define COMPUTED_NODE NodeListXY_PR_computed #define ENUM_NAME(X) NodeOffsetPointXY_PR_node_ ## X -typedef NodeXY Node; +#endif +#if SAEJ2735_SPEC < 2020 typedef DSRC_Elevation_t Elevation2_t; -typedef NodeAttributeSetXY NodeAttributeSet; +#else +typedef Common_Elevation_t Elevation2_t; #endif +typedef NodeXY Node; +typedef NodeAttributeSetXY NodeAttributeSet; #define attribute(X, Y, D) ro_attribute(this->msg, battelle::attributes::standard_attribute, X, Y, get_, D) @@ -175,11 +179,13 @@ class IntersectionGeometryAdaptor: public tmx::message { ro_attribute(this->msg, reference_point_attribute, std::string, descriptiveIntersctionName, get_, ""); ro_attribute(this->msg, reference_point_attribute, LayerID_t, layerID, get_, 0); ro_attribute(this->msg, reference_point_attribute, IntersectionID_t, intersectionID, get_, 0); -#if SAEJ2735_SPEC < 63 + #if SAEJ2735_SPEC < 63 ro_attribute(this->msg, reference_point_attribute, MsgCount_t, msgCount, get_, 0); -#else + #elif SAEJ2735_SPEC < 2020 ro_attribute(this->msg, reference_point_attribute, DSRC_MsgCount_t, msgCount, get_, 0); -#endif + #else + ro_attribute(this->msg, reference_point_attribute, Common_MsgCount_t, msgCount, get_, 0); + #endif ro_attribute(this->msg, reference_point_attribute, LaneWidth_t, masterLaneWidth, get_, -1L); ro_attribute(this->msg, reference_point_attribute, double, referenceLat, get_, 0.0); ro_attribute(this->msg, reference_point_attribute, double, referenceLon, get_, 0.0); diff --git a/src/v2i-hub/MessageReceiverPlugin/src/MessageReceiverPlugin.cpp b/src/v2i-hub/MessageReceiverPlugin/src/MessageReceiverPlugin.cpp index 0da347c74..02080d239 100644 --- a/src/v2i-hub/MessageReceiverPlugin/src/MessageReceiverPlugin.cpp +++ b/src/v2i-hub/MessageReceiverPlugin/src/MessageReceiverPlugin.cpp @@ -140,9 +140,17 @@ SrmMessage* MessageReceiverPlugin::DecodeSrm(uint32_t vehicleId, uint32_t headin srm->requestor.position->position.lat = (Latitude_t)(10.0 * latitude - 1800000000); srm->requestor.position->position.Long = (Longitude_t)(10.0 * longitude - 1800000000); srm->requestor.position->heading = + #if SAEJ2735_SPEC < 2020 (DSRC_Angle_t *)calloc(1, sizeof(DSRC_Angle_t)); + #else + (Common_Angle_t *)calloc(1, sizeof(Common_Angle_t)); + #endif if (srm->requestor.position->heading) + #if SAEJ2735_SPEC < 2020 *(srm->requestor.position->heading) = (DSRC_Angle_t)(heading / 12500.0); + #else + *(srm->requestor.position->heading) = (Common_Angle_t)(heading / 12500.0); + #endif srm->requestor.position->speed = (TransmissionAndSpeed *)calloc(1, sizeof(TransmissionAndSpeed)); if (srm->requestor.position->speed) diff --git a/src/v2i-hub/PortDrayagePlugin/README.md b/src/v2i-hub/PortDrayagePlugin/README.md new file mode 100755 index 000000000..3682021ec --- /dev/null +++ b/src/v2i-hub/PortDrayagePlugin/README.md @@ -0,0 +1,81 @@ +# Port Drayage Plugin Documentation + +## Introduction + +The Port Drayage Plugin in V2x-Hub facilitates infrastructure, vehicle and container handling equipment (CHE) communication for port drayage operations. The plugin provides and montior drayage actions for a freight truck inside and between a mock port and staging area. The list of actions includes `ENTER_STAGING_AREA`, `PICKUP`, `EXIT_STAGING_AREA`, `ENTER_PORT`, `DROPOFF`, `PORT_CHECKPOINT`, `HOLDING_AREA`, and `EXIT_PORT`. + +## Related Plugins + +A list of plugins related to the Port Drayage functionality. + +### Immediate Forward Plugin + +For RSU Immediate Message Forwarding (IMF) functionality to communicate with a freight vehicle. + +### Message Receiver Plugin + +For receiving vehicle communication from freight vehicles. + +## Configuration/Deployment + +Port Drayage Plugin default configuration parameters work for docker-compose deployment. The include configuring Port Drayage MySQL server address, database credentials and Port Drayage Web Application address. + +1) Populate actions in DB (Sample action databases can be found under `configuration/mysql/port_drayage.sql`) +2) Enable Plugin + +## Design + +![Alt text](docs/design_diagram.png) + +The infrastructure component of the Port Drayage CARMA-Freight Use Case has 3 major actors that all fall under the CARMA-Streets umbrella: V2X-Hub , MySQL Database ,and Port Drayage Web Service. +#### V2X-Hub +V2X-Hub is a message handler that acts as a translator and data aggregator/disseminator for infrastructure components of a connected vehicle deployment. It is built with a plugin architecture, meaning to add new custom functionality, new plugins can be written to consume and produce J2735 messages that are broadcast over DSRC. For the Port Drayage CARMA-Freight Use Case, the Port Drayage Plugin is responsible for receiving/transmitting Mobility Operation messages from a CARMA equipped vehicles and facilitating any necessary communication with CHE or inspection personnel to complete port drayage operations. This includes container pickup, drop off, vehicle inspection and entrance or exit gate interactions at a port or staging area. + +#### MySQL database +The MySQL database stores vehicle instructions called actions. V2X-Hub will query this database to provide vehicles actions one by one. Actions consist mainly of a UUID to identify each action, a vehicle ID to identify the recipient for an action, a cargo ID to identify any cargo associated with the action, and an operation to describe the action. MySQL Database that contains two tables. The `first_action` table is used to store vehicles first actions. The `freight` table is used to store all vehicle actions. Each action in the database includes the UUID string action id of the next action to link actions of a single vehicle in sequence. A sequence of actions for a given vehicle consists of a first action stored in the `first_action` table and subsequent linked actions stored in the `freight` table. The first action is provided to the vehicle as a response to initial communication. After completing an action, the vehicle will broadcast the completed action. The Port Drayage Plugin will then attempt to use the completed action to retrieve the next action from the `freight` table. + +#### Port Drayage Web Service +The Port Drayage Web Service is a java spring application that contains a REST API server and a web user interface created using java Thyme Leaf. Some port drayage actions require user input from personnel operating CHE or from inspection personnel. The Port Drayage Web Service was created to allow personnel, through a web UI, to interact with actions that require user input. Supported actions that require user input include `LOADING`, `UNLOADING`, and `INSPECTION`. User input actions differ from other actions in that they require user input to be considered completed and therefor also for the vehicle to be provided with its next action. The Port Drayage Web Service maintains the state of these actions and hosts the web UI through which input is received. + +### Communication +![Alt text](docs/communication_diagram.png) + +The infrastructure software designed for the CARMA-Freight Port Drayage use case contains several different lines of communication. The first and most important, facilitating communication between infrastructure and the vehicle. To communicate, we use SAE J2735 messages broadcast over DSRC. Specifically, in this standard we use the Mobility Operations Message, often used for prototyping messages, since it has a simple string payload and a strategy field to give information to receiving software on how to interpret the string payload. + +The Mobility Operation Messages used for this plugin, incoming and outgoing, are designated with the strategy `carma/port_drayage`. Messages from the CMV indicate the CMV’s completion of an action, while messages from V2XHub indicate an instructed operation to the CMV. The sample message below shows the JSON payload contained within the Mobility Operation message’s `strategy_params` field. + +```json +// Example Mobility Operation strategy_params JSON payload with message's strategy set to "carma/port_drayage": +{ + "cmv_id": "DOT-80550", // [Required from all] string unique identifier for CMV + "operation": "ENTERING_STAGING_AREA", // [Required from all] Enum to indicate the type of action + // NOTE: Possible operations include: PICKUP, DROPOFF, PORT_CHECKPOINT, HOLDING_AREA, + // ENTER_STAGING_AREA, EXIT_STAGING_AREA, ENTER_PORT, EXIT_PORT + "cargo": false, // [Required from all with PICKUP/DROPOFF operation] boolean flag to indicate whether the CMV is loaded with cargo + "cargo_id": "SOME_CARGO", // [Required from all with PICKUP/DROPOFF operation] string unique identifier for cargo + "location": { // [Required from CMV] current location of the CMV + "longitude": 0, + "latitude": 0}, + "destination": { // [Required from infrastructure] optional destination for CMV + "longitude": 0, + "latitude": 0}, + "action_id": "SOMEUID" // [Required from all] string UUID to identify action + } + +``` + +For the actions with the operations `PICKUP` (`LOADING`), `DROPOFF` (`UNLOADING`), `PORT_CHECKPOINT` (`INSPECTION`), and `HOLDING_AREA` (`INSPECTION`) require user input from container handling equipment (CHE) personnel and inspection personnel. We also use RESTful communication to connect the V2X-Hub Port Drayage Plugin to the Port Drayage Web Service. RESTful communication contains a client (V2X-Hub) and a server (Port Drayage Web Service). The file included below is the OpenAPI API definition, which defines the endpoint, possible requests, possible responses and the JSON objects exchanged between client and service. + +The final method of communication is SQL (Structure Query Language). To query the MySQL database for each action in a sequence, the V2X-Hub Port Drayage Plugin uses mysql connecter client library to make SQL queries and receive the results. [A sample SQL file](../../../configuration/mysql/port_drayage.sql) used to setup both the `freight` and `first_action` tables in the PORT_DRAYAGE MySQL database. + + +## Functionality Testing + +Open another tab and type in `localhost:8090` to navigate to port drayage web UI. Click `Staging Area` or `Port Area` button to test V2x-Hub located at staging or port area. + +Open a terminal, and run [a python script](../../../configuration/mysql/suntrax/momscript_port_drayage.py) to send mocked mobility operation message to test each action at a particular location. +``` +./momscript_port_drayage.py +``` + + diff --git a/src/v2i-hub/PortDrayagePlugin/docs/communication_diagram.png b/src/v2i-hub/PortDrayagePlugin/docs/communication_diagram.png new file mode 100644 index 000000000..6700ee561 Binary files /dev/null and b/src/v2i-hub/PortDrayagePlugin/docs/communication_diagram.png differ diff --git a/src/v2i-hub/PortDrayagePlugin/docs/design_diagram.png b/src/v2i-hub/PortDrayagePlugin/docs/design_diagram.png new file mode 100644 index 000000000..07f2957a2 Binary files /dev/null and b/src/v2i-hub/PortDrayagePlugin/docs/design_diagram.png differ diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/CMakeLists.txt b/src/v2i-hub/RSUHealthMonitorPlugin/CMakeLists.txt index 8cbcf79ce..92f984e5d 100755 --- a/src/v2i-hub/RSUHealthMonitorPlugin/CMakeLists.txt +++ b/src/v2i-hub/RSUHealthMonitorPlugin/CMakeLists.txt @@ -13,7 +13,7 @@ TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC tmxutils jsoncpp NemaTode) ############# enable_testing() include_directories(${PROJECT_SOURCE_DIR}/src) -add_library(${PROJECT_NAME}_lib src/RSUHealthMonitorWorker.cpp) +add_library(${PROJECT_NAME}_lib src/RSUHealthMonitorWorker.cpp src/RSUConfigurationList) target_link_libraries(${PROJECT_NAME}_lib PUBLIC tmxutils NemaTode diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/manifest.json b/src/v2i-hub/RSUHealthMonitorPlugin/manifest.json index f2ee94443..c96601e69 100755 --- a/src/v2i-hub/RSUHealthMonitorPlugin/manifest.json +++ b/src/v2i-hub/RSUHealthMonitorPlugin/manifest.json @@ -17,35 +17,10 @@ "default":"1", "description": "Sending RSU SNMP GET request at every configured interval. Default every 1 second. Unit of measure: second." }, - { - "key":"RSUIp", - "default":"192.168.XX.XX", - "description":"An IP address of the RSU the V2X hub is connected to." - }, - { - "key":"SNMPPort", - "default":"161", - "description":"The SNMP port for sending message or command." - }, - { - "key":"AuthPassPhrase", - "default":"dummy", - "description":"SNMP v3 authentication passphrase" - }, - { - "key":"SecurityUser", - "default":"authOnlyUser", - "description":"SNMP Security Name" - }, - { - "key":"SecurityLevel", - "default":"authPriv", - "description":"SNMP Security level" - }, - { - "key":"RSUMIBVersion", - "default":"RSU4.1", - "description":"The version of RSU MIB (Management Information Base). E.G. RSU4.1 or RSU1218. Currently only support RSU4.1" + { + "key":"RSUConfigurationList", + "default":"{ \"RSUS\": [ { \"RSUIp\": \"192.168.XX.XX\", \"SecurityLevel\":\"authPriv\", \"SNMPPort\": \"161\", \"AuthPassPhrase\": \"dummy\", \"User\": \"authOnlyUser\", \"RSUMIBVersion\": \"RSU4.1\" },{ \"RSUIp\": \"192.168.00.XX\", \"SecurityLevel\":\"authPriv\", \"SNMPPort\": \"162\", \"AuthPassPhrase\": \"tester\", \"User\": \"authPrivUser\", \"RSUMIBVersion\": \"RSU4.1\" }] }", + "description":"Configurations of the RSUs the V2X hub is connected to." } ] } \ No newline at end of file diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUConfigurationException.h b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUConfigurationException.h new file mode 100644 index 000000000..27e5197ca --- /dev/null +++ b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUConfigurationException.h @@ -0,0 +1,10 @@ +#pragma once + +namespace RSUHealthMonitor +{ + class RSUConfigurationException : public std::runtime_error + { + public: + using runtime_error::runtime_error; + }; +} \ No newline at end of file diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUConfigurationList.cpp b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUConfigurationList.cpp new file mode 100644 index 000000000..62a751551 --- /dev/null +++ b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUConfigurationList.cpp @@ -0,0 +1,138 @@ + +#include "RSUConfigurationList.h" + +namespace RSUHealthMonitor +{ + Json::Value RSUConfigurationList::parseJson(const std::string &rsuConfigsStr) const + { + JSONCPP_STRING err; + Json::Value root; + auto length = static_cast(rsuConfigsStr.length()); + Json::CharReaderBuilder builder; + std::unique_ptr reader(builder.newCharReader()); + if (!reader->parse(rsuConfigsStr.c_str(), rsuConfigsStr.c_str() + length, &root, &err)) + { + std::stringstream ss; + ss << "Parse RSUs raw string error: " << err; + throw RSUConfigurationException(ss.str().c_str()); + } + return root; + } + + void RSUConfigurationList::parseRSUs(const std::string &rsuConfigsStr) + { + auto json = parseJson(rsuConfigsStr); + std::vector tempConfigs; + RSUConfiguration config; + auto rsuArray = json[RSUSKey]; + if (!rsuArray.isArray()) + { + throw RSUConfigurationException("RSUConfigurationList: Missing RSUS array."); + } + for (auto i = 0; i != rsuArray.size(); i++) + { + if (rsuArray[i].isMember(RSUIpKey)) + { + config.rsuIp = rsuArray[i][RSUIpKey].asString(); + } + else + { + auto errMsg = "RSUConfigurationList [" + std::to_string(i + 1) + "]: RSU IP [" + std::string(RSUIpKey) + "] is required."; + throw RSUConfigurationException(errMsg); + } + + if (rsuArray[i].isMember(SNMPPortKey)) + { + auto port = static_cast(atoi(rsuArray[i][SNMPPortKey].asCString())); + auto errMsg = "RSUConfigurationList [" + std::to_string(i + 1) + "]: Invalid SNMP port number in string format."; + port != 0 ? config.snmpPort = port : throw RSUConfigurationException(errMsg); + } + else + { + auto errMsg = "RSUConfigurationList [" + std::to_string(i + 1) + "]: SNMP port [" + std::string(SNMPPortKey) + "] is required."; + throw RSUConfigurationException(errMsg); + } + + if (rsuArray[i].isMember(AuthPassPhraseKey)) + { + config.authPassPhrase = rsuArray[i][AuthPassPhraseKey].asString(); + } + else + { + auto errMsg = "RSUConfigurationList [" + std::to_string(i + 1) + "]: Authentication pass phrase [" + std::string(AuthPassPhraseKey) + "] is required."; + throw RSUConfigurationException(errMsg); + } + + if (rsuArray[i].isMember(UserKey)) + { + config.user = rsuArray[i][UserKey].asString(); + } + else + { + auto errMsg = "RSUConfigurationList [" + std::to_string(i + 1) + "]: User [" + std::string(UserKey) + "] is required."; + throw RSUConfigurationException(errMsg); + } + + if (rsuArray[i].isMember(RSUMIBVersionKey)) + { + auto rsuMIBVersionStr = rsuArray[i][RSUMIBVersionKey].asString(); + config.mibVersion = strToMibVersion(rsuMIBVersionStr); + } + else + { + auto errMsg = "RSUConfigurationList [" + std::to_string(i + 1) + "]: RSU MIB version [" + std::string(RSUMIBVersionKey) + "] is required."; + throw RSUConfigurationException(errMsg); + } + + if (rsuArray[i].isMember(SecurityLevelKey)) + { + config.securityLevel = rsuArray[i][SecurityLevelKey].asString(); + } + else + { + auto errMsg = "RSUConfigurationList [" + std::to_string(i + 1) + "]: RSU Security Level [" + std::string(SecurityLevelKey) + "] is required."; + throw RSUConfigurationException(errMsg); + } + tempConfigs.push_back(config); + } + // Only update RSU configurations when all configs are processed correctly. + configs.clear(); + configs.assign(tempConfigs.begin(), tempConfigs.end()); + } + + RSUMibVersion RSUConfigurationList::strToMibVersion(std::string &mibVersionStr) const + { + boost::trim_left(mibVersionStr); + boost::trim_right(mibVersionStr); + // Only support RSU MIB version 4.1 + if (boost::iequals(mibVersionStr, RSU4_1_str)) + { + return RSUMibVersion::RSUMIB_V_4_1; + } + else + { + std::stringstream ss; + ss << "Uknown RSU MIB version: " << mibVersionStr; + throw RSUConfigurationException(ss.str().c_str()); + } + } + + std::vector RSUConfigurationList::getConfigs() const + { + return configs; + } + + std::ostream &operator<<(std::ostream &os, const RSUMibVersion &mib) + { + const std::vector nameMibs = {"UNKOWN MIB", + "RSU4.1", + "NTCIP1218"}; + return os << nameMibs[static_cast(mib)]; + } + + std::ostream &operator<<(std::ostream &os, const RSUConfiguration &config) + { + os << RSUIpKey << ": " << config.rsuIp << ", " << SNMPPortKey << ": " << config.snmpPort << ", " << UserKey << ": " << config.user << ", " << AuthPassPhraseKey << ": " << config.authPassPhrase << ", " << SecurityLevelKey << ": " << config.securityLevel << ", " << RSUMIBVersionKey << ": " << config.mibVersion; + return os; + } +} \ No newline at end of file diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUConfigurationList.h b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUConfigurationList.h new file mode 100644 index 000000000..5ba523e76 --- /dev/null +++ b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUConfigurationList.h @@ -0,0 +1,65 @@ +#pragma once +#include +#include +#include +#include +#include +#include "RSUConfigurationException.h" + +namespace RSUHealthMonitor +{ + static constexpr const char *RSUSKey = "RSUS"; + static constexpr const char *RSUIpKey = "RSUIp"; + static constexpr const char *SNMPPortKey = "SNMPPort"; + static constexpr const char *UserKey = "User"; + static constexpr const char *AuthPassPhraseKey = "AuthPassPhrase"; + static constexpr const char *RSUMIBVersionKey = "RSUMIBVersion"; + static constexpr const char *SecurityLevelKey = "SecurityLevel"; + static constexpr const char *RSU4_1_str = "RSU4.1"; + static constexpr const char *RSU1218_str = "RSU1218"; + + enum class RSUMibVersion + { + UNKOWN_MIB_V = 0, + RSUMIB_V_4_1 = 1, + RSUMIB_V_1218 = 2 + }; + + struct RSUConfiguration + { + std::string rsuIp; + uint16_t snmpPort; + std::string user; + std::string authPassPhrase; + std::string securityLevel; + RSUMibVersion mibVersion; + friend std::ostream &operator<<(std::ostream &os, const RSUConfiguration &config); + }; + + class RSUConfigurationList + { + private: + std::vector configs; + /*** + * @brief Parse JSON string and return the corresponding JSON value. + * @param rsuConfigsStr A JSON string includes all RSUs related configrations. + * @return JSON::Value A JSON object that includes RSUS information. + */ + Json::Value parseJson(const std::string &rsuConfigsStr) const; + RSUMibVersion strToMibVersion(std::string &mibVersionStr) const; + + public: + RSUConfigurationList() = default; + ~RSUConfigurationList() = default; + /** + * @brief Parse RSUs configrations in JSON string representation, and update the memeber of list of RSUConfiguration struct. + * @param rsuConfigsStr A JSON string includes all RSUs related configrations. + */ + void parseRSUs(const std::string &rsuConfigsStr); + /** + * @brief Get a list of RSUConfiguration struct. + */ + std::vector getConfigs() const; + }; + +} // namespace RSUHealthMonitor diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.cpp b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.cpp index 8d81a3b6c..ea4a0ce09 100755 --- a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.cpp +++ b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.cpp @@ -10,49 +10,44 @@ namespace RSUHealthMonitor { _rsuWorker = std::make_shared(); _rsuStatusTimer = make_unique(); + _rsuConfigListPtr = std::make_shared(); UpdateConfigSettings(); // Send SNMP call to RSU periodically at configurable interval. _timerThId = _rsuStatusTimer->AddPeriodicTick([this]() { - // Periodic SNMP call to get RSU status based on RSU MIB version 4.1 - auto rsuStatusJson = _rsuWorker->getRSUStatus(_rsuMibVersion, _rsuIp, _snmpPort, _securityUser, _authPassPhrase, _securityLevel, SEC_TO_MICRO); - PLOG(logINFO) << "Updating _interval: " << _interval; - //Broadcast RSU status periodically at _interval - BroadcastRSUStatus(rsuStatusJson); }, + this->monitorRSUs(); + PLOG(logINFO) << "Monitoring RSU at interval (second): " << _interval; }, std::chrono::milliseconds(_interval * SEC_TO_MILLI)); _rsuStatusTimer->Start(); } + void RSUHealthMonitorPlugin::monitorRSUs() + { + for (auto rsuConfig : _rsuConfigListPtr->getConfigs()) + { + auto rsuStatusJson = _rsuWorker->getRSUStatus(rsuConfig.mibVersion, rsuConfig.rsuIp, rsuConfig.snmpPort, rsuConfig.user, rsuConfig.authPassPhrase, rsuConfig.securityLevel, SEC_TO_MICRO); + BroadcastRSUStatus(rsuStatusJson, rsuConfig.mibVersion); + } + } + void RSUHealthMonitorPlugin::UpdateConfigSettings() { PLOG(logINFO) << "Updating configuration settings."; lock_guard lock(_configMutex); GetConfigValue("Interval", _interval); - GetConfigValue("RSUIp", _rsuIp); - GetConfigValue("SNMPPort", _snmpPort); - GetConfigValue("AuthPassPhrase", _authPassPhrase); - GetConfigValue("SecurityUser", _securityUser); - GetConfigValue("SecurityLevel", _securityLevel); - GetConfigValue("RSUMIBVersion", _rsuMIBVersionStr); - boost::trim_left(_rsuMIBVersionStr); - boost::trim_right(_rsuMIBVersionStr); - // Support RSU MIB version 4.1 - if (boost::iequals(_rsuMIBVersionStr, RSU4_1_str)) - { - _rsuMibVersion = RSUMibVersion::RSUMIB_V_4_1; - } - else - { - _rsuMibVersion = RSUMibVersion::UNKOWN_MIB_V; - PLOG(logERROR) << "Uknown RSU MIB version: " << _rsuMIBVersionStr; - } + GetConfigValue("RSUConfigurationList", _rsuConfigListStr); try { + _rsuConfigListPtr->parseRSUs(_rsuConfigListStr); _rsuStatusTimer->ChangeFrequency(_timerThId, std::chrono::milliseconds(_interval * SEC_TO_MILLI)); } + catch (const RSUConfigurationException &ex) + { + PLOG(logERROR) << "Cannot update RSU configurations due to error: " << ex.what(); + } catch (const tmx::TmxException &ex) { PLOG(logERROR) << ex.what(); @@ -65,13 +60,13 @@ namespace RSUHealthMonitor UpdateConfigSettings(); } - void RSUHealthMonitorPlugin::BroadcastRSUStatus(const Json::Value &rsuStatusJson) + void RSUHealthMonitorPlugin::BroadcastRSUStatus(const Json::Value &rsuStatusJson, const RSUMibVersion &mibVersion) { // Broadcast the RSU status info when there are RSU responses. if (!rsuStatusJson.empty() && _rsuWorker) { auto rsuStatusFields = _rsuWorker->getJsonKeys(rsuStatusJson); - auto configTbl = _rsuWorker->GetRSUStatusConfig(_rsuMibVersion); + auto configTbl = _rsuWorker->GetRSUStatusConfig(mibVersion); // Only broadcast RSU status when all required fields are present. if (_rsuWorker->validateAllRequiredFieldsPresent(configTbl, rsuStatusFields)) diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.h b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.h index 47d8ee1bd..e41ec8d8c 100755 --- a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.h +++ b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.h @@ -5,6 +5,7 @@ #include #include "RSUStatusMessage.h" #include "RSUHealthMonitorWorker.h" +#include "RSUConfigurationList.h" using namespace tmx::utils; using namespace std; @@ -17,15 +18,8 @@ namespace RSUHealthMonitor private: mutex _configMutex; uint16_t _interval; - string _rsuIp; - uint16_t _snmpPort; - string _authPassPhrase; - string _securityUser; - string _securityLevel; - string _rsuMIBVersionStr; - RSUMibVersion _rsuMibVersion; - const char *RSU4_1_str = "RSU4.1"; - const char *RSU1218_str = "RSU1218"; + string _rsuConfigListStr; + shared_ptr _rsuConfigListPtr; shared_ptr _rsuWorker; unique_ptr _rsuStatusTimer; uint _timerThId; @@ -35,12 +29,13 @@ namespace RSUHealthMonitor * @brief Broadcast RSU status * @param Json::Value RSU status in JSON format */ - void BroadcastRSUStatus(const Json::Value& rsuStatusJson); + void BroadcastRSUStatus(const Json::Value &rsuStatusJson, const RSUMibVersion &mibVersion); public: explicit RSUHealthMonitorPlugin(const std::string &name); void UpdateConfigSettings(); void OnConfigChanged(const char *key, const char *value) override; + void monitorRSUs(); }; } // namespace RSUHealthMonitorPlugin \ No newline at end of file diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.cpp b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.cpp index 6ac62f9fc..7c972cc75 100644 --- a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.cpp +++ b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.cpp @@ -125,7 +125,7 @@ namespace RSUHealthMonitor try { // Create SNMP client and use SNMP V3 protocol - PLOG(logINFO) << "Update SNMP client: RSU IP: " << _rsuIp << ", RSU port: " << _snmpPort << ", User: " << _securityUser << ", auth pass phrase: " << _authPassPhrase << ", security level: " + PLOG(logINFO) << "SNMP client: RSU IP: " << _rsuIp << ", RSU port: " << _snmpPort << ", User: " << _securityUser << ", auth pass phrase: " << _authPassPhrase << ", security level: " << _securityLevel; auto _snmpClientPtr = std::make_unique(_rsuIp, _snmpPort, "", _securityUser, _securityLevel, _authPassPhrase, SNMP_VERSION_3, timeout); diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.h b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.h index ef7a429c5..36ebf34bf 100644 --- a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.h +++ b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.h @@ -11,6 +11,7 @@ #include "SNMPClient.h" #include #include "RSUStatusMessage.h" +#include "RSUConfigurationList.h" using namespace std; using namespace tmx::utils; @@ -19,12 +20,6 @@ using namespace tmx::messages; namespace RSUHealthMonitor { - enum class RSUMibVersion - { - UNKOWN_MIB_V = 0, - RSUMIB_V_4_1 = 1, - RSUMIB_V_1218 = 2 - }; struct RSUFieldOIDStruct { diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/test/test_RSUConfigurationList.cpp b/src/v2i-hub/RSUHealthMonitorPlugin/test/test_RSUConfigurationList.cpp new file mode 100644 index 000000000..ae7c35974 --- /dev/null +++ b/src/v2i-hub/RSUHealthMonitorPlugin/test/test_RSUConfigurationList.cpp @@ -0,0 +1,85 @@ +#include +#include "RSUConfigurationList.h" + +namespace RSUHealthMonitor +{ + class test_RSUConfigurationList : public ::testing::Test + { + public: + std::shared_ptr rsuConfigList = std::make_shared(); + }; + + TEST_F(test_RSUConfigurationList, parseAndGetConfigs) + { + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + std::string rsuConfigsStr = "{ \"RSUS\": [ { \"RSUIp\": \"192.168.XX.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"161\", \"AuthPassPhrase\": \"dummy\", \"User\": \"authOnlyUser\", \"RSUMIBVersion\": \"RSU4.1\" },{ \"RSUIp\": \"192.168.00.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"162\", \"AuthPassPhrase\": \"tester\", \"User\": \"authPrivUser\", \"RSUMIBVersion\": \"RSU4.1\" }] }"; + rsuConfigList->parseRSUs(rsuConfigsStr); + ASSERT_EQ(2, rsuConfigList->getConfigs().size()); + std::stringstream ss; + ss << rsuConfigList->getConfigs()[0]; + std::string expected = "RSUIp: 192.168.XX.XX, SNMPPort: 161, User: authOnlyUser, AuthPassPhrase: dummy, SecurityLevel: authPriv, RSUMIBVersion: RSU4.1"; + ASSERT_EQ(expected, ss.str()); + } + TEST_F(test_RSUConfigurationList, parseAndGetConfigs_MalformatJSON) + { + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + std::string rsuConfigsStr = "{ \"RSUS { \"RSUIp\": \"192.168.XX.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"161\", \"AuthPassPhrase\": \"dummy\", \"User\": \"authOnlyUser\", \"RSUMIBVersion\": \"RSU4.1\" },{ \"RSUIp\": \"192.168.00.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"162\", \"AuthPassPhrase\": \"tester\", \"User\": \"authPrivUser\", \"RSUMIBVersion\": \"RSU4.1\" }] }"; + ASSERT_THROW(rsuConfigList->parseRSUs(rsuConfigsStr), RSUHealthMonitor::RSUConfigurationException); + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + } + + TEST_F(test_RSUConfigurationList, parseAndGetConfigs_Missing_RSUS) + { + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + std::string rsuConfigsStr = "{ \"ERROR\": [ { \"RSUIp\": \"192.168.XX.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"161\", \"AuthPassPhrase\": \"dummy\", \"User\": \"authOnlyUser\", \"RSUMIBVersion\": \"RSU4.1\" },{ \"RSUIp\": \"192.168.00.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"162\", \"AuthPassPhrase\": \"tester\", \"User\": \"authPrivUser\", \"RSUMIBVersion\": \"RSU4.1\" }] }"; + ASSERT_THROW(rsuConfigList->parseRSUs(rsuConfigsStr), RSUHealthMonitor::RSUConfigurationException); + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + } + + TEST_F(test_RSUConfigurationList, parseAndGetConfigs_Missing_SNMPPORT) + { + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + std::string rsuConfigsStr = "{ \"RSUS\": [ { \"RSUIp\": \"192.168.XX.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort_Missing\": \"161\", \"AuthPassPhrase\": \"dummy\", \"User\": \"authOnlyUser\", \"RSUMIBVersion\": \"RSU4.1\" },{ \"RSUIp\": \"192.168.00.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"162\", \"AuthPassPhrase\": \"tester\", \"User\": \"authPrivUser\", \"RSUMIBVersion\": \"RSU4.1\" }] }"; + ASSERT_THROW(rsuConfigList->parseRSUs(rsuConfigsStr), RSUHealthMonitor::RSUConfigurationException); + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + } + + TEST_F(test_RSUConfigurationList, parseAndGetConfigs_INVALID_SNMPPORT) + { + std::string rsuConfigsStr = "{ \"RSUS\": [ { \"RSUIp\": \"192.168.01.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"162\", \"AuthPassPhrase\": \"dummy\", \"User\": \"authOnlyUser\", \"RSUMIBVersion\": \"RSU4.1\" },{ \"RSUIp\": \"192.168.00.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"INVALID_PORT\", \"AuthPassPhrase\": \"tester\", \"User\": \"authPrivUser\", \"RSUMIBVersion\": \"RSU4.1\" }] }"; + ASSERT_THROW(rsuConfigList->parseRSUs(rsuConfigsStr), RSUHealthMonitor::RSUConfigurationException); + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + } + + TEST_F(test_RSUConfigurationList, parseAndGetConfigs_Missing_AuthPassPhrase) + { + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + std::string rsuConfigsStr = "{ \"RSUS\": [ { \"RSUIp\": \"192.168.XX.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"161\", \"AuthPassPhrase_Missing\": \"dummy\", \"User\": \"authOnlyUser\", \"RSUMIBVersion\": \"RSU4.1\" },{ \"RSUIp\": \"192.168.00.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"162\", \"AuthPassPhrase\": \"tester\", \"User\": \"authPrivUser\", \"RSUMIBVersion\": \"RSU4.1\" }] }"; + ASSERT_THROW(rsuConfigList->parseRSUs(rsuConfigsStr), RSUHealthMonitor::RSUConfigurationException); + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + } + + TEST_F(test_RSUConfigurationList, parseAndGetConfigs_Missing_User) + { + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + std::string rsuConfigsStr = "{ \"RSUS\": [ { \"RSUIp\": \"192.168.XX.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"161\", \"AuthPassPhrase\": \"dummy\", \"User_Missing\": \"authOnlyUser\", \"RSUMIBVersion\": \"RSU4.1\" },{ \"RSUIp\": \"192.168.00.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"162\", \"AuthPassPhrase\": \"tester\", \"User\": \"authPrivUser\", \"RSUMIBVersion\": \"RSU4.1\" }] }"; + ASSERT_THROW(rsuConfigList->parseRSUs(rsuConfigsStr), RSUHealthMonitor::RSUConfigurationException); + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + } + + TEST_F(test_RSUConfigurationList, parseAndGetConfigs_Missing_MibVersion) + { + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + std::string rsuConfigsStr = "{ \"RSUS\": [ { \"RSUIp\": \"192.168.XX.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"161\", \"AuthPassPhrase\": \"dummy\", \"User\": \"authOnlyUser\", \"RSUMIBVersion_Missing\": \"RSU4.1\" },{ \"RSUIp\": \"192.168.00.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"162\", \"AuthPassPhrase\": \"tester\", \"User\": \"authPrivUser\", \"RSUMIBVersion\": \"RSU4.1\" }] }"; + ASSERT_THROW(rsuConfigList->parseRSUs(rsuConfigsStr), RSUHealthMonitor::RSUConfigurationException); + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + } + + TEST_F(test_RSUConfigurationList, parseAndGetConfigs_Invalid_MibVersion) + { + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + std::string rsuConfigsStr = "{ \"RSUS\": [ { \"RSUIp\": \"192.168.XX.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"161\", \"AuthPassPhrase\": \"dummy\", \"User\": \"authOnlyUser\", \"RSUMIBVersion\": \"INVALID_RSU4.1\" },{ \"RSUIp\": \"192.168.00.XX\",\"SecurityLevel\": \"authPriv\", \"SNMPPort\": \"162\", \"AuthPassPhrase\": \"tester\", \"User\": \"authPrivUser\", \"RSUMIBVersion\": \"RSU4.1\" }] }"; + ASSERT_THROW(rsuConfigList->parseRSUs(rsuConfigsStr), RSUHealthMonitor::RSUConfigurationException); + ASSERT_EQ(0, rsuConfigList->getConfigs().size()); + } +} \ No newline at end of file diff --git a/src/v2i-hub/SpatPlugin/src/NTCIP1202.cpp b/src/v2i-hub/SpatPlugin/src/NTCIP1202.cpp index d75e1e522..77cac309c 100644 --- a/src/v2i-hub/SpatPlugin/src/NTCIP1202.cpp +++ b/src/v2i-hub/SpatPlugin/src/NTCIP1202.cpp @@ -21,11 +21,14 @@ using namespace boost::property_tree; using namespace tmx::utils; #if SAEJ2735_SPEC < 63 -#else +#elif SAEJ2735_SPEC < 2020 typedef DSRC_MsgCount_t MsgCount_t; -typedef DSecond_t DSecond2_t; typedef DSRC_TimeMark_t TimeMark_t; +#else +typedef Common_MsgCount_t MsgCount_t; +typedef SPAT_TimeMark_t TimeMark_t; #endif +typedef DSecond_t DSecond2_t; void Ntcip1202::setSignalGroupMappingList(string json) { diff --git a/src/v2i-hub/TelematicBridgePlugin/src/TelematicBridgeMsgWorker.h b/src/v2i-hub/TelematicBridgePlugin/src/TelematicBridgeMsgWorker.h index c31c5cc9c..d3fa956d6 100644 --- a/src/v2i-hub/TelematicBridgePlugin/src/TelematicBridgeMsgWorker.h +++ b/src/v2i-hub/TelematicBridgePlugin/src/TelematicBridgeMsgWorker.h @@ -147,7 +147,9 @@ namespace TelematicBridge { throw TelematicBridgeException("Failed to convert message with ID (=" + to_string(messageFrame->messageId) + ") to XML "); } - return string(xml_buffer.buffer); + auto output = string(xml_buffer.buffer); + FREEMEM(xml_buffer.buffer); + return output; } /** @@ -238,7 +240,10 @@ namespace TelematicBridge } else { - json["payload"] = StringToJson(cJSON_Print(msg->payload)); + // Render a cJSON entity to text for transfer/storage. Free the char* when finished. + auto payloadPtr = cJSON_Print(msg->payload); + json["payload"] = StringToJson(payloadPtr); + FREEMEM(payloadPtr); } } diff --git a/src/v2i-hub/TimPlugin/src/DsrcBuilder.cpp b/src/v2i-hub/TimPlugin/src/DsrcBuilder.cpp index 1cbfbb0ab..e06bbb5ca 100644 --- a/src/v2i-hub/TimPlugin/src/DsrcBuilder.cpp +++ b/src/v2i-hub/TimPlugin/src/DsrcBuilder.cpp @@ -35,7 +35,11 @@ void DsrcBuilder::AddTimAdvisory(TiDataFrame *frame, unsigned int speedLimit) void DsrcBuilder::AddItisCode(ITIScodesAndText *advisory, long code) { ITIScodesAndText__Member* member = (ITIScodesAndText__Member*)malloc(sizeof(ITIScodesAndText__Member)); + #if SAEJ2735_SPEC < 2020 member->item.present = ITIScodesAndText__Memberitem_PR_itis; + #else + member->item.present = ITIScodesAndText__Member__item_PR_itis; + #endif member->item.choice.itis = code; ASN_SEQUENCE_ADD(&advisory->list, member); } @@ -45,8 +49,12 @@ void DsrcBuilder::AddItisText(ITIScodesAndText *advisory, std::string text) int textLength = text.length(); ITIScodesAndText__Member* member = (ITIScodesAndText__Member*)malloc(sizeof(ITIScodesAndText__Member)); + #if SAEJ2735_SPEC < 2020 member->item.present = ITIScodesAndText__Memberitem_PR_text; - + #else + member->item.present = ITIScodesAndText__Member__item_PR_text; + #endif + member->item.choice.text.buf = NULL; OCTET_STRING_fromString(&(member->item.choice.text), text.c_str()); diff --git a/src/v2i-hub/TimPlugin/src/TimPlugin.cpp b/src/v2i-hub/TimPlugin/src/TimPlugin.cpp index 6aa2d8c8f..aeba1e5c0 100644 --- a/src/v2i-hub/TimPlugin/src/TimPlugin.cpp +++ b/src/v2i-hub/TimPlugin/src/TimPlugin.cpp @@ -164,7 +164,11 @@ bool TimPlugin::TimDuration(std::shared_ptr TimMsg) return false; } //Duration is unit of minute - auto duration = timPtr->dataFrames.list.array[0]->duratonTime; + #if SAEJ2735_SPEC < 2020 + auto duration = timPtr->dataFrames.list.array[0]->duratonTime; + #else + auto duration = timPtr->dataFrames.list.array[0]->durationTime; + #endif bool isPersist = false; if(duration >= 32000) { diff --git a/src/v2i-hub/TimPlugin/src/XmlCurveParser.cpp b/src/v2i-hub/TimPlugin/src/XmlCurveParser.cpp index 9fbde571d..79a784d75 100644 --- a/src/v2i-hub/TimPlugin/src/XmlCurveParser.cpp +++ b/src/v2i-hub/TimPlugin/src/XmlCurveParser.cpp @@ -286,8 +286,12 @@ TiDataFrame* XmlCurveParser::ReadRegions(DOMElement* regionsElement) DsrcBuilder::SetStartTimeToYesterday(frame); // Set the duration (minutes) to its max value. + #if SAEJ2735_SPEC < 2020 frame->duratonTime = 32000; - + #else + frame->durationTime = 32000; + #endif + frame->startYear = NULL; frame->url = NULL; // Priority is 0-7 with 7 the highest priority. @@ -437,17 +441,21 @@ Position3D* XmlCurveParser::ReadReferencePoint(DOMElement* referencePointElement { int16_t elevation = atoi(XMLString::transcode(currentElement->getTextContent())) * 10; -#if SAEJ2735_SPEC < 63 + #if SAEJ2735_SPEC < 63 anchor->elevation = (Elevation_t *)malloc(sizeof(Elevation_t)); anchor->elevation->buf = (uint8_t *)calloc(1,2); anchor->elevation->size = 2; anchor->elevation->buf[0] = elevation >> 8; anchor->elevation->buf[1] = elevation & 0xFF; -#else + + #elif SAEJ2735_SPEC < 2020 anchor->elevation = (DSRC_Elevation_t *)malloc(sizeof(DSRC_Elevation_t)); + #else + anchor->elevation = (Common_Elevation_t *)malloc(sizeof(Common_Elevation_t)); *(anchor->elevation) = elevation; -#endif + #endif + if (_debugOutput) cout << "ReferencePoint Elevation: " << elevation << endl; } diff --git a/tools/port-drayage-webservice/Dockerfile b/tools/port-drayage-webservice/Dockerfile index 1f27a0549..27e8e0402 100644 --- a/tools/port-drayage-webservice/Dockerfile +++ b/tools/port-drayage-webservice/Dockerfile @@ -1,10 +1,10 @@ -FROM amd64/maven:3.8-jdk-11-slim AS maven_build +FROM maven:3.8-jdk-11-slim AS maven_build RUN mkdir /home/port-drayage-webservice COPY src/ /home/port-drayage-webservice/src/ COPY pom.xml /home/port-drayage-webservice/ WORKDIR /home/port-drayage-webservice/ RUN mvn clean install -FROM amd64/alpine:latest +FROM alpine:latest RUN mkdir /home/port-drayage-webservice/ RUN apk add openjdk11-jre --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community COPY --from=maven_build /home/port-drayage-webservice/target/port-drayage-webservice-0.0.1-SNAPSHOT.jar /home/port-drayage-webservice/ diff --git a/tools/port-drayage-webservice/Dockerfile-arm b/tools/port-drayage-webservice/Dockerfile-arm deleted file mode 100644 index e83deb874..000000000 --- a/tools/port-drayage-webservice/Dockerfile-arm +++ /dev/null @@ -1,12 +0,0 @@ -FROM arm64v8/maven:3.8-jdk-11-slim AS maven_build -RUN mkdir /home/port-drayage-webservice -COPY src/ /home/port-drayage-webservice/src/ -COPY pom.xml /home/port-drayage-webservice/ -WORKDIR /home/port-drayage-webservice/ -RUN mvn clean install -FROM arm64v8/alpine:latest -RUN mkdir /home/port-drayage-webservice/ -RUN apk add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community -COPY --from=maven_build /home/port-drayage-webservice/target/port-drayage-webservice-0.0.1-SNAPSHOT.jar /home/port-drayage-webservice/ -WORKDIR /home/port-drayage-webservice/ -ENTRYPOINT ["java","-jar","port-drayage-webservice-0.0.1-SNAPSHOT.jar"] \ No newline at end of file