blob: 58f8385f02eac2dff10733e4935c62f6572e69db [file] [log] [blame]
// Copyright 2020 Google LLC
//
// 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
//
// https://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 = "proto2";
package location.nearby.mediums;
option optimize_for = LITE_RUNTIME;
option java_outer_classname = "WebRtcSignalingFramesProto";
option java_package = "com.google.location.nearby.mediums.proto";
message WebRtcSignalingFrame {
enum FrameType {
UNKNOWN_FRAME_TYPE = 0;
OFFER_TYPE = 1;
ANSWER_TYPE = 2;
ICE_CANDIDATES_TYPE = 3;
READY_FOR_SIGNALING_POKE_TYPE = 4;
}
optional PeerId sender_id = 1;
optional FrameType type = 2;
oneof Frame {
Offer offer = 3;
Answer answer = 4;
IceCandidates ice_candidates = 5;
ReadyForSignalingPoke ready_for_signaling_poke = 6;
}
}
// The id of the peer who sent the signaling frame.
message PeerId {
optional string id = 1;
}
// https://en.wikipedia.org/wiki/Session_Description_Protocol
// SDP (Session Description Protocol) is the standard describing a peer-to-peer
// connection. SDP contains the codec, source address, and timing information of
// audio and video. An example message is:
// v=0
// t=0 0
// a=group:BUNDLE data
// a=msid-semantic: WMS
// m=application 9 DTLS/SCTP 5000
// c=IN IP4 0.0.0.0
// b=AS:30
// a=ice-ufrag:zaEf
// a=ice-pwd:w9+RrqMj1RbC++15mNcRoRG5
// a=ice-options:trickle renomination
// a=fingerprint:sha-256
// B3:FE:B9:E1:F4:58:F6:05:A7:0D:3C:E6:E5:0A:44:A0:88:F4:50:90:41:D6:2E:A3:84:D8:C5:0C:40:2E:DB:6D
// a=setup:active
// a=mid:data
// a=sctpmap:5000 webrtc-datachannel 1024
// a=candidate:1 1 UDP 2130706431 10.0.1.1 8998 typ host
// a=candidate:2 1 UDP 1694498815 192.0.2.3 45664 typ srflx raddr
message SessionDescription {
// See the SDP example above.
optional string description = 1;
}
// https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment
// https://www.slideshare.net/saghul/ice-4414037
// An example message contains:
// sdp_mid = data
// sdp_m_line_index = 0
// sdp = candidate:198238137 1 udp 2122262783
// 620:0:1000:fd1f:1cc5:76e0:78ba:6c54 41539 typ host generation 0 ufrag kq7J
// network-id 4 network-cost 10:
message IceCandidate {
// See the lines beginning with a=candidate in the SDP example above.
optional string sdp = 1;
// For valid values, see https://tools.ietf.org/html/rfc4566 -> Media Types
// This ID uniquely identifies a given media stream with which the candidate
// is associated. Example: data
optional string sdp_mid = 2;
// A zero-based index of the m-line describing the media associated with the
// candidate. Example: 0
optional int32 sdp_m_line_index = 3;
}
message IceCandidates {
repeated IceCandidate ice_candidates = 1;
}
message Offer {
optional SessionDescription session_description = 1;
}
message Answer {
optional SessionDescription session_description = 1;
}
// Sent from answerer->offerer once the answerer is ready to receive the offer.
message ReadyForSignalingPoke {}