blob: 381aaa2c845fdba948e63d8529de829a88922e3d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
/* -*- c++ -*- */
/*
* Copyright 2014 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
*/
#ifndef INCLUDED_GR_DTV_ATSC_SYMINFO_H
#define INCLUDED_GR_DTV_ATSC_SYMINFO_H
namespace gr {
namespace dtv {
namespace atsc {
static constexpr unsigned int SI_SEGMENT_NUM_MASK = 0x1ff;
static constexpr unsigned int SI_FIELD_SYNC_SEGMENT_NUM =
SI_SEGMENT_NUM_MASK; // conceptually -1
struct syminfo {
unsigned int symbol_num : 10; // 0..831
unsigned int segment_num : 9; // 0..311 and SI_FIELD_SYNC_SEGMENT_NUM
unsigned int field_num : 1; // 0..1
unsigned int valid : 1; // contents are valid
};
static inline bool tag_is_start_field_sync(syminfo tag)
{
return tag.symbol_num == 0 && tag.segment_num == SI_FIELD_SYNC_SEGMENT_NUM &&
tag.valid;
}
static inline bool tag_is_start_field_sync_1(syminfo tag)
{
return tag_is_start_field_sync(tag) && tag.field_num == 0;
}
static inline bool tag_is_start_field_sync_2(syminfo tag)
{
return tag_is_start_field_sync(tag) && tag.field_num == 1;
}
} /* namespace atsc */
} /* namespace dtv */
} /* namespace gr */
#endif /* INCLUDED_GR_DTV_ATSC_SYMINFO_H */
|