syntax = "proto3";

option go_package = "github.com/opencord/voltha-protos/v5/go/core_adapter";
option java_package = "org.opencord.voltha.core_adapter";

import "voltha_protos/common.proto";
import "voltha_protos/voltha.proto";
import "voltha_protos/openflow_13.proto";
import "voltha_protos/adapter.proto";
import "voltha_protos/device.proto";
import "voltha_protos/extensions.proto";
import "voltha_protos/omci_test.proto";

package core_adapter;

// Core-Adapter messages

message AdapterRegistration {
    adapter.Adapter adapter  = 1;
    device.DeviceTypes dTypes = 2;
}

message ChildDeviceFilter {
    string parent_id = 1;
    string serial_number = 2;
    uint32 onu_id = 3;
    uint32 parent_port_no = 4;
}

message PortFilter {
    string device_id = 1;
    uint32 port = 2;
    device.Port.PortType port_type = 3;
}

message DeviceDiscovery {
    string parent_id = 1;
    uint32 parent_port_no = 2;
    string child_device_type = 3;
    uint32 channel_id = 4;
    string vendor_id = 5;
    string serial_number = 6;
    uint32 onu_id = 7;
}

message DeviceStateFilter {
    string device_id = 1;
    string parent_device_id = 2;
    common.OperStatus.Types oper_status = 3;
    common.ConnectStatus.Types conn_status = 4;
}

message PortState {
    string device_id = 1;
    device.Port.PortType port_type = 2;
    uint32 port_no = 3;
    common.OperStatus.Types oper_status = 4;
}

message PortStateFilter {
    string device_id = 1;
    uint32 port_type_filter = 2;
    common.OperStatus.Types oper_status = 4;
}

message PacketIn {
    string device_id = 1;
    uint32 port = 2;
    bytes packet = 3;
}

message PacketOut {
    string device_id = 1;
    uint32 egress_port_no = 2;
    openflow_13.ofp_packet_out packet = 3;
}

message DeviceReason {
    string device_id = 1;
    string reason = 2;
}

message BulkFlows {
    device.Device device = 1;
    openflow_13.Flows flows = 2;
    openflow_13.FlowGroups groups = 3;
    openflow_13.FlowMetadata flow_metadata = 4;
}

message IncrementalFlows {
    device.Device device = 1;
    openflow_13.FlowChanges flows = 2;
    openflow_13.FlowGroupChanges groups = 3;
    openflow_13.FlowMetadata flow_metadata = 4;
}

message PmConfigsInfo {
    string device_id = 1;
    device.PmConfigs pm_configs = 2;
}

message SwitchCapability {
    openflow_13.ofp_desc desc = 1;
    openflow_13.ofp_switch_features switch_features = 2;
}

message ImageDownloadMessage {
    device.Device device = 1;
    device.ImageDownload image = 2;
}

message OMCITest {
    device.Device device = 1;
    omci.OmciTestRequest request = 2;
}

message SimulateAlarmMessage {
    device.Device device = 1;
    device.SimulateAlarmRequest request = 2;
}

message GetExtValueMessage {
    device.Device parent_device = 1;
    device.Device child_device = 2;
    extension.ValueType.Type value_type=3;
}

message SetExtValueMessage {
    device.Device device = 1;
    extension.ValueSet value=3;
}
