// 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 Bryan Biedenkapp, N2PLL * */ #if !defined(__CONTROL_OCTET_H__) #define __CONTROL_OCTET_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 DFSI control octet packet. // // Byte 0 // Bit 7 6 5 4 3 2 1 0 // +-+-+-+-+-+-+-+-+ // |S|C| BHC | // +-+-+-+-+-+-+-+-+ // --------------------------------------------------------------------------- class HOST_SW_API ControlOctet { public: static const uint8_t LENGTH = 1; /// Initializes a copy instance of the ControlOctet class. ControlOctet(); /// Initializes a copy instance of the ControlOctet class. ControlOctet(uint8_t* data); /// Decode a control octet frame. bool decode(const uint8_t* data); /// Encode a control octet frame. void encode(uint8_t* data); public: /// __PROPERTY(bool, signal, Signal); /// Indicates a compact (1) or verbose (0) block header. __PROPERTY(bool, compact, Compact); /// Number of block headers following this control octet. __PROPERTY(uint8_t, blockHeaderCnt, BlockHeaderCnt); }; } // namespace dfsi } // namespace p25 #endif // __CONTROL_OCTET_H__