mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 15:23:04 +00:00 
			
		
		
		
	Use std::bitset<N> instead of std::array<bool, N>
This commit is contained in:
		| @@ -32,17 +32,20 @@ | |||||||
|  |  | ||||||
| #include "beidou_b1i_signal_processing.h" | #include "beidou_b1i_signal_processing.h" | ||||||
| #include <array> | #include <array> | ||||||
|  | #include <bitset> | ||||||
|  | #include <string> | ||||||
|  |  | ||||||
| auto auxCeil = [](float x) { return static_cast<int32_t>(static_cast<int64_t>((x) + 1)); }; | auto auxCeil = [](float x) { return static_cast<int32_t>(static_cast<int64_t>((x) + 1)); }; | ||||||
|  |  | ||||||
| void beidou_b1i_code_gen_int(gsl::span<int32_t> _dest, int32_t _prn, uint32_t _chip_shift) | void beidou_b1i_code_gen_int(gsl::span<int32_t> _dest, int32_t _prn, uint32_t _chip_shift) | ||||||
| { | { | ||||||
|     const uint32_t _code_length = 2046; |     const uint32_t _code_length = 2046; | ||||||
|     std::array<bool, _code_length> G1{}; |     std::bitset<_code_length> G1{}; | ||||||
|     std::array<bool, _code_length> G2{}; |     std::bitset<_code_length> G2{}; | ||||||
|  |  | ||||||
|  |     std::bitset<11> G1_register(std::string("01010101010")); | ||||||
|  |     std::bitset<11> G2_register(std::string("01010101010")); | ||||||
|  |  | ||||||
|     std::array<bool, 11> G1_register{false, true, false, true, false, true, false, true, false, true, false}; |  | ||||||
|     std::array<bool, 11> G2_register{false, true, false, true, false, true, false, true, false, true, false}; |  | ||||||
|     bool feedback1, feedback2; |     bool feedback1, feedback2; | ||||||
|     bool aux; |     bool aux; | ||||||
|     uint32_t lcv, lcv2; |     uint32_t lcv, lcv2; | ||||||
|   | |||||||
| @@ -32,85 +32,90 @@ | |||||||
|  |  | ||||||
| #include "beidou_b3i_signal_processing.h" | #include "beidou_b3i_signal_processing.h" | ||||||
| #include <array> | #include <array> | ||||||
|  | #include <bitset> | ||||||
|  | #include <string> | ||||||
|  |  | ||||||
| auto auxCeil = [](float x) { return static_cast<int>(static_cast<long>((x) + 1)); }; | auto auxCeil = [](float x) { return static_cast<int>(static_cast<long>((x) + 1)); }; | ||||||
|  |  | ||||||
| void beidou_b3i_code_gen_int(gsl::span<int> _dest, signed int _prn, unsigned int _chip_shift) | void beidou_b3i_code_gen_int(gsl::span<int> _dest, signed int _prn, unsigned int _chip_shift) | ||||||
| { | { | ||||||
|     const unsigned int _code_length = 10230; |     const unsigned int _code_length = 10230; | ||||||
|     std::array<bool, _code_length> G1{}; |     std::bitset<_code_length> G1{}; | ||||||
|     std::array<bool, _code_length> G2{}; |     std::bitset<_code_length> G2{}; | ||||||
|     std::array<bool, 13> G1_register = {{true, true, true, true, true, true, true, true, true, true, true, true, true}}; |     auto G1_register = std::move(std::bitset<13>{}.set());  // All true {true, true, true, true, true, true, true, true, true, true, true, true, true}; | ||||||
|     std::array<bool, 13> G2_register = {{true, true, true, true, true, true, true, true, true, true, true, true, true}}; |     auto G2_register = std::move(std::bitset<13>{}.set());  // All true {true, true, true, true, true, true, true, true, true, true, true, true, true}; | ||||||
|     std::array<bool, 13> G1_register_reset = {{false, false, true, true, true, true, true, true, true, true, true, true, true}}; |     auto G1_register_reset = std::move(std::bitset<13>{}.set()); | ||||||
|  |     G1_register_reset.reset(0); | ||||||
|  |     G1_register_reset.reset(1);  // {false, false, true, true, true, true, true, true, true, true, true, true, true}; | ||||||
|  |  | ||||||
|     bool feedback1, feedback2, aux; |     bool feedback1, feedback2, aux; | ||||||
|     uint32_t lcv, lcv2, delay; |     uint32_t lcv, lcv2, delay; | ||||||
|     int32_t prn_idx = _prn - 1; |     int32_t prn_idx = _prn - 1; | ||||||
|  |  | ||||||
|     std::array<std::array<bool, 13>, 63> G2_register_shifted = |     const std::array<std::bitset<13>, 63> G2_register_shifted = | ||||||
|         {{{{true, false, true, false, true, true, true, true, true, true, true, true, true}}, |         {std::bitset<13>(std::string("1010111111111")), | ||||||
|             {{true, true, true, true, false, false, false, true, false, true, false, true, true}}, |             std::bitset<13>(std::string("1111000101011")), | ||||||
|             {{true, false, true, true, true, true, false, false, false, true, false, true, false}}, |             std::bitset<13>(std::string("1011110001010")), | ||||||
|             {{true, true, true, true, true, true, true, true, true, true, false, true, true}}, |             std::bitset<13>(std::string("1111111111011")), | ||||||
|             {{true, true, false, false, true, false, false, false, true, true, true, true, true}}, |             std::bitset<13>(std::string("1100100011111")), | ||||||
|             {{true, false, false, true, false, false, true, true, false, false, true, false, false}}, |             std::bitset<13>(std::string("1001001100100")), | ||||||
|             {{true, true, true, true, true, true, true, false, true, false, false, true, false}}, |             std::bitset<13>(std::string("1111111010010")), | ||||||
|             {{true, true, true, false, true, true, true, true, true, true, true, false, true}}, |             std::bitset<13>(std::string("1110111111101")), | ||||||
|             {{true, false, true, false, false, false, false, false, false, false, false, true, false}}, |             std::bitset<13>(std::string("1010000000010")), | ||||||
|             {{false, false, true, false, false, false, false, false, true, true, false, true, true}}, |             std::bitset<13>(std::string("0010000011011")), | ||||||
|             {{true, true, true, false, true, false, true, true, true, false, false, false, false}}, |             std::bitset<13>(std::string("1110101110000")), | ||||||
|             {{false, false, true, false, true, true, false, false, true, true, true, true, false}}, |             std::bitset<13>(std::string("0010110011110")), | ||||||
|             {{false, true, true, false, false, true, false, false, true, false, true, false, true}}, |             std::bitset<13>(std::string("0110010010101")), | ||||||
|             {{false, true, true, true, false, false, false, true, false, false, true, true, false}}, |             std::bitset<13>(std::string("0111000100110")), | ||||||
|             {{true, false, false, false, true, true, false, false, false, true, false, false, true}}, |             std::bitset<13>(std::string("1000110001001")), | ||||||
|             {{true, true, true, false, false, false, true, true, true, true, true, false, false}}, |             std::bitset<13>(std::string("1110001111100")), | ||||||
|             {{false, false, true, false, false, true, true, false, false, false, true, false, true}}, |             std::bitset<13>(std::string("0010011000101")), | ||||||
|             {{false, false, false, false, false, true, true, true, false, true, true, false, false}}, |             std::bitset<13>(std::string("0000011101100")), | ||||||
|             {{true, false, false, false, true, false, true, false, true, false, true, true, true}}, |             std::bitset<13>(std::string("1000101010111")), | ||||||
|             {{false, false, false, true, false, true, true, false, true, true, true, true, false}}, |             std::bitset<13>(std::string("0001011011110")), | ||||||
|             {{false, false, true, false, false, false, false, true, false, true, true, false, true}}, |             std::bitset<13>(std::string("0010000101101")), | ||||||
|             {{false, false, true, false, true, true, false, false, false, true, false, true, false}}, |             std::bitset<13>(std::string("0010110001010")), | ||||||
|             {{false, false, false, true, false, true, true, false, false, true, true, true, true}}, |             std::bitset<13>(std::string("0001011001111")), | ||||||
|             {{false, false, true, true, false, false, true, true, false, false, false, true, false}}, |             std::bitset<13>(std::string("0011001100010")), | ||||||
|             {{false, false, true, true, true, false, true, false, false, true, false, false, false}}, |             std::bitset<13>(std::string("0011101001000")), | ||||||
|             {{false, true, false, false, true, false, false, true, false, true, false, false, true}}, |             std::bitset<13>(std::string("0100100101001")), | ||||||
|             {{true, false, true, true, false, true, true, false, true, false, false, true, true}}, |             std::bitset<13>(std::string("1011011010011")), | ||||||
|             {{true, false, true, false, true, true, true, true, false, false, false, true, false}}, |             std::bitset<13>(std::string("1010111100010")), | ||||||
|             {{false, false, false, true, false, true, true, true, true, false, true, false, true}}, |             std::bitset<13>(std::string("0001011110101")), | ||||||
|             {{false, true, true, true, true, true, true, true, true, true, true, true, true}}, |             std::bitset<13>(std::string("0111111111111")), | ||||||
|             {{false, true, true, false, true, true, false, false, false, true, true, true, true}}, |             std::bitset<13>(std::string("0110110001111")), | ||||||
|             {{true, false, true, false, true, true, false, false, false, true, false, false, true}}, |             std::bitset<13>(std::string("1010110001001")), | ||||||
|             {{true, false, false, true, false, true, false, true, false, true, false, true, true}}, |             std::bitset<13>(std::string("1001010101011")), | ||||||
|             {{true, true, false, false, true, true, false, true, false, false, true, false, true}}, |             std::bitset<13>(std::string("1100110100101")), | ||||||
|             {{true, true, false, true, false, false, true, false, true, true, true, false, true}}, |             std::bitset<13>(std::string("1101001011101")), | ||||||
|             {{true, true, true, true, true, false, true, true, true, false, true, false, false}}, |             std::bitset<13>(std::string("1111101110100")), | ||||||
|             {{false, false, true, false, true, false, true, true, false, false, true, true, true}}, |             std::bitset<13>(std::string("0010101100111")), | ||||||
|             {{true, true, true, false, true, false, false, false, true, false, false, false, false}}, |             std::bitset<13>(std::string("1110100010000")), | ||||||
|             {{true, true, false, true, true, true, false, false, true, false, false, false, false}}, |             std::bitset<13>(std::string("1101110010000")), | ||||||
|             {{true, true, false, true, false, true, true, false, false, true, true, true, false}}, |             std::bitset<13>(std::string("1101011001110")), | ||||||
|             {{true, false, false, false, false, false, false, true, true, false, true, false, false}}, |             std::bitset<13>(std::string("1000000110100")), | ||||||
|             {{false, true, false, true, true, true, true, false, true, true, false, false, true}}, |             std::bitset<13>(std::string("0101111011001")), | ||||||
|             {{false, true, true, false, true, true, false, true, true, true, true, false, false}}, |             std::bitset<13>(std::string("0110110111100")), | ||||||
|             {{true, true, false, true, false, false, true, true, true, false, false, false, true}}, |             std::bitset<13>(std::string("1101001110001")), | ||||||
|             {{false, false, true, true, true, false, false, true, false, false, false, true, false}}, |             std::bitset<13>(std::string("0011100100010")), | ||||||
|             {{false, true, false, true, false, true, true, false, false, false, true, false, true}}, |             std::bitset<13>(std::string("0101011000101")), | ||||||
|             {{true, false, false, true, true, true, true, true, false, false, true, true, false}}, |             std::bitset<13>(std::string("1001111100110")), | ||||||
|             {{true, true, true, true, true, false, true, false, false, true, false, false, false}}, |             std::bitset<13>(std::string("1111101001000")), | ||||||
|             {{false, false, false, false, true, false, true, false, false, true, false, false, true}}, |             std::bitset<13>(std::string("0000101001001")), | ||||||
|             {{true, false, false, false, false, true, false, true, false, true, true, false, false}}, |             std::bitset<13>(std::string("1000010101100")), | ||||||
|             {{true, true, true, true, false, false, true, false, false, true, true, false, false}}, |             std::bitset<13>(std::string("1111001001100")), | ||||||
|             {{false, true, false, false, true, true, false, false, false, true, true, true, true}}, |             std::bitset<13>(std::string("0100110001111")), | ||||||
|             {{false, false, false, false, false, false, false, false, true, true, false, false, false}}, |             std::bitset<13>(std::string("0000000011000")), | ||||||
|             {{true, false, false, false, false, false, false, false, false, false, true, false, false}}, |             std::bitset<13>(std::string("1000000000100")), | ||||||
|             {{false, false, true, true, false, true, false, true, false, false, true, true, false}}, |             std::bitset<13>(std::string("0011010100110")), | ||||||
|             {{true, false, true, true, false, false, true, false, false, false, true, true, false}}, |             std::bitset<13>(std::string("1011001000110")), | ||||||
|             {{false, true, true, true, false, false, true, true, true, true, false, false, false}}, |             std::bitset<13>(std::string("0111001111000")), | ||||||
|             {{false, false, true, false, true, true, true, false, false, true, false, true, false}}, |             std::bitset<13>(std::string("0010111001010")), | ||||||
|             {{true, true, false, false, true, true, true, true, true, false, true, true, false}}, |             std::bitset<13>(std::string("1100111110110")), | ||||||
|             {{true, false, false, true, false, false, true, false, false, false, true, false, true}}, |             std::bitset<13>(std::string("1001001000101")), | ||||||
|             {{false, true, true, true, false, false, false, true, false, false, false, false, false}}, |             std::bitset<13>(std::string("0111000100000")), | ||||||
|             {{false, false, true, true, false, false, true, false, false, false, false, true, false}}, |             std::bitset<13>(std::string("0011001000010")), | ||||||
|             {{false, false, true, false, false, false, true, false, false, true, true, true, false}}}}; |             std::bitset<13>(std::string("0010001001110"))}; | ||||||
|  |  | ||||||
|     // A simple error check |     // A simple error check | ||||||
|     if ((prn_idx < 0) || (prn_idx > 63)) |     if ((prn_idx < 0) || (prn_idx > 63)) | ||||||
| @@ -120,7 +125,14 @@ void beidou_b3i_code_gen_int(gsl::span<int> _dest, signed int _prn, unsigned int | |||||||
|  |  | ||||||
|     // Assign shifted G2 register based on prn number |     // Assign shifted G2 register based on prn number | ||||||
|     G2_register = G2_register_shifted[prn_idx]; |     G2_register = G2_register_shifted[prn_idx]; | ||||||
|     std::reverse(G2_register.begin(), G2_register.end()); |  | ||||||
|  |     // std::reverse(G2_register.begin(), G2_register.end()); | ||||||
|  |     for (std::size_t i = 0; i < 6; ++i) | ||||||
|  |         { | ||||||
|  |             bool t = G2_register[i]; | ||||||
|  |             G2_register[i] = G2_register[13 - i - 1]; | ||||||
|  |             G2_register[13 - i - 1] = t; | ||||||
|  |         } | ||||||
|  |  | ||||||
|     // Generate G1 and G2 Register |     // Generate G1 and G2 Register | ||||||
|     for (lcv = 0; lcv < _code_length; lcv++) |     for (lcv = 0; lcv < _code_length; lcv++) | ||||||
| @@ -145,7 +157,7 @@ void beidou_b3i_code_gen_int(gsl::span<int> _dest, signed int _prn, unsigned int | |||||||
|             // Reset G1 register if sequence found |             // Reset G1 register if sequence found | ||||||
|             if (G1_register == G1_register_reset) |             if (G1_register == G1_register_reset) | ||||||
|                 { |                 { | ||||||
|                     G1_register = {{true, true, true, true, true, true, true, true, true, true, true, true, true}}; |                     G1_register = std::move(std::bitset<13>{}.set());  // All true {{true, true, true, true, true, true, true, true, true, true, true, true, true}}; | ||||||
|                 } |                 } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -32,16 +32,17 @@ | |||||||
|  |  | ||||||
| #include "gps_sdr_signal_processing.h" | #include "gps_sdr_signal_processing.h" | ||||||
| #include <array> | #include <array> | ||||||
|  | #include <bitset> | ||||||
|  |  | ||||||
| auto auxCeil = [](float x) { return static_cast<int32_t>(static_cast<int64_t>((x) + 1)); }; | auto auxCeil = [](float x) { return static_cast<int32_t>(static_cast<int64_t>((x) + 1)); }; | ||||||
|  |  | ||||||
| void gps_l1_ca_code_gen_int(gsl::span<int32_t> _dest, int32_t _prn, uint32_t _chip_shift) | void gps_l1_ca_code_gen_int(gsl::span<int32_t> _dest, int32_t _prn, uint32_t _chip_shift) | ||||||
| { | { | ||||||
|     const uint32_t _code_length = 1023; |     const uint32_t _code_length = 1023; | ||||||
|     std::array<bool, _code_length> G1{}; |     std::bitset<_code_length> G1{}; | ||||||
|     std::array<bool, _code_length> G2{}; |     std::bitset<_code_length> G2{}; | ||||||
|     std::array<bool, 10> G1_register{}; |     std::bitset<10> G1_register{}; | ||||||
|     std::array<bool, 10> G2_register{}; |     std::bitset<10> G2_register{}; | ||||||
|     bool feedback1, feedback2; |     bool feedback1, feedback2; | ||||||
|     bool aux; |     bool aux; | ||||||
|     uint32_t lcv, lcv2; |     uint32_t lcv, lcv2; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez