Initial import of Microsemi Driver

Change-Id: I431d5f2c18e0b66a84c36273c3d9f0b84f223841

Added in BUCK files for building driver

Change-Id: I70681327f5b89f67e904c45d5974ab393652d51f

Corrected some syntax errors

Change-Id: I11150cc499c212005f80619e3900e747f1c23d96

Updated pom file to clean build

Change-Id: I6613ddc9e6802aa882e716cf04df210249870835

Added in utility functions for EA1000 Init

Change-Id: I51ffe0cf0daf9ffcea0e2479ee9982fcd1755440

Added YMS code to Microsemi Driver

Change-Id: I6f2a14e454c6909bf9e9f6025321c74c98c13c72

Updated driver to work with YMS and YCH

Change-Id: If7dbe3cd5bd1b6f902d09d6b2dc3895605d70f70

Implemented IetfSystemManager as a service and call on YMS as a service

Change-Id: If1c5e8482b1f53f578a3b0b770accd50024111cf

Moved YMS calls over in to Yang Service implementation

Change-Id: I044aad06f1ef7452bc48e88987787a683666cd72

improved unit test for IetfSystemManager

Change-Id: I48fbf831e7e5ca0e1ef3de8288e56da1b5ebb7a4

Major changes to IetfSystemManager to work in live system

Change-Id: I6e3aa118ba422151f314b9a666860d90905c9929

Added in retry mechanism for DeviceDescription to wait for YCH

Change-Id: If8e0f2c2f315ffd6db15627a11382a00217dd262

Added in implementation of MseaSaFiltering and unit tests

Change-Id: I34bf888e0e732bd4664d1fb8ef5abb679b1506fe

Updated driver with unit tests for MseaSaFiltering

Change-Id: I7ea2407a546622ff55d1ab21610c45697546d632

Modified removeFlowRules of Ea1000FlowRuleProgrammable

Change-Id: Ibb4a555f61887a8e6e42af588bb42f7b70f58efb

Added in manager for MseaUniEvc service with unit tests

Change-Id: Idc5853f46051548973f52a0659f7f88982ff960c

Implemented getFlowEntries() for EVCs from EA1000

Change-Id: Ie85dadfa7760f0b30a9bdf6ccd09cca9f097fff9

Added in translation of FlowRules in to EVC on EA1000

Change-Id: Icfb65171c3300c96b3ca4e18cbd327f0ed2190be

Added in handling of FlowRule deletion including complex ceVlanMaps

Change-Id: I7fd0bb0ef04d1b40e4b7d6a6db7f7ee662329780

Updated Service entries for new onos-yang-tools

Change-Id: I44e655202f3a45073e1e16f83737caed6e01afa8

Revert "Updated Service entries for new onos-yang-tools"

This reverts commit 642b550ef1de12ed59bad2eaa3a2da414d2e5e59.

Improved timeout mechanism for YANG model loading

Change-Id: If744ecd206372e822edf2b736c83226321a12256

Minor edits of EVC creation

Change-Id: Ib0a4763deaf6dce37625ba77f5095b39cd98272d

Added in CustomEvc and supporting classes

Change-Id: Iad60eb1bcd48d2aec55b894b2d419b51852c3b2f

Created CeVlanUtils to resolve loading problem

Change-Id: I0d63931ad2c5ad2725861ebc7dccc4d5fe7b9298

Modified startup check

Change-Id: I6e6bcfa7e615044cb08fe7ee2f8a6c8b89aabb21

Modified handlin of flow rules

Change-Id: I965a79c23298866122aeb94c6d9d584aafee3bd5

Fixed problem with ceVlanMap

Change-Id: If1458c35d0b95b5b25b6636f098292f9e91c06c6

Minor Pom edits

Change-Id: I5cefb18674aa04b1f50bd7e2306260c1c3ad3814

Commented out extension references in YANG files to avoid onos-yang-tools problems

Change-Id: I32fdb34c4f476f495fe28e75d0f410aaf14e2ec1

Corrected error in removing 0 in CeVlanMapUtils

Change-Id: I8cd1fd02788b81c2613364d5639ef6e090057f80

Changes in YMS to accomodate EA1000 driver

