libsmpp34/src/smpp34_params.c

244 lines
5.5 KiB
C

/*
* Copyright (C) 2006 Raul Tremsal
* File : smpp34_params.c
* Author: Raul Tremsal <ultraismo@yahoo.com>
*
* This file is part of libsmpp34 (c-open-smpp3.4 library).
*
* The libsmpp34 library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of the
* License, or (at your option) any later version.
*
* This library 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 Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include "smpp34.h"
#include "smpp34_structs.h"
#include "smpp34_heap.h"
int
build_udad( udad_t **dest, udad_t *source )
{
/* Build new DAD-Chain ************************************************/
udad_t *dummy = (udad_t*)smpp34_malloc(sizeof( udad_t ));
if( dummy == NULL ){
printf("Error in smpp34_malloc()\n" );
return( -1 );
};
memcpy(dummy, source, sizeof( udad_t ));
dummy->next = (*dest);
(*dest) = dummy;
return( 0 );
};
int
destroy_udad( udad_t *sourceList )
{
udad_t *i = NULL;
/* Destroy DAD-Chain **************************************************/
while( sourceList != NULL ){
i = sourceList->next;
smpp34_free((void*)sourceList);
sourceList = i;
};
return( 0 );
};
int
build_dad( dad_t **dest, dad_t *source )
{
/* Build new DAD-Chain ************************************************/
dad_t *dummy = (dad_t*)smpp34_malloc(sizeof( dad_t ));
if( dummy == NULL ){
printf("Error in smpp34_malloc()\n" );
return( -1 );
};
memcpy(dummy, source, sizeof( dad_t ));
dummy->next = (*dest);
(*dest) = dummy;
return( 0 );
};
int
destroy_dad( dad_t *sourceList )
{
dad_t *i = NULL;
/* Destroy DAD-Chain **************************************************/
while( sourceList != NULL ){
i = sourceList->next;
smpp34_free((void*)sourceList);
sourceList = i;
};
return( 0 );
};
int
build_tlv( tlv_t **dest, tlv_t *source )
{
/* Build new TLV-Chain ************************************************/
tlv_t *dummy = (tlv_t*)smpp34_malloc(sizeof( tlv_t ));
if( dummy == NULL ){
printf("Error in smpp34_malloc()\n" );
return( -1 );
};
memcpy(dummy, source, sizeof( tlv_t ));
dummy->next = (*dest);
(*dest) = dummy;
return( 0 );
};
int
destroy_tlv( tlv_t *sourceList )
{
tlv_t *i = NULL;
/* Destroy TLV-Chain **************************************************/
while( sourceList != NULL ){
i = sourceList->next;
smpp34_free((void*)sourceList);
sourceList = i;
};
return( 0 );
};
char* str_tlv_id( uint16_t tlv_id, char* buff )
{
snprintf(buff, SMALL_BUFF, "%s",
#define OPERACION( p_tlv_id ) (tlv_id == p_tlv_id)?#p_tlv_id:
#include "def_list/tlv_id.list"
"Reserved"
#undef OPERACION
);
return( buff );
};
char* str_command_id( uint32_t command, char* buff )
{
snprintf(buff, SMALL_BUFF, "%s",
#define OPERACION( p_command ) (command == p_command)?#p_command:
#include "def_list/command_id.list"
""
#undef OPERACION
);
return( buff );
};
char* str_addr_ton( uint8_t ton, char* buff )
{
snprintf(buff, SMALL_BUFF, "%s",
#define OPERACION( p_command ) (ton == p_command)?#p_command:
#include "def_list/addr_ton.list"
""
#undef OPERACION
);
return( buff );
};
char* str_addr_npi( uint8_t npi, char* buff )
{
snprintf(buff, SMALL_BUFF, "%s",
#define OPERACION( p_command ) (npi == p_command)?#p_command:
#include "def_list/addr_npi.list"
""
#undef OPERACION
);
return( buff );
};
char* str_command_status( uint32_t command, char* buff )
{
snprintf(buff, SMALL_BUFF, "%s",
#define OPERACION( p_command ) (command == p_command)?#p_command:
#include "def_list/command_status.list"
""
#undef OPERACION
);
return( buff );
};
char *test_interface_version( uint8_t interface_version, char* buff )
{
snprintf(buff, SMALL_BUFF, "%s", (interface_version==0x34)?"OK":"" );
return( buff );
};
char *test_dest_flag( uint8_t dest_flag, char* buff )
{
snprintf(buff, SMALL_BUFF, "%s",
#define OPERACION( p_command ) (dest_flag == p_command)?#p_command:
#include "def_list/dest_flag.list"
""
#undef OPERACION
);
return( buff );
};
char *test_sequence_number( uint32_t sequence_number, char* buff )
{
char numero[20];
snprintf(numero, sizeof(numero), "%d", sequence_number);
snprintf(buff, SMALL_BUFF, "%s", (sequence_number>0)?numero:"" );
return( buff );
};
char *nothing( uint32_t var, char* buff )
{
snprintf(buff, SMALL_BUFF, "%s", "OK" );
return( buff );
};
char *valueDec_32( uint32_t var, char *buff )
{
snprintf(buff, SMALL_BUFF, "%d", var);
return( buff );
};
char *valueDec_16( uint16_t var, char *buff )
{
snprintf(buff, SMALL_BUFF, "%d", var);
return( buff );
};
char *valueDec_08( uint8_t var, char* buff )
{
snprintf(buff, SMALL_BUFF, "%d", var);
return( buff );
};