// SPDX-License-Identifier: GPL-2.0-only /** * Digital Voice Modem - DFSI Peer Application * GPLv2 Open Source. Use is subject to license terms. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * @package DVM / DFSI Peer Application * @derivedfrom MMDVMHost (https://github.com/g4klx/MMDVMHost) * @license GPLv2 License (https://opensource.org/licenses/GPL-2.0) * * Copyright (C) 2024 Patrick McDonnell, W3AXL * Copyright (C) 2024 Bryan Biedenkapp, N2PLL * */ #if !defined(__MOT_START_OF_STREAM_H__) #define __MOT_START_OF_STREAM_H__ #include "Defines.h" #include "common/Defines.h" #include "common/Log.h" #include "common/Utils.h" #include "frames/FrameDefines.h" namespace p25 { namespace dfsi { // --------------------------------------------------------------------------- // Class Declaration // Implements a P25 Motorola start of stream packet. // // Byte 0 1 2 3 // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // | Fixed Mark | RT Mode Flag | Start/Stop | Type Flag | // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // | Reserved | // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // | | // +-+-+-+-+-+-+-+-+ // --------------------------------------------------------------------------- class HOST_SW_API MotStartOfStream { public: static const uint8_t LENGTH = 10; static const uint8_t FIXED_MARKER = 0x02; /// Initializes a copy instance of the MotStartOfStream class. MotStartOfStream(); /// Initializes a copy instance of the MotStartOfStream class. MotStartOfStream(uint8_t* data); /// Decode a start of stream frame. bool decode(const uint8_t* data); /// Encode a start of stream frame. void encode(uint8_t* data); public: /// __PROPERTY(uint8_t, marker, Marker); /// __PROPERTY(RTFlag::E, rt, RT); /// __PROPERTY(StartStopFlag::E, startStop, StartStop); /// __PROPERTY(StreamTypeFlag::E, streamType, StreamType); }; } // namespace dfsi } // namespace p25 #endif // __MOT_START_OF_STREAM_H__