doubango/tinyMCPTT/include/tinymcptt/packet/tmcptt_mcptt_packet.h
c732d49e
 /* 
175b478c
 
74ca6d11
 *  Copyright (C) 2020, University of the Basque Country (UPV/EHU)
c732d49e
 *
 * Contact for licensing options: <licensing-mcpttclient(at)mcopenplatform(dot)com>
 *       
 * This file is part of MCOP MCPTT Client
 *
 * This is free software: you can redistribute it and/or modify it under the terms of
 * the GNU General Public License as published by the Free Software Foundation, either version 3 
 * of the License, or (at your option) any later version.
 *       
 * This is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
 * See the GNU General Public License for more details.
 *       
 * You should have received a copy of the GNU General Public License along 
 * with this program; if not, write to the Free Software Foundation, Inc., 
 * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 
 #ifndef TINYMCPTT_MCPTT_PACKET_H
 #define TINYMCPTT_MCPTT_PACKET_H
 
 #include "tinymcptt_config.h"
 #include "tinymcptt/packet/tmcptt_mcptt_packet.h"
 #include "tinymcptt/packet/tmcptt_mcptt_packet_specific.h"
 
 #define MCPTT_PROTO_NAME "MCPT"
 
 TMCPTT_BEGIN_DECLS
 
 /* MCPTT message type header field */
 
 typedef enum {
 	MCPTT_REQUEST				= 0,  //0b00000,
 	MCPTT_GRANTED				= 1,  //0b00001,
 	MCPTT_GRANTED_ACK			= 17, //0b10001,
 	MCPTT_DENY					= 3,  //0b00011,
 	MCPTT_DENY_ACK				= 19, //0b10011,
 	MCPTT_RELEASE				= 4,  //0b00100,
 	MCPTT_RELEASE_ACK			= 20, //0b10100,
 	MCPTT_IDLE					= 5,  //0b00101,
 	MCPTT_IDLE_ACK				= 21, //0b10101,
 	MCPTT_TAKEN					= 2,  //0b00010,
 	MCPTT_TAKEN_ACK				= 18, //0b10010,
 	MCPTT_REVOKE				= 6,  //0b00110,
 	MCPTT_QUEUE_POS_REQ			= 8,  //0b01000,
 	MCPTT_QUEUE_POS_INFO		= 9,  //0b01001,
 	MCPTT_QUEUE_POS_INFO_ACK	= 25, //0b11001,
 	MCPTT_ACK					= 10, //0b01010
175b478c
 	MCPTT_ACK_ACK				= 26, //0b11010
c732d49e
 } tmcptt_mcptt_packet_type_t;
 
 /* MCPTT specific field ids */
 typedef enum {
   FID_FLOOR_PRIORITY       = 0x000, // =0b00000000,
   FID_DURATION             = 0x001, // =0b00000001,
   FID_REJECT_CAUSE         = 0x002, // =0b00000010,
   FID_QUEUE_INFO           = 0x003, // =0b00000011,
   FID_GRANTED_PARTY_ID     = 0x004, // =0b00000100,
   FID_FLOOR_REQ_PERMISSION = 0x005, // =0b00000101,
   FID_USER_ID              = 0x006, // =0b00000110,
   FID_QUEUE_SIZE           = 0x007, // =0b00000111,
   FID_MSG_SEQ_NUMBER       = 0x008, // =0b00001000,
   FID_QUEUED_USER_ID       = 0x009, // =0b00001001,
   FID_SOURCE               = 0x00a, // =0b00001010,
   FID_TRACK_INFO           = 0x00b, // =0b00001011,
   FID_MESSAGE_TYPE         = 0x00c, // =0b00001100,
   FID_FLOOR_INDICATOR      = 0x00d, // =0b00001101,
   FID_SSRC     = 0x00e, // =0b00001110,
 
   FID_FLOOR_PRIORITY_OLD   =0x66,//= 102, // =0b01100110,
   FID_DURATION_OLD         =0x67,//= 103, // =0b01100111,
   FID_REJECT_CAUSE_OLD     =0x68,//= 104, // =0b01101000,
   FID_QUEUE_INFO_OLD       =0x69,// = 105, // =0b01101001,
   FID_GRANTED_PARTY_ID_OLD =0x6a,//= 106, // =0b01101010,
   FID_FLOOR_REQ_PERMISSION_OLD =0x6c,//= 108, // =0b01101100,
   FID_USER_ID_OLD             =0x6d,//= 109, // =0b01101101,
   FID_QUEUE_SIZE_OLD           =0x6e,//= 110, // =0b01101110,
   FID_MSG_SEQ_NUMBER_OLD       =0x6f,//= 111, // =0b01101111,
   FID_QUEUED_USER_ID_OLD   =0x70, //= 112, // =0b01110000,
   FID_SOURCE_OLD         =0x71,// = 113, // =0b01110001,
   FID_TRACK_INFO_OLD     =0x72,//  = 114, // =0b01110010,
   FID_MESSAGE_TYPE_OLD   =0x73,//  = 115, // =0b01110011
   FID_FLOOR_INDICATOR_OLD =0x74// = 116 // =0b01110100
 } tmcptt_mcptt_packet_fid_t;
 
 
 //Old version SSRC
 //typedef tmcptt_mcptt_packet_specific_ssrc_t tmcptt_mcptt_packet_ssrc_t;
 
 /* Some constant values */
 typedef enum {
   FLR_SOURCE_PARTICIPANT     = 0,
   FLR_SOURCE_PARTICIPATING   = 1,
   FLR_SOURCE_CONTROLLING     = 2,
   FLR_SOURCE_NON_CONTROLLING = 3
 } tmcptt_mcptt_packet_source_value_t;
 
 typedef enum {
   PERMISSION_TO_REQ_NOT_PERMITTED = 0,
   PERMISSION_TO_REQ_PERMITTED     = 1
 } tmcptt_mcptt_packet_permission_to_request_t;
 
 typedef enum {
   QUEUEING_NOT_SUPPORTED = 0,
   QUEUEING_SUPPORTED     = 1
 } tmcptt_mcptt_packet_queueing_capability_t;
 
 typedef enum {
   FLR_IND_NORMAL_CALL         = 0x8000, //0b1000000000000000,
   FLR_IND_BROADCAST_GRP_CALL  = 0x4000, //0b0100000000000000,
   FLR_IND_SYSTEM_CALL         = 0x2000, //0b0010000000000000,
   FLR_IND_EMERGENCY_CALL      = 0x1000, //0b0001000000000000,
   FLR_IND_IMMINENT_PERIL_CALL = 0x0800, //0b0000100000000000,
   FLR_IND_QUEUEING_SUPPORTED  = 0x0400, //0b0000010000000000
   FLR_IND_DUAL_FLOOR          = 0x0200  //0b0000001000000000
 } tmcptt_mcptt_packet_floor_indicator_t;
 
 TMCPTT_END_DECLS
 
 #endif /* TINYMCPTT_MCPTT_PACKET_H */