syntax = "proto3";

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

import "voltha_protos/common.proto";
import "voltha_protos/voltha.proto";
import "voltha_protos/openflow_13.proto";
import "voltha_protos/tech_profile.proto";
import "voltha_protos/openolt.proto";
import "voltha_protos/adapter.proto";
import "voltha_protos/device.proto";

package voltha;

//
// Core-Adapter messages
// ****
// ****
// ****
message AdapterRegistration {
    Adapter adapter  = 1;
    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;
    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;
    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 = 1;
    openflow_13.Flows flows = 2;
    openflow_13.FlowGroups groups = 3;
    voltha.FlowMetadata flow_metadata = 4;
}

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

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

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

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

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

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

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

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

//
// Inter-Adapter messages
// ****
// ****
// ****

message OmciMessage {
    bytes message = 1;
    common.ConnectStatus.Types connect_status = 2;
    voltha.Device.ProxyAddress proxy_address = 3;
    string parent_device_id = 4;
    string child_device_id = 5;
}

message TechProfileDownloadMessage {
    string device_id = 1;
    uint32 uni_id = 2;
    string tp_instance_path = 3;
    oneof tech_tp_instance {
        tech_profile.TechProfileInstance tp_instance = 4; // relevant for GPON, XGPON and XGS-PON technologies
        tech_profile.EponTechProfileInstance epon_tp_instance = 5; // relevant for EPON technology
    }
}

message DeleteGemPortMessage {
    string device_id = 1;
    uint32 uni_id = 2;
    string tp_instance_path = 3;
    uint32 gem_port_id = 4;
}

message DeleteTcontMessage {
    string device_id = 1;
    uint32 uni_id = 2;
    string tp_instance_path = 3;
    uint32 alloc_id = 4;
}

message OnuIndicationMessage {
    string device_id = 1;
    openolt.OnuIndication onu_indication = 2;
}

message TechProfileInstanceRequestMessage {
    string device_id = 1;
    string tp_instance_path = 2; // technology profile instance path
    string parent_device_id = 3;
    uint32 parent_pon_port = 4;
    uint32 onu_id = 5;
    uint32 uni_id = 6;
}