syntax = "proto3";
  

package importer;

import "google/protobuf/empty.proto";
//import "google/api/annotations.proto";


message DeviceInfo {
	string ip_address = 1;
	uint32 frequency = 2;
        string vendor = 3;
	string protocol = 4;
}

message GivenEventList {
	string event_ip_address = 1;
        repeated string events = 2;
}

message EventList {
        repeated string events = 1;
}

message FreqInfo {
	string IpAddress = 1;
	uint32 Frequency = 2;
}

message VendorInfo {
	string Vendor = 1;
}

message Device {
	string IpAddress = 1;
}

message DeviceList {
        repeated string ip = 1;
}

message Empty {}

service device_management {
    rpc SendDeviceInfo(DeviceInfo) returns (google.protobuf.Empty) {}

    rpc SetFrequency(FreqInfo) returns (google.protobuf.Empty) {}

    rpc GetEventList(VendorInfo) returns (EventList) {}

    rpc SubsrcribeGivenEvents(GivenEventList)  returns (google.protobuf.Empty) {}

    rpc UnSubsrcribeGivenEvents(GivenEventList) returns (google.protobuf.Empty) {}

    rpc GetCurrentEventList(Device) returns (EventList) {}

    rpc ClearCurrentEventList(Device) returns (google.protobuf.Empty) {}

	rpc GetCurrentDevices(Empty) returns (DeviceList) {}
}



