VOL-3157: Initial version of the protos

Change-Id: I8ffda169132f80a51632c52dd8ac142efef26ef7
diff --git a/protos/dmi/hw_management_service.proto b/protos/dmi/hw_management_service.proto
new file mode 100644
index 0000000..5b780e7
--- /dev/null
+++ b/protos/dmi/hw_management_service.proto
@@ -0,0 +1,57 @@
+syntax = "proto3";

+

+option go_package = "github.com/opencord/device-management-interface/v3/go/dmi";

+package dmi;

+

+import "dmi/commons.proto";

+import "dmi/hw.proto";

+

+// Protos for the management of a hardware and it's components

+

+message PhysicalInventoryRequest {

+    Uuid device_uuid = 1;

+}

+

+message PhysicalInventoryResponse {

+    Status status = 1;

+    Reason reason = 2;

+    Hardware inventory = 3;

+}

+

+message HWComponentInfoGetRequest {

+    Uuid device_uuid = 1;

+    Uuid component_uuid = 2;

+    string component_name = 3;

+}

+

+message HWComponentInfoSetRequest {

+    Uuid device_uuid = 1;

+    Uuid component_uuid = 2;

+    string component_name = 3;

+    ModifiableComponent changes = 4;

+}

+

+message HWComponentInfoSetResponse {

+    Status status = 1;

+    Reason reason = 2;

+}

+

+message StartManagingDeviceResponse {

+    Status status = 1;

+    Reason reason = 2;

+    Uuid device_uuid = 3;

+}

+

+service NativeHWManagementService {

+    // Initializes context for a device and sets up required states

+    rpc StartManagingDevice(Hardware) returns(stream StartManagingDeviceResponse);

+

+    // Get the HW inventory details of the Device

+    rpc GetPhysicalInventory(PhysicalInventoryRequest) returns(stream PhysicalInventoryResponse);

+

+    // Get the details of a particular HW component

+    rpc GetHWComponentInfo(HWComponentInfoGetRequest) returns(stream Component);

+

+    // Sets the permissible attributes of a HW component

+    rpc SetHWComponentInfo(HWComponentInfoSetRequest) returns(HWComponentInfoSetResponse);

+}