La función smpp34_unpack2( ... )
tiene el mismo efecto que smpp34_unpack( ... ), pero no
necesita el parámetro de command_id. En la librería todas las
funciones de pack/unpack
necesitan el command_id ya que el parsing del buffer depende de este parámetro.
La función toma tres parámetros y retorna un valor entero que describe el
resultado de la operación. Un valor distinto de 0 en el retorno,
indica que hubo un error en el intento de desempaquetado, luego hay una
descripción en modo texto en la variable global smpp34_strerror. El detalle del código de la función
se muestra abajo.
extern int smpp34_errno;
extern char smpp34_strerror[2048];
int smpp34_unpack2( void *tt, /* out */
uint8_t *ptrBuf, /* in */
int ptrLen, /* in */ )
{
uint32_t cmdid;
uint32_t tempo;
memcpy(&tempo, ptrBuf + 4, sizeof(uint32_t)); /* get command_id PDU */
cmdid = ntohl( tempo );
return( smpp34_unpack(cmdid, tt, ptrBuf, ptrLen) );
};
|
tt: Es un puntero a una de las estructuras de datos listadas en la introducción y que se corresponde con el valor del primer parámetro. El puntero a dicha esctructura describe donde va a volcare el contenido del buffer.
ptrBuf: es un puntero a un buffer, donde va a almacenado el PDU empacado.
ptrLen: en esta variable va el largo del buffer anteriormente descripto.