mirror of
https://github.com/SatDump/SatDump
synced 2026-08-13 17:47:30 -04:00
47 lines
1.4 KiB
C++
47 lines
1.4 KiB
C++
|
|
#include "dvb_mpe.h"
|
||
|
|
|
||
|
|
namespace mpeg_ts
|
||
|
|
{
|
||
|
|
void MPEHeader::parse(uint8_t *frm)
|
||
|
|
{
|
||
|
|
table_id = frm[0];
|
||
|
|
section_syntax_indicator = frm[1] >> 7;
|
||
|
|
private_indicator = (frm[1] >> 6) & 1;
|
||
|
|
section_length = (frm[1] & 0x0F) << 8 | frm[2];
|
||
|
|
mac_address_6 = frm[3];
|
||
|
|
mac_address_5 = frm[4];
|
||
|
|
payload_scrambling_control = (frm[5] >> 4) & 0b11;
|
||
|
|
address_scrambling_control = (frm[5] >> 2) & 0b11;
|
||
|
|
llc_snap_flag = (frm[5] >> 1) & 1;
|
||
|
|
current_next_indicator = frm[5] & 1;
|
||
|
|
section_number = frm[6];
|
||
|
|
last_section_number = frm[7];
|
||
|
|
mac_address_4 = frm[8];
|
||
|
|
mac_address_3 = frm[9];
|
||
|
|
mac_address_2 = frm[10];
|
||
|
|
mac_address_1 = frm[11];
|
||
|
|
}
|
||
|
|
|
||
|
|
void IPv4Header::parse(uint8_t *frm)
|
||
|
|
{
|
||
|
|
version = frm[0] >> 4;
|
||
|
|
ihl = frm[1] & 0x0F;
|
||
|
|
dscp = frm[2] >> 2;
|
||
|
|
ecn = frm[2] & 0b11;
|
||
|
|
total_length = frm[3] << 8 | frm[4];
|
||
|
|
idenditication = frm[5] << 8 | frm[6];
|
||
|
|
flags = frm[7] >> 5;
|
||
|
|
fragment_offset = (frm[7] & 0b11111) << 8 | frm[8];
|
||
|
|
time_to_live = frm[9];
|
||
|
|
protocol = frm[10];
|
||
|
|
header_checksum = frm[22] << 8 | frm[11];
|
||
|
|
source_ip_1 = frm[12];
|
||
|
|
source_ip_2 = frm[13];
|
||
|
|
source_ip_3 = frm[14];
|
||
|
|
source_ip_4 = frm[15];
|
||
|
|
target_ip_1 = frm[16];
|
||
|
|
target_ip_2 = frm[17];
|
||
|
|
target_ip_3 = frm[18];
|
||
|
|
target_ip_4 = frm[19];
|
||
|
|
}
|
||
|
|
};
|