mirror of https://gerrit.osmocom.org/osmo-tetra
fix D-SETUP parser
This commit is contained in:
parent
6b53e4d928
commit
6d38669f05
|
@ -291,6 +291,10 @@ uint parse_d_setup(struct tetra_mac_state *tms, struct msgb *msg, unsigned int l
|
|||
char tmpstr2[1024];
|
||||
struct tetra_resrc_decoded rsd;
|
||||
int tmpdu_offset;
|
||||
uint16_t notifindic=0;
|
||||
uint32_t tempaddr=0;
|
||||
uint16_t cpti=0;
|
||||
|
||||
memset(&rsd, 0, sizeof(rsd));
|
||||
tmpdu_offset = macpdu_decode_resource(&rsd, msg->l1h);
|
||||
|
||||
|
@ -307,33 +311,44 @@ uint parse_d_setup(struct tetra_mac_state *tms, struct msgb *msg, unsigned int l
|
|||
m=2; uint16_t txgrant=bits_to_uint(bits+n, m); n=n+m;
|
||||
m=1; uint16_t txperm=bits_to_uint(bits+n, m); n=n+m;
|
||||
m=4; uint16_t callprio=bits_to_uint(bits+n, m); n=n+m;
|
||||
m=6; uint16_t notifindic=bits_to_uint(bits+n, m); n=n+m;
|
||||
m=24; uint32_t tempaddr=bits_to_uint(bits+n, m); n=n+m;
|
||||
m=2; uint16_t cpti=bits_to_uint(bits+n, m); n=n+m;
|
||||
switch(cpti)
|
||||
m=1; uint8_t obit=bits_to_uint(bits+n, m); n=n+m;
|
||||
if (obit)
|
||||
{
|
||||
case 0: /* SNA */
|
||||
m=8; callingssi=bits_to_uint(bits+n, m); n=n+m;
|
||||
break;
|
||||
case 1: /* SSI */
|
||||
m=24; callingssi=bits_to_uint(bits+n, m); n=n+m;
|
||||
break;
|
||||
case 2: /* TETRA Subscriber Identity (TSI) */
|
||||
m=24; callingssi=bits_to_uint(bits+n, m); n=n+m;
|
||||
m=24; callingext=bits_to_uint(bits+n, m); n=n+m;
|
||||
break;
|
||||
case 3: /* reserved ? */
|
||||
break;
|
||||
m=1; uint8_t pbit_notifindic=bits_to_uint(bits+n, m); n=n+m;
|
||||
if (pbit_notifindic) {
|
||||
m=6; notifindic=bits_to_uint(bits+n, m); n=n+m;
|
||||
}
|
||||
m=1; uint8_t pbit_tempaddr=bits_to_uint(bits+n, m); n=n+m;
|
||||
if (pbit_tempaddr) {
|
||||
m=24; tempaddr=bits_to_uint(bits+n, m); n=n+m;
|
||||
}
|
||||
m=1; uint8_t pbit_cpti=bits_to_uint(bits+n, m); n=n+m;
|
||||
if (pbit_cpti) {
|
||||
m=2; cpti=bits_to_uint(bits+n, m); n=n+m;
|
||||
switch(cpti)
|
||||
{
|
||||
case 0: /* SNA */
|
||||
m=8; callingssi=bits_to_uint(bits+n, m); n=n+m;
|
||||
break;
|
||||
case 1: /* SSI */
|
||||
m=24; callingssi=bits_to_uint(bits+n, m); n=n+m;
|
||||
break;
|
||||
case 2: /* TETRA Subscriber Identity (TSI) */
|
||||
m=24; callingssi=bits_to_uint(bits+n, m); n=n+m;
|
||||
m=24; callingext=bits_to_uint(bits+n, m); n=n+m;
|
||||
break;
|
||||
case 3: /* reserved ? */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
printf ("\nCall identifier:%i Call timeout:%i Hookmethod:%i Duplex:%i\n",callident,calltimeout,hookmethod,duplex);
|
||||
printf("Basicinfo:0x%2.2X Txgrant:%i TXperm:%i Callprio:%i\n",basicinfo,txgrant,txperm,callprio);
|
||||
printf("NotificationID:%i Tempaddr:%i CPTI:%i CallingSSI:%i CallingExt:%i\n",notifindic,tempaddr,cpti,callingssi,callingext);
|
||||
|
||||
sprintf(tmpstr2,"TETMON_begin FUNC:DSETUPDEC IDX:%i SSI:%i SSI2:%i CID:%i NID:%i RX:%i TETMON_end",rsd.addr.usage_marker,rsd.addr.ssi,tempaddr,callident,notifindic,tetra_hack_rxid);
|
||||
sprintf(tmpstr2,"TETMON_begin FUNC:DSETUPDEC IDX:%i SSI:%i SSI2:%i CID:%i NID:%i RX:%i TETMON_end",rsd.addr.usage_marker,rsd.addr.ssi,callingssi,callident,notifindic,tetra_hack_rxid);
|
||||
sendto(tetra_hack_live_socket, (char *)&tmpstr2, strlen((char *)&tmpstr2)+1, 0, (struct sockaddr *)&tetra_hack_live_sockaddr, tetra_hack_socklen);
|
||||
|
||||
}
|
||||
|
||||
/* decode 18.5.17 Neighbour cell information for CA */
|
||||
|
|
Loading…
Reference in New Issue