// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.telephony.snoop;

using zx;

type Direction = strict enum {
    FROM_MODEM = 1;
    TO_MODEM = 2;
};

type QmiMessage = struct {
    timestamp zx.time;
    direction Direction;
    is_partial_copy bool;
    opaque_bytes array<uint8, 256>;
};

//TODO(jiamingw): change it to xunion after transport driver is converted to LLCPP
type Message = strict union {
    1: qmi_message QmiMessage;
};

/// Protocol for forwarding messages to Snooper.
protocol Publisher {
    SendMessage(struct {
        msg Message;
    });
};

/// Protocol for forwarding Message from Snooper.
@discoverable
protocol Snooper {
    /// Get number of devices that connect to Snooper.
    GetDeviceNum() -> (struct {
        device_num uint32;
    });
    /// Snoop message which receives by Snooper client.
    -> OnMessage(struct {
        msg Message;
    });
};
