blob: d862c5400fa80e2793c7eb332e2f8132bf10983d [file] [log] [blame]
// Copyright (c) 2018 Open Networking Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at:
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package bbsim;
import "voltha_protos/openolt.proto";
import "voltha_protos/tech_profile.proto";
// Models
message PONPort {
int32 ID = 1;
string OperState = 2;
}
message NNIPort {
int32 ID = 1;
string OperState = 2;
}
message Olt {
int32 ID = 1;
string SerialNumber = 2;
string OperState = 3;
string InternalState = 4;
repeated NNIPort NNIPorts = 5;
repeated PONPort PONPorts = 6;
}
message ONU {
int32 ID = 1;
string SerialNumber = 2;
string OperState = 3;
string InternalState = 4;
int32 PonPortID = 5;
int32 STag = 6;
int32 CTag = 7;
string HwAddress = 8;
int32 PortNo = 9;
}
message ONUTrafficSchedulers {
tech_profile.TrafficSchedulers traffSchedulers = 1;
}
message ONUs {
repeated ONU items = 1;
}
// Inputs
message ONURequest {
string SerialNumber = 1;
}
// Alarms
message AlarmType {
// These types correspond to the messages permitted in the oneof
// in AlarmIndication in the openolt protos
enum Types {
LOS = 0; // LOS is an OLT alarm for an entire PON
DYING_GASP = 1;
ONU_ALARM = 2;
ONU_STARTUP_FAILURE = 3;
ONU_SIGNAL_DEGRADE = 4;
ONU_DRIFT_OF_WINDOW = 5;
ONU_LOSS_OF_OMCI_CHANNEL = 6;
ONU_SIGNALS_FAILURE = 7;
ONU_TRANSMISSION_INTERFERENCE_WARNING = 8;
ONU_ACTIVATION_FAILURE = 9;
ONU_PROCESSING_ERROR = 10;
ONU_LOSS_OF_KEY_SYNC_FAILURE = 11;
ONU_ITU_PON_STATS = 12;
// These break out ONU_ALARM, which is a single message, but
// includes statuses for these six alarms.
ONU_ALARM_LOS = 13;
ONU_ALARM_LOB = 14;
ONU_ALARM_LOPC_MISS = 15;
ONU_ALARM_LOPC_MIC_ERROR = 16;
ONU_ALARM_LOFI = 17;
ONU_ALARM_LOAMI = 18;
}
}
message AlarmParameter {
string Key = 1;
string Value = 2;
}
// ONUAlarmRequest includes fields common to every Onu alarm,
// plus an optional list of AlarmParameter list that can be used
// to set additional fields in alarms that support them.
message ONUAlarmRequest {
string AlarmType = 1; // name of alarm to raise
string SerialNumber = 2; // serial number of ONU
string Status = 3; // status of Alarm
repeated AlarmParameter Parameters = 4; // optional list of additional parameters
}
// OLT alarm request
message OLTAlarmRequest {
uint32 InterfaceID = 1; // Switch Interface Id
string InterfaceType = 2; // PON or NNI Type
string Status = 3; // Interface Operstatus
}
// Utils
message VersionNumber {
string version = 1;
string buildTime = 2;
string commitHash = 3;
string gitStatus = 4;
}
message LogLevel {
string level = 1;
bool caller = 2;
}
message Response {
int32 status_code = 1;
string message = 2;
}
enum SubActionTypes {
JOIN = 0;
LEAVE = 1;
JOINV3 = 2;
}
message IgmpRequest {
ONURequest OnuReq = 1;
SubActionTypes SubActionVal = 2;
}
message Flows {
uint32 flow_count = 1;
repeated openolt.Flow flows = 2;
}
message Empty {}
service BBSim {
rpc Version(Empty) returns (VersionNumber) {}
rpc GetOlt(Empty) returns (Olt) {}
rpc PoweronOlt(Empty) returns (Response) {}
rpc ShutdownOlt(Empty) returns (Response) {}
rpc RebootOlt(Empty) returns (Response) {}
rpc GetONUs(Empty) returns (ONUs) {}
rpc GetONU(ONURequest) returns (ONU) {}
rpc SetLogLevel(LogLevel) returns (LogLevel) {}
rpc ShutdownONU (ONURequest) returns (Response) {}
rpc PoweronONU (ONURequest) returns (Response) {}
rpc RestartEapol (ONURequest) returns (Response) {}
rpc RestartDhcp (ONURequest) returns (Response) {}
rpc SetOnuAlarmIndication (ONUAlarmRequest) returns (Response) {}
rpc SetOltAlarmIndication (OLTAlarmRequest) returns (Response) {}
rpc GetFlows(ONURequest) returns(Flows) {}
rpc ChangeIgmpState (IgmpRequest) returns (Response) {}
rpc GetOnuTrafficSchedulers (ONURequest) returns (ONUTrafficSchedulers) {}
}