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.