VOL-2152: Enhance OnuItuPonAlarm message to enumerize the alarm_id
          and alarm_reporting_condition information

Change-Id: I455540cdba1b7a5e114915405da5dcb4fe71eb79
diff --git a/protos/voltha_protos/openolt.proto b/protos/voltha_protos/openolt.proto
index 69092ee..13d7a38 100644
--- a/protos/voltha_protos/openolt.proto
+++ b/protos/voltha_protos/openolt.proto
@@ -420,17 +420,47 @@
 }
 
 message OnuItuPonAlarm {
+    enum AlarmID {
+        RDI_ERRORS = 0; // RDI errors
+    }
+
+    enum AlarmReportingCondition {
+        RATE_THRESHOLD = 0; // The alarm is triggered if the stats delta value between samples crosses the configured threshold boundary
+        RATE_RANGE = 1; // The alarm is triggered if the stats delta value between samples deviates from the configured range
+        VALUE_THRESHOLD = 2; // The alarm is raised if the stats sample value becomes greater than this level.  The alarm is cleared when the host read the stats
+    }
+
+    message SoakTime {
+        fixed32 active_soak_time = 1;
+        fixed32 clear_soak_time = 2;
+    }
+
+    message RateThresholdConfig {
+        fixed64 rate_threshold_rising = 1;
+        fixed64 rate_threshold_falling = 2;
+        SoakTime soak_time = 3;
+    }
+
+    message RateRangeConfig {
+        fixed64 rate_range_lower = 1;
+        fixed64 rate_range_upper = 2;
+        SoakTime soak_time = 3;
+    }
+
+    message ValueThresholdConfig {
+        fixed64 threshold_limit = 1;
+        SoakTime soak_time = 2;
+    }
+
     fixed32 pon_ni = 1;
     fixed32 onu_id = 2;
-    fixed32 alarm_id = 3;
-    fixed32 type = 4;
-    fixed64 rate_thresdhold_rising = 5;
-    fixed64 rate_thresdhold_falling = 6;
-    fixed64 rate_range_lower = 7;
-    fixed64 rate_range_upper = 8;
-    fixed64 threshold_limit = 9;
-    fixed32 active_soak_time = 10;
-    fixed32 clear_soak_time = 11;
+    AlarmID alarm_id = 3;
+    AlarmReportingCondition alarm_reporting_condition = 4;
+    oneof config {
+        RateThresholdConfig rate_threshold_config = 5;
+        RateRangeConfig rate_range_config = 6;
+        ValueThresholdConfig value_threshold_config = 7;
+    }
 }
 
 message SerialNumber {
@@ -541,10 +571,18 @@
     string status = 3;
 }
 
+message RdiErrorIndication {
+    fixed64 rdi_error_count = 1; // RDI Error count
+    string status = 2; // on/off based on configured reporting condition
+}
+
 message OnuItuPonStatsIndication{
     fixed32 intf_id = 1;
     fixed32 onu_id = 2;
-    fixed64 rdi_errors = 3;
+    oneof stats {
+        RdiErrorIndication rdi_error_ind = 3;
+        // add more here
+    }
 }
 
 message OnuProcessingErrorIndication {
@@ -555,7 +593,7 @@
 message OnuDeactivationFailureIndication {
     fixed32 intf_id = 1;
     fixed32 onu_id = 2;
-    fixed32 fail_reason = 3;
+    string status = 3;
 }
 
 message OnuRemoteDefectIndication {