From c41b781fb2a98ab2617e100e5d804c100792ada6 Mon Sep 17 00:00:00 2001
From: BMItter <Berndus@gmx.de>
Date: Mon, 2 Nov 2020 20:44:39 +0100
Subject: [PATCH] temporary Params from current ENFv2 Draft - neccassary to
 work, but will be overwritten later

---
 .../internal/v2/app_config_android.proto      | 50 +++++++++++++++
 .../main/proto/internal/v2/app_features.proto | 11 ++++
 .../v2/exposure_detection_parameters.proto    | 14 +++++
 .../internal/v2/key_download_parameters.proto | 31 +++++++++
 .../v2/risk_calculation_parameters.proto      | 63 +++++++++++++++++++
 .../proto/internal/v2/semantic_version.proto  |  8 +++
 6 files changed, 177 insertions(+)
 create mode 100644 Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_android.proto
 create mode 100644 Server-Protocol-Buffer/src/main/proto/internal/v2/app_features.proto
 create mode 100644 Server-Protocol-Buffer/src/main/proto/internal/v2/exposure_detection_parameters.proto
 create mode 100644 Server-Protocol-Buffer/src/main/proto/internal/v2/key_download_parameters.proto
 create mode 100644 Server-Protocol-Buffer/src/main/proto/internal/v2/risk_calculation_parameters.proto
 create mode 100644 Server-Protocol-Buffer/src/main/proto/internal/v2/semantic_version.proto

diff --git a/Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_android.proto b/Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_android.proto
new file mode 100644
index 000000000..6f6d21c22
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_android.proto
@@ -0,0 +1,50 @@
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.v2;
+import "internal/v2/app_features.proto";
+import "internal/v2/risk_calculation_parameters.proto";
+import "internal/v2/key_download_parameters.proto";
+import "internal/v2/exposure_detection_parameters.proto";
+
+message ApplicationConfigurationAndroid {
+
+  // Android apps are versioned by Version Code and not by Semantic Versioning
+  int64 minVersionCode = 1;
+  int64 latestVersionCode = 2;
+
+  AppFeatures appFeatures = 3;
+
+  repeated string supportedCountries = 4;
+
+  KeyDownloadParametersAndroid keyDownloadParameters = 5;
+
+  ExposureDetectionParametersAndroid exposureDetectionParameters = 6;
+
+  RiskCalculationParameters riskCalculationParameters = 7;
+
+  DiagnosisKeysDataMapping diagnosisKeysDataMapping = 8;
+  DailySummariesConfig dailySummariesConfig = 9;
+}
+
+message DiagnosisKeysDataMapping {
+
+  map<int32, int32> daysSinceOnsetToInfectiousness = 1;
+
+  int32 infectiousnessWhenDaysSinceOnsetMissing = 2;
+
+  int32 reportTypeWhenMissing = 3;
+}
+
+message DailySummariesConfig {
+
+  repeated int32 attenuationBucketThresholdDb = 1;
+
+  repeated double attenuationBucketWeights = 2;
+
+  int32 daysSinceExposureThreshold = 3;
+
+  map<int32, double> infectiousnessWeights = 4;
+
+  double minimumWindowScore = 5;
+
+  map<int32, double> reportTypeWeights = 6;
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/v2/app_features.proto b/Server-Protocol-Buffer/src/main/proto/internal/v2/app_features.proto
new file mode 100644
index 000000000..f53be3812
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/v2/app_features.proto
@@ -0,0 +1,11 @@
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.v2;
+
+message AppFeatures {
+  repeated AppFeature appFeatures = 1;
+}
+
+message AppFeature {
+  string label = 1;
+  int32 value = 2;
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/v2/exposure_detection_parameters.proto b/Server-Protocol-Buffer/src/main/proto/internal/v2/exposure_detection_parameters.proto
new file mode 100644
index 000000000..754bd769a
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/v2/exposure_detection_parameters.proto
@@ -0,0 +1,14 @@
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.v2;
+
+message ExpsureDetectionParametersIOS {
+
+  int32 maxExposureDetectionsPerInterval = 1;
+}
+
+message ExposureDetectionParametersAndroid {
+
+  int32 maxExposureDetectionsPerInterval = 1;
+
+  int32 overallTimeoutInSeconds = 2;
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/v2/key_download_parameters.proto b/Server-Protocol-Buffer/src/main/proto/internal/v2/key_download_parameters.proto
new file mode 100644
index 000000000..4cf97b977
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/v2/key_download_parameters.proto
@@ -0,0 +1,31 @@
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.v2;
+
+message KeyDownloadParametersIOS {
+
+  repeated DayPackageMetadata cachedDayPackagesToUpdateOnETagMismatch = 1;
+  repeated HourPackageMetadata cachedHourPackagesToUpdateOnETagMismatch = 2;
+}
+
+message KeyDownloadParametersAndroid {
+
+  repeated DayPackageMetadata cachedDayPackagesToUpdateOnETagMismatch = 1;
+  repeated HourPackageMetadata cachedHourPackagesToUpdateOnETagMismatch = 2;
+
+  int32 downloadTimeoutInSeconds = 3;
+
+  int32 overallTimeoutInSeconds = 4;
+}
+
+message DayPackageMetadata {
+  string region = 1;
+  string date = 2;
+  string etag = 3;
+}
+
+message HourPackageMetadata {
+  string region = 1;
+  string date = 2;
+  int32 hour = 3;
+  string etag = 4;
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/v2/risk_calculation_parameters.proto b/Server-Protocol-Buffer/src/main/proto/internal/v2/risk_calculation_parameters.proto
new file mode 100644
index 000000000..2618917a0
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/v2/risk_calculation_parameters.proto
@@ -0,0 +1,63 @@
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.v2;
+
+message RiskCalculationParameters {
+
+  repeated MinutesAtAttenuationFilter minutesAtAttenuationFilters = 1;
+
+  repeated TrlFilter trlFilters = 2;
+
+  repeated MinutesAtAttenuationWeight minutesAtAttenuationWeights = 3;
+
+  repeated NormalizedTimeToRiskLevelMapping normalizedTimePerEWToRiskLevelMapping = 4;
+
+  repeated NormalizedTimeToRiskLevelMapping normalizedTimePerDayToRiskLevelMapping = 5;
+
+  TransmissionRiskLevelEncoding trlEncoding = 6;
+
+  double transmissionRiskLevelMultiplier = 7;
+}
+
+message Range {
+  // The lower limit of the range
+  double min = 1;
+  // True if `min` is not part of the range, false otherwise
+  bool minExclusive = 2;
+  // The upper limit of the range
+  double max = 3;
+  // True if `max` is not part of the range, false otherwise
+  bool maxExclusive = 4;
+}
+
+message MinutesAtAttenuationFilter {
+  Range attenuationRange = 1;
+  Range dropIfMinutesInRange = 2;
+}
+
+message TrlFilter {
+  Range dropIfTrlInRange = 1;
+}
+
+message MinutesAtAttenuationWeight {
+  Range attenuationRange = 1;
+  double weight = 2;
+}
+
+message NormalizedTimeToRiskLevelMapping {
+  Range normalizedTimeRange = 1;
+  enum RiskLevel {
+    UNSPECIFIED = 0;
+    LOW = 1;
+    HIGH = 2;
+  }
+  RiskLevel riskLevel = 2;
+}
+
+message TransmissionRiskLevelEncoding {
+  int32 infectiousnessOffsetStandard = 1;
+  int32 infectiousnessOffsetHigh = 2;
+  int32 reportTypeOffsetRecursive = 3;
+  int32 reportTypeOffsetSelfReport = 4;
+  int32 reportTypeOffsetConfirmedClinicalDiagnosis = 5;
+  int32 reportTypeOffsetConfirmedTest = 6;
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/v2/semantic_version.proto b/Server-Protocol-Buffer/src/main/proto/internal/v2/semantic_version.proto
new file mode 100644
index 000000000..a5950c844
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/v2/semantic_version.proto
@@ -0,0 +1,8 @@
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.v2;
+  
+message SemanticVersion {
+  uint32 major = 1;
+  uint32 minor = 2;
+  uint32 patch = 3;
+}
\ No newline at end of file
-- 
GitLab