// 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;


message DmiEvent {
   string event_name= 1;
}

message DmiCreateEventResponse {
    int32 status_code = 1;
    string message = 2;
}

service BBsim_dmi {
    // Ask the DMI Server to create an event
    rpc CreateEvent (DmiEvent) returns (DmiCreateEventResponse){
    }
}
