mirror of https://gerrit.osmocom.org/osmo-tetra
upper mac: initial SUPPLEMENTARY parsing, fix fake FRAG/END decoding
This commit is contained in:
parent
2e56b6eed0
commit
ec02a9f038
|
@ -136,6 +136,33 @@ static void rx_resrc(struct tetra_tmvsap_prim *tmvp)
|
|||
printf("\n");
|
||||
}
|
||||
|
||||
static void rx_suppl(struct tetra_tmvsap_prim *tmvp)
|
||||
{
|
||||
struct tmv_unitdata_param *tup = &tmvp->u.unitdata;
|
||||
//struct tetra_suppl_decoded sud;
|
||||
int tmpdu_offset;
|
||||
|
||||
#if 0
|
||||
memset(&sud, 0, sizeof(sud));
|
||||
tmpdu_offset = macpdu_decode_suppl(&sud, tup->mac_block, tup->lchan);
|
||||
#else
|
||||
{
|
||||
uint8_t slot_granting = *(tup->mac_block + 17);
|
||||
if (slot_granting)
|
||||
tmpdu_offset = 17+1+8;
|
||||
else
|
||||
tmpdu_offset = 17+1;
|
||||
}
|
||||
#endif
|
||||
|
||||
printf("SUPPLEMENTARY MAC-D-BLOCK ");
|
||||
|
||||
//if (sud.encryption_mode == 0)
|
||||
rx_tm_sdu(tup->mac_block + tmpdu_offset, 100);
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
static void dump_access(struct tetra_access_field *acc, unsigned int num)
|
||||
{
|
||||
printf("ACCESS%u: %c/%u ", num, 'A'+acc->access_code, acc->base_frame_len);
|
||||
|
@ -200,18 +227,30 @@ static int rx_tmv_unitdata_ind(struct tetra_tmvsap_prim *tmvp)
|
|||
case TETRA_LC_BNCH:
|
||||
case TETRA_LC_UNKNOWN:
|
||||
case TETRA_LC_SCH_F:
|
||||
if (pdu_type == TETRA_PDU_T_BROADCAST)
|
||||
switch (pdu_type) {
|
||||
case TETRA_PDU_T_BROADCAST:
|
||||
rx_bcast(tmvp);
|
||||
if (pdu_type == TETRA_PDU_T_MAC_RESOURCE)
|
||||
break;
|
||||
case TETRA_PDU_T_MAC_RESOURCE:
|
||||
rx_resrc(tmvp);
|
||||
break;
|
||||
}
|
||||
if (pdu_type == TETRA_PDU_T_MAC_FRAG_END) {
|
||||
if (tup->mac_block[3] == TETRA_MAC_FRAGE_FRAG) {
|
||||
printf("FRAG/END FRAG: ");
|
||||
rx_tm_sdu(tup->mac_block+4, 100 /*FIXME*/);
|
||||
printf("\n");
|
||||
break;
|
||||
case TETRA_PDU_T_MAC_SUPPL:
|
||||
rx_suppl(tmvp);
|
||||
break;
|
||||
case TETRA_PDU_T_MAC_FRAG_END:
|
||||
if (tup->mac_block[3] == TETRA_MAC_FRAGE_FRAG) {
|
||||
printf("FRAG/END FRAG: ");
|
||||
rx_tm_sdu(tup->mac_block+4, 100 /*FIXME*/);
|
||||
printf("\n");
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case TETRA_LC_BSCH:
|
||||
break;
|
||||
default:
|
||||
printf("STRANGE lchan=%u\n", tup->lchan);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue