diff options
Diffstat (limited to 'branches/1.0/tinySIGCOMP/src/tcomp_params.c')
-rw-r--r-- | branches/1.0/tinySIGCOMP/src/tcomp_params.c | 297 |
1 files changed, 0 insertions, 297 deletions
diff --git a/branches/1.0/tinySIGCOMP/src/tcomp_params.c b/branches/1.0/tinySIGCOMP/src/tcomp_params.c deleted file mode 100644 index 93fabec..0000000 --- a/branches/1.0/tinySIGCOMP/src/tcomp_params.c +++ /dev/null @@ -1,297 +0,0 @@ -/* -* Copyright (C) 2009-2010 Mamadou Diop. -* -* Contact: Mamadou Diop <diopmamadou(at)doubango.org> -* -* This file is part of Open Source Doubango Framework. -* -* DOUBANGO 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. -* -* DOUBANGO 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 DOUBANGO. -* -*/ - -/**@file tcomp_params.c - * @brief SigComp parameters as per rfc 3320 subclause 3.3. - * - * @author Mamadou Diop <diopmamadou(at)yahoo.fr> - * - * @date Created: Sat Nov 8 16:54:58 2009 mdiop - */ -#include "tcomp_params.h" -#include "tsk_binaryutils.h" -#include "tsk_memory.h" -#include "tsk_debug.h" - -tcomp_params_t* tcomp_params_create() -{ - return tsk_object_new(tcomp_params_def_t); -} - -/** -* Checks if CPB, DMS and SMS values have been initialized. -* @param params The sigcomp parameters containing the values to check. -* @retval @a tsk_true if values have been set and @a tsk_false otherwise. -*/ -tsk_bool_t tcomp_params_hasCpbDmsSms(tcomp_params_t* params) -{ - if(params){ - return (params->cpbCode || params->dmsCode || params->smsCode) ? tsk_true : tsk_false; - } - else{ - TSK_DEBUG_WARN("Invalid parameter."); - } - - return tsk_false; -} - -/** -* Sets CPB bits. -* @param params The sigcomp parameters containing cpb bits to set. -* @param cpbCode The new CPB code. -* @sa @ref tcomp_params_setCpbValue. -*/ -void tcomp_params_setCpbCode(tcomp_params_t* params, uint8_t cpbCode) -{ - if(params){ - params->cpbCode = cpbCode; - params->cpbValue = sigcomp_encoding_cpb[cpbCode]; - } - else{ - TSK_DEBUG_ERROR("Invalid parameter."); - } -} - -/** -* Sets CPB bits. -* @param params The sigcomp parameters containing cpb bits to set. -* @param cpbValue The new CPB value. -* @sa @ref tcomp_params_setCpbCode. -*/ -int tcomp_params_setCpbValue(tcomp_params_t* params, uint8_t cpbValue) -{ - if(params) - { - uint8_t code; - for(code=0; code<4; code++){ - if( cpbValue <= sigcomp_encoding_cpb[code]){ - params->cpbCode = code; - break; - } - } - params->cpbValue = cpbValue; - return 0; - } - else{ - TSK_DEBUG_ERROR("Invalid parameter."); - return -1; - } -} - -/** -* Sets DMS bits. -* @param params The sigcomp parameters containing dms bits to set. -* @param dmsCode The new DMS code. -* @sa @ref tcomp_params_setDmsValue. -*/ -void tcomp_params_setDmsCode(tcomp_params_t* params, uint8_t dmsCode) -{ - if(params){ - params->dmsCode = dmsCode; - params->dmsValue = sigcomp_encoding_dms[dmsCode]; - } - else{ - TSK_DEBUG_ERROR("Invalid parameter."); - } -} - -/** -* Sets DMS bits. -* @param params The sigcomp parameters containing dms bits to set. -* @param dmsValue The new DMS value. -* @sa @ref tcomp_params_setDmsCode. -*/ -int tcomp_params_setDmsValue(tcomp_params_t* params, uint32_t dmsValue) -{ - if(params){ - uint8_t code; - for(code=1; code<8; code++){ - if(dmsValue <= sigcomp_encoding_dms[code]){ - params->dmsCode = code; - break; - } - } - params->dmsValue = dmsValue; - return 0; - } - else{ - TSK_DEBUG_ERROR("Invalid parameter."); - return -1; - } -} - -/** -* Sets SMS bits. -* @param params The sigcomp parameters containing sms bits to set. -* @param smsCode The new SMS code. -* @sa @ref tcomp_params_setSmsValue. -*/ -void tcomp_params_setSmsCode(tcomp_params_t* params, uint8_t smsCode) -{ - if(params){ - params->smsCode = smsCode; - params->smsValue = sigcomp_encoding_sms[smsCode]; - } - else{ - TSK_DEBUG_ERROR("Invalid parameter."); - } -} - -/** -* Sets SMS bits. -* @param params The sigcomp parameters containing sms bits to set. -* @param smsValue The new SMS value. -* @sa @ref tcomp_params_setSmsCode -*/ -int tcomp_params_setSmsValue(tcomp_params_t* params, uint32_t smsValue) -{ - if(params){ - uint8_t code; - for(code = 0; code < 8; code++){ - if(smsValue <= sigcomp_encoding_sms[code]){ - params->smsCode = code; - break; - } - } - params->smsValue = smsValue; - return 0; - } - else{ - TSK_DEBUG_ERROR("Invalid parameter."); - return -1; - } -} - -/** -* Gets CPB, DMS and SMS values as a single 2-bytes value. -* @param params The sigcomp parameters containing the values. -* @retval CPB||DMS||SMS as 2-bytes value. -* @sa @ref tcomp_params_setParameters -*/ -uint16_t tcomp_params_getParameters(tcomp_params_t* params) -{ - if(params){ - /* - +---+---+---+---+---+---+---+---+ - | cpb | dms | sms | - +---+---+---+---+---+---+---+---+ - | SigComp_version | - +---+---+---+---+---+---+---+---+ - */ - uint16_t result = ((params->cpbCode<<6)|(params->dmsCode<<3)|params->smsCode); - result <<=8; - return (result | params->SigComp_version); - } - else{ - TSK_DEBUG_ERROR("Invalid parameter."); - } - - return 0; -} - -/** -* Sets CPB, DMS and SMS values. -* @param params The sigcomp parameters containing the values to set. -* @param sigCompParameters New values as 2-bytes value. -* @sa @ref tcomp_params_getParameters. -*/ -void tcomp_params_setParameters(tcomp_params_t* params, uint16_t sigCompParameters) -{ - if(params){ - /* - +---+---+---+---+---+---+---+---+ - | cpb | dms | sms | - +---+---+---+---+---+---+---+---+ - | SigComp_version | - +---+---+---+---+---+---+---+---+ - */ - tcomp_params_setCpbCode( params, (sigCompParameters>>14) ); - tcomp_params_setDmsCode( params, ((sigCompParameters>>11) & 0x07) ); - tcomp_params_setSmsCode( params, ((sigCompParameters>>8) & 0x07) ); - params->SigComp_version = ( (sigCompParameters & 0x00ff) ); - } - else{ - TSK_DEBUG_ERROR("Invalid parameter."); - } -} - -/** -* Resets all parameters. -* @param params The params to reset. -*/ -void tcomp_params_reset(tcomp_params_t* params) -{ - if(params){ - params->cpbCode = params->dmsCode = params->smsCode = params->SigComp_version = 0; - params->cpbValue = params->dmsValue = params->smsValue = 0; - - tsk_list_clear_items(params->returnedStates); - } - else{ - TSK_DEBUG_WARN("Invalid parameter."); - } -} - - - - - - - - -//======================================================== -// SigComp parameters object definition -// -static tsk_object_t* tcomp_params_ctor(tsk_object_t *self, va_list * app) -{ - tcomp_params_t *params = self; - if(params){ - //tcomp_params_reset(params); - params->returnedStates = tsk_list_create(); - } - else{ - TSK_DEBUG_ERROR("Failed to create new sigcomp params."); - } - - return self; -} -static tsk_object_t* tcomp_params_dtor(tsk_object_t *self) -{ - tcomp_params_t *params = self; - if(params){ - TSK_OBJECT_SAFE_FREE(params->returnedStates); - } - else{ - TSK_DEBUG_WARN("NULL sigcomp parameters."); - } - - return self; -} - -static const tsk_object_def_t tcomp_params_def_s = -{ - sizeof(tcomp_params_t), - tcomp_params_ctor, - tcomp_params_dtor, - tsk_null -}; -const tsk_object_def_t *tcomp_params_def_t = &tcomp_params_def_s; |