Change-Id: I6ae2b9bd2be49eae8d4ad2f929dfe3214c514550
diff --git a/drivers/microsemi/ea1000yang/src/main/yang/svc-activation-types.yang b/drivers/microsemi/ea1000yang/src/main/yang/svc-activation-types.yang
new file mode 100644
index 0000000..f82227b
--- /dev/null
+++ b/drivers/microsemi/ea1000yang/src/main/yang/svc-activation-types.yang
@@ -0,0 +1,190 @@
+module svc-activation-types {
+
+    /*** NAMESPACE / PREFIX DEFINITION ***/
+
+    namespace "http://www.microsemi.com/svc-activation-types";
+    prefix "sa";
+
+    import ietf-yang-types {
+        prefix yang;
+        revision-date 2013-07-15;
+    }
+
+    import msea-types {
+        prefix msea;
+        revision-date 2016-02-29;
+    }
+
+    import msea-cfm {
+        prefix msea-cfm;
+        revision-date 2016-02-29;
+    }
+    /*** META INFORMATION ***/
+
+    organization
+    "Microsemi Inc., FTD Division";
+
+    contact
+    "Web URL: http://www.microsemi.com/
+    E-mail: info@microsemi.com
+    Postal: Microsemi Corporation Corporate Headquarters
+    One Enterprise Aliso Viejo,
+    CA 92656
+    U.S.A.
+    Phone: +1 949 380 6100
+    Fax: +1 949 215-4996";
+
+    description
+    "This YANG module defines common types that 
+    are used in both RFC 2544 and ITU-T Y.1564
+
+    Copyright 2015 Microsemi Inc.
+    All rights reserved.";
+
+    revision "2015-10-27" {
+        description
+        "Initial version - Sean Condon, Microsemi";
+        reference "Initial revision";
+    }
+
+    /*
+     * Typedefs
+     */
+    typedef test-status {
+        type enumeration {
+            enum disabled {
+                value 0;
+                description "Test is disabled";
+            }
+            enum running {
+                value 1;
+                description "Test is running";
+            }
+            enum pending {
+                value 2;
+                description "Test is pending";
+            }
+            enum stopped {
+                value 3;
+                description "Test is stopped";
+            }
+            enum completed {
+                value 4;
+                description "Test is completed";
+            }
+            enum failed {
+                value 5;
+                description "Test is failed";
+            }
+        }
+        description "Enumerated values for the status of a test";
+    }
+
+    typedef frame-size-type {
+        type uint16 {
+            range 64..9600;
+        }
+        description "Frame size in bytes data type";
+    }
+
+    grouping mep-config-attribs {
+        description 
+        "Attributes related to the configuration of a MEP";
+
+        leaf maintenance-domain {
+            type leafref {
+                path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:id";
+//                msea:xref-module "msea-cfm";
+            }
+            description
+            "A reference to a specific Maintenance Domain.";
+        }
+
+        leaf maintenance-association {
+            type leafref {
+                path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id=current()/../maintenance-domain]/msea-cfm:maintenance-association/msea-cfm:id";
+//                msea:xref-module "msea-cfm";
+            }
+            description
+            "A reference to a specific Maintenance Association.";
+        }
+
+        leaf maintenance-association-end-point {
+            type leafref {
+                path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id=current()/../maintenance-domain]/msea-cfm:maintenance-association[msea-cfm:id=current()/../maintenance-association]/msea-cfm:maintenance-association-end-point/msea-cfm:mep-identifier";
+//                msea:xref-module "msea-cfm";
+            }
+            description
+            "A reference to a specific Maintenance association End Point.";
+        }
+
+
+        leaf remote-mep-id {
+            type leafref {
+                path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id=current()/../maintenance-domain]/msea-cfm:maintenance-association[msea-cfm:id=current()/../maintenance-association]/msea-cfm:remote-meps";
+//                msea:xref-module "msea-cfm";
+            }
+
+            must "current()/../maintenance-association-end-point != current()" {
+                error-message "Remote MEP Id must not be the same as Local MEP Id";
+                error-app-tag "msea-svc-must-01";
+            }
+
+            //mandatory true; //Should not be mandatory in a top level container 
+            description "The Id of the remote MEP";
+        }
+    }
+
+    grouping overwrite-pcp-attribs {
+        leaf overwrite-priority {
+            type msea:priority-type;
+            default 0;
+            description 
+            "The priority in the MEP's TAG is replaced 
+            with this priority if overwrite-pcp is present";
+        }
+    }
+
+    grouping results-header-group {
+        description
+        "Common attributes of a result set.";
+
+        leaf start-time {
+            type yang:date-and-time;
+            mandatory true;
+            description "Time at which the test was started.";
+        }
+
+        leaf end-time {
+            type yang:date-and-time;
+            description "Time at which the test ended. 
+                Not specified if test has ended.";
+        }
+
+        leaf test-status {
+            type test-status;
+            mandatory true;
+            description "The status of the test";
+        }
+    }
+
+    grouping notification-group {
+        description "Attributes related to notifications";
+        leaf new-status {
+          type sa:test-status;
+          mandatory true;
+          description "The new status of the test";
+        }
+        
+        leaf old-status {
+          type sa:test-status;
+          description "The old status of the test";
+        }
+
+        leaf test-type {
+            type string;
+            mandatory true;
+            description "Name of the test currently being performed";
+        }
+    }
+}
\ No newline at end of file