19#ifndef GNSS_SDR_ION_GSMS_STREAM_ENCODINGS_H
20#define GNSS_SDR_ION_GSMS_STREAM_ENCODINGS_H
32using StreamEncoding =
unsigned char;
34namespace StreamEncodings
37constexpr unsigned char SIGN = 0;
38constexpr unsigned char OB = 1;
39constexpr unsigned char SM = 2;
40constexpr unsigned char MS = 3;
41constexpr unsigned char TC = 4;
42constexpr unsigned char OG = 5;
43constexpr unsigned char OBA = 6;
44constexpr unsigned char SMA = 7;
45constexpr unsigned char MSA = 8;
46constexpr unsigned char TCA = 9;
47constexpr unsigned char OGA = 10;
48constexpr unsigned char FP = 11;
52inline StreamEncoding encoding_from_string(
const std::string& str)
56 return StreamEncodings::SIGN;
60 return StreamEncodings::OB;
64 return StreamEncodings::SM;
68 return StreamEncodings::MS;
72 return StreamEncodings::TC;
76 return StreamEncodings::OG;
80 return StreamEncodings::OBA;
84 return StreamEncodings::SMA;
88 return StreamEncodings::MSA;
92 return StreamEncodings::TCA;
96 return StreamEncodings::OGA;
100 return StreamEncodings::FP;
106inline T two_bit_look_up[11][4]{
121inline T three_bit_look_up[11][8]{
123 {-4, -3, -2, -1, 0, 1, 2, 3},
124 {0, 1, 2, 3, 0, -1, -2, -3},
125 {0, 0, 1, -1, 0, 0, 1, -1},
126 {0, 1, 2, 3, -4, -3, -2, -1},
127 {-4, -3, -1, -2, 3, 2, 0, 1},
128 {-7, -5, -3, -1, 1, 3, 5, 7},
129 {1, 3, 5, 7, -1, -3, -5, -7},
130 {1, -1, 3, -3, 5, -5, 7, -7},
131 {1, 3, 5, 7, -7, -5, -3, -1},
132 {-7, -5, -1, -3, 7, 5, 1, 3},
136inline T four_bit_look_up[11][16]{
138 {-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7},
139 {0, 1, 2, 3, 4, 5, 6, 7, 0, -1, -2, -3, -4, -5, -6, -7},
140 {0, 0, 1, -1, 0, 0, 1, -1, 0, 0, 1, -1, 0, 0, 1, -1},
141 {0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1},
142 {-8, -7, -5, -6, -1, -2, -4, -3, 7, 6, 4, 5, 0, 1, 3, 2},
143 {-15, -13, -11, -9, -7, -5, -3, -1, 1, 3, 5, 7, 9, 11, 13, 15},
144 {1, 3, 5, 7, 9, 11, 13, 15, -1, -3, -5, -7, -9, -11, -13, -15},
145 {1, -1, 3, -3, 5, -5, 7, -7, 9, -9, 11, -11, 13, -13, 15, -15},
146 {1, 3, 5, 7, 9, 11, 13, 15, -15, -13, -11, -9, -7, -5, -3, -1},
147 {-15, -13, -9, -11, -1, -3, -7, -5, 15, 13, 9, 11, 1, 3, 7, 5},
151inline T five_bit_look_up[11][32]{
153 {-16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
154 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15},
155 {0, 0, 1, -1, 0, 0, 1, -1, 0, 0, 1, -1, 0, 0, 1, -1, 0, 0, 1, -1, 0, 0, 1, -1, 0, 0, 1, -1, 0, 0, 1, -1},
156 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1},
157 {-16, -15, -13, -14, -9, -10, -12, -11, -1, -2, -4, -3, -8, -7, -5, -6, 15, 14, 12, 13, 8, 9, 11, 10, 0, 1, 3, 2, 7, 6, 4, 5},
158 {-31, -29, -27, -25, -23, -21, -19, -17, -15, -13, -11, -9, -7, -5, -3, -1, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31},
159 {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, -1, -3, -5, -7, -9, -11, -13, -15, -17, -19, -21, -23, -25, -27, -29, -31},
160 {1, -1, 3, -3, 5, -5, 7, -7, 9, -9, 11, -11, 13, -13, 15, -15, 17, -17, 19, -19, 21, -21, 23, -23, 25, -25, 27, -27, 29, -29, 31, -31},
161 {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, -31, -29, -27, -25, -23, -21, -19, -17, -15, -13, -11, -9, -7, -5, -3, -1},
162 {-31, -29, -25, -27, -17, -19, -23, -21, -1, -3, -7, -5, -15, -13, -9, -11, 31, 29, 25, 27, 17, 19, 23, 21, 1, 3, 7, 5, 15, 13, 9, 11},