kopia lustrzana https://github.com/rpp0/gr-lora
				
				
				
			Colored interleave matrix print in debug mode
							rodzic
							
								
									9701330772
								
							
						
					
					
						commit
						62c0f6ada7
					
				| 
						 | 
				
			
			@ -25,7 +25,6 @@
 | 
			
		|||
#include <string.h>
 | 
			
		||||
#include <iomanip>
 | 
			
		||||
 | 
			
		||||
#define REV_BITS
 | 
			
		||||
#define MAC_CRC_SIZE 2u
 | 
			
		||||
#define MAX_PWR_QUEUE_SIZE 4
 | 
			
		||||
#define SM(value, shift, mask) (((value) << (shift)) & (mask))
 | 
			
		||||
| 
						 | 
				
			
			@ -33,6 +32,34 @@
 | 
			
		|||
 | 
			
		||||
namespace gr {
 | 
			
		||||
    namespace lora {
 | 
			
		||||
        static std::vector<std::string> term_colors = {
 | 
			
		||||
            "\e[0m",
 | 
			
		||||
            "\e[1m\e[91m",
 | 
			
		||||
            "\e[1m\e[92m",
 | 
			
		||||
            "\e[1m\e[93m",
 | 
			
		||||
            "\e[1m\e[94m",
 | 
			
		||||
            "\e[1m\e[95m",
 | 
			
		||||
            "\e[1m\e[96m",
 | 
			
		||||
            "\e[1m\e[97m",
 | 
			
		||||
            "\e[1m\e[31m",
 | 
			
		||||
            "\e[1m\e[32m",
 | 
			
		||||
            "\e[1m\e[33m",
 | 
			
		||||
            "\e[1m\e[34m",
 | 
			
		||||
            "\e[1m\e[35m",
 | 
			
		||||
            "\e[1m\e[36m"
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         *  \brief  Wrap indices Python-like, i.e. array[wrap_index(-1, array_length)] gets the last element.
 | 
			
		||||
         *
 | 
			
		||||
         *  \param  i
 | 
			
		||||
         *          Index of array
 | 
			
		||||
         *  \param  n
 | 
			
		||||
         *          Length of array
 | 
			
		||||
         */
 | 
			
		||||
        inline int32_t wrap_index(int32_t i, int32_t n) {
 | 
			
		||||
            return ((i % n) + n) % n;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         *  \brief  Clamp given value in the given range.
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +113,7 @@ namespace gr {
 | 
			
		|||
         */
 | 
			
		||||
        template <typename T>
 | 
			
		||||
        inline std::string to_bin(const T v, const uint32_t bitwidth) {
 | 
			
		||||
            #ifdef REV_BITS
 | 
			
		||||
            #ifdef LSB_FIRST
 | 
			
		||||
                const uint64_t maxpow = bitwidth ? (1ull << (bitwidth - 1)) : 0;
 | 
			
		||||
                uint64_t mask;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -340,13 +367,17 @@ namespace gr {
 | 
			
		|||
                out << "-";
 | 
			
		||||
            out << std::endl;
 | 
			
		||||
 | 
			
		||||
            for(uint32_t i = 0; i < sf; i++) {
 | 
			
		||||
                for(uint32_t j = 0; j < cr; j++) {
 | 
			
		||||
                    out << to_bin(v[j], sf)[i];
 | 
			
		||||
            out << "LSB" << std::endl;
 | 
			
		||||
 | 
			
		||||
            for(int32_t i = sf-1; i >= 0; i--) {
 | 
			
		||||
                for(int32_t j = 0; j < (int32_t)cr; j++) {
 | 
			
		||||
                    out << term_colors[wrap_index(j-i, (int32_t)sf)+1] << to_bin(v[j], sf)[i] << term_colors[0];
 | 
			
		||||
                }
 | 
			
		||||
                out << std::endl;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            out << "MSB" << std::endl;
 | 
			
		||||
 | 
			
		||||
            for(uint32_t i = 0; i < cr; i++)
 | 
			
		||||
                out << "-";
 | 
			
		||||
            out << std::endl;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -493,7 +493,7 @@ namespace gr {
 | 
			
		|||
            const uint32_t word = bin_idx ^ (bin_idx >> 1u);
 | 
			
		||||
 | 
			
		||||
            #ifdef DEBUG
 | 
			
		||||
                d_debug << gr::lora::to_bin(word, is_header ? d_sf - 2u : d_sf) << " " << bin_idx  << std::endl;
 | 
			
		||||
                d_debug << gr::lora::to_bin(word, is_header ? d_sf - 2u : d_sf) << " " << word << " (bin " << bin_idx << ")"  << std::endl;
 | 
			
		||||
            #endif
 | 
			
		||||
            d_words.push_back(word);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -533,8 +533,8 @@ namespace gr {
 | 
			
		|||
            }
 | 
			
		||||
 | 
			
		||||
            #ifdef DEBUG
 | 
			
		||||
                print_interleave_matrix(d_debug, d_words, ppm);
 | 
			
		||||
                print_vector_bin(d_debug, words_deinterleaved, "D", sizeof(uint8_t) * 8u);
 | 
			
		||||
                //print_interleave_matrix(d_debug, d_words, ppm);
 | 
			
		||||
            #endif
 | 
			
		||||
 | 
			
		||||
            // Add to demodulated data
 | 
			
		||||
| 
						 | 
				
			
			@ -605,7 +605,6 @@ namespace gr {
 | 
			
		|||
 | 
			
		||||
            #ifdef DEBUG
 | 
			
		||||
                print_vector_bin(d_debug, d_words_deshuffled, "S", sizeof(uint8_t)*8);
 | 
			
		||||
                d_debug << std::endl;
 | 
			
		||||
            #endif
 | 
			
		||||
 | 
			
		||||
            // We're done with these words
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue