| // 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 {} |