- APIs created for profile operations. (insert/delete)
- VoipSystem and VoipUser profiles created for common and user specific voip parameters.

[VOL-4436], [VOL-4444]

Change-Id: I8986f44232a1edebcc4fcb1fda88da94773dd1af
diff --git a/protos/voltha_protos/voip_system_profile.proto b/protos/voltha_protos/voip_system_profile.proto
new file mode 100644
index 0000000..814b086
--- /dev/null
+++ b/protos/voltha_protos/voip_system_profile.proto
@@ -0,0 +1,197 @@
+// 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";
+
+option go_package = "github.com/opencord/voltha-protos/v5/go/voip_system_profile";
+option java_package = "org.opencord.voltha.voip_system_profile";
+
+package voip_system_profile;
+import "google/api/annotations.proto";
+
+message VoipSystemProfileRequest {
+  string key = 1;
+  VoipSystemProfile voipSystemProfile = 2;
+}
+
+// A system wide profile for voip service that can be stored into voltha KV anytime.
+// Designed based on G988-2017 (also designed flexible to be able to be modified later on)
+message VoipSystemProfile {
+  SipConfig sipConfig = 1;
+  VoipConfig voipConfig = 2;
+}
+
+// Common voip fields are grouped here
+message VoipConfig {
+  IpHostConfig ipHostConfig = 1;
+  TcpUdpConfig tcpUdpConfig = 2;
+  VoipVoiceCtp voipVoiceCtp = 3;
+  VoipMediaProfile voipMediaProfile = 4;
+  VoiceServiceProfile voiceServiceProfile = 5;
+  RtpProfile rtpProfile = 6;
+  PptpPotsUni pptpPotsUni = 7;
+}
+
+message IpHostConfig {
+  uint32 ipOptions = 1;
+  string onuIdentifier = 2;
+  string ipAddress = 3;
+  string mask = 4;
+  string gateway = 5;
+  string primaryDns = 6;
+  string secondaryDns = 7;
+  string relayAgentOptions = 8;
+}
+
+message TcpUdpConfig {
+  uint32 protocol = 1;
+  string tosField = 2;
+}
+
+message VoipVoiceCtp {
+  uint32 signallingCode = 1;
+}
+
+message VoipMediaProfile {
+  uint32 faxMode = 1;
+  uint32 codecSelection1 = 2;
+  uint32 packetPeriodSelection1 = 3;
+  uint32 silenceSuppression1 = 4;
+  uint32 codecSelection2 = 5;
+  uint32 packetPeriodSelection2 = 6;
+  uint32 silenceSuppression2 = 7;
+  uint32 codecSelection3 = 8;
+  uint32 packetPeriodSelection3 = 9;
+  uint32 silenceSuppression3 = 10;
+  uint32 codecSelection4 = 11;
+  uint32 packetPeriodSelection4 = 12;
+  uint32 silenceSuppression4 = 13;
+  uint32 oobDtmf = 14;
+}
+
+message VoiceServiceProfile {
+  uint32 announcementType = 1;
+  uint32 jitterTarget = 2;
+  uint32 jitterBufferMax = 3;
+  bool echoCancelInd = 4;
+  uint32 pstnProtocolVariant = 5;
+  uint32 dtmfDigitLevels = 6;
+  uint32 dtmfDigitDuration = 7;
+  uint32 hookFlashMinimumTime = 8;
+}
+
+message RtpProfile {
+  uint32 localPortMin = 1;
+  uint32 localPortMax = 2;
+  string dscpMark = 3;
+  uint32 piggyBackEvents = 4;
+  uint32 toneEvents = 5;
+  uint32 dtmfEvents = 6;
+  uint32 casEvents = 7;
+}
+
+message PptpPotsUni {
+  string arc = 1;
+  string arcInterval = 2;
+  uint32 impedance = 3;
+  uint32 transmissionPath = 4;
+  sint32 rxGain = 5;
+  sint32 txGain = 6;
+  uint32 potsHoldOverTime = 7;
+  uint32 nominalFeedVoltage = 8;
+  uint32 lossOfSoftSwitch = 9;
+}
+
+// Sip specific fields are grouped here
+message SipConfig {
+  SipUserData sipUserData = 1;
+  SipAgentConfig sipAgentConfig = 2;
+  NetworkDialPlan  networkDialPlan = 3;
+  VoipFeatureAccessCodes voipFeatureAccessCodes = 4;
+  VoipApplicationServiceProfile voipApplicationServiceProfile = 5;
+}
+
+message SipUserData {
+  string userPartAor = 1;
+  UsernameAndPassword usernameAndPassword = 2;
+  string voicemailServerSipUri = 3;
+  int32 voicemailSubscriptionExpirationTime = 4;
+  int32 releaseTimer = 5;
+  int32 rohTimer = 6;
+}
+
+message SipAgentConfig {
+  string outboundProxyAddress = 1;
+  string primarySipDns = 2;
+  string secondarySipDns = 3;
+  int32 sipRegExpTime = 4;
+  int32 sipReregHeadStartTime = 5;
+  string SipRegistrar = 6;
+  string softSwitch = 7;
+  SipResponseTable sipResponseTable = 8;
+  bool sipOptionTransmitControl = 9;
+  string sipUriFormat = 10;
+  string redundantSipAgentPointer = 11;
+}
+
+message NetworkDialPlan {
+  uint32 criticalDialTimeout = 1;
+  uint32 partialDialTimeout = 2;
+  uint32 dialPlanFormat = 3;
+  DialPlanTable dialPlanTable = 4;
+}
+
+message UsernameAndPassword {
+  int32 validationScheme = 1;
+}
+
+message SipResponseTable {
+  string sipResponseCode = 1;
+  string tone = 2;
+  string textMessage = 3;
+}
+
+message DialPlanTable {
+  uint32 dialPlanId = 1;
+  uint32 action = 2;
+  string dialPlanToken = 3;
+  uint32 dialPlanTableMaxSize = 4;
+}
+
+message VoipFeatureAccessCodes {
+  string cancelCallWaiting = 1;
+  string callHold = 2;
+  string callPark = 3;
+  string callerIdActivate = 4;
+  string callerIdDeactivate = 5;
+  string doNotDisturbActivation = 6;
+  string doNotDisturbDeactivation = 7;
+  string doNotDisturbPinChange = 8;
+  string emergencyServiceNumber = 9;
+  string intercomService = 10;
+  string unattendedCallTransfer = 11;
+  string attendedCallTransfer = 12;
+}
+
+message VoipApplicationServiceProfile {
+  uint32 cidFeatures = 1;
+  uint32 callWaitingFeatures = 2;
+  uint32 callProgressOrTransferFeatures = 3;
+  uint32 callPresentationFeatures = 4;
+  uint32 directConnectFeature = 5;
+  string directConnectUriPointer = 6;
+  string bridgedLineAgentUriPointer = 7;
+  string conferenceFactoryUriPointer = 8;
+  uint32 dialToneDelayTimer = 9;
+}
\ No newline at end of file