Je suis venu à connaître http://cgit.osmocom.org/libosmo-asn1-tcap/ et pourrait compiler la bibliothèque. Je fais des expériences simples avec asn.1. Je suivais des données TCAP (commencer): (hexdump des données ci-dessous):libosmo-asn1-tcap compilé mais ber_decoder ne fonctionnait pas
0x000000: 62 6b 48 04 40 f0 fa 2f [email protected]/
0x000008: 6b 43 28 41 06 07 00 11 kC(A....
0x000010: 86 05 01 01 01 a0 36 60 ......6`
0x000018: 34 80 02 07 80 a1 09 06 4.......
0x000020: 07 04 00 00 01 00 13 02 ........
0x000028: be 23 28 21 06 07 04 00 .#(!....
0x000030: 00 01 01 01 01 a0 16 a0 ........
0x000038: 14 80 09 96 74 00 34 00 ....t.4.
0x000040: 46 20 56 f4 81 07 91 88 F V.....
0x000048: 10 05 51 89 00 6c 1e a1 ..Q..l..
0x000050: 1c 02 01 80 02 01 3b 30 ......;0
0x000058: 14 04 01 0f 04 05 aa 5a .......Z
0x000060: ac 36 02 80 08 91 88 10 .6......
0x000068: 35 64 91 59 f5 5d.Y.
0x62 est tcap 'commencer'. La longueur des données suit dans l'octet suivant. Maintenant, j'ai le code suivant pour décoder les données. Mais ne fonctionne pas:
#include <TCMessage.h>
void tcap_decode(const void *buf, size_t len)
{
asn_dec_rval_t rval;
TCMessage_t *pdu = 0;
rval = asn_DEF_TCMessage.ber_decoder(0,
&asn_DEF_TCMessage,
(void **) &pdu,
buf, len, 0);
if (rval.code == RC_OK) {
fprintf(stderr, "Decoded successfully\n");
} else {
/* Free partially decoded data */
fprintf(stderr, "Decode failed, Freeing partially parased data structure\n");
}
asn_DEF_TCMessage.free_struct(&asn_DEF_TCMessage, pdu, 0);
}
Veuillez suggérer ce que je peux faire pour que le décodeur fonctionne correctement. J'ai essayé plusieurs façons, par exemple, sauter deux octets (type + longueur) mais pas de chance. Je ne suis pas sûr si le problème est dans le libosmo-asn1-tcap.
Merci d'avance.