mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	WIP on RS utilities.
This commit is contained in:
		
							parent
							
								
									2535a24481
								
							
						
					
					
						commit
						3bfbe4deb4
					
				| @ -15,17 +15,18 @@ CFLAGS= -O9 -Wall | |||||||
| %.o: %.F90 | %.o: %.F90 | ||||||
| 	${FC} ${FFLAGS} -c $< | 	${FC} ${FFLAGS} -c $< | ||||||
| 
 | 
 | ||||||
| all:	rstest rs_125_49 | all:	rs_sf.a rstest rs_125_49 | ||||||
| 
 | 
 | ||||||
| OBJS1 = rstest.o init_rs_sf.o encode_rs_sf.o decode_rs_sf.o \
 | OBJS1 = rstest.o ran1.o | ||||||
| 	rs_sf.o ran1.o |  | ||||||
| rstest: $(OBJS1) | rstest: $(OBJS1) | ||||||
| 	$(FC) -o rstest $(OBJS1) | 	$(FC) -o rstest $(OBJS1) rs_sf.a | ||||||
| 
 | 
 | ||||||
| OBJS2 = rs_125_49.o init_rs_sf.o encode_rs_sf.o decode_rs_sf.o \
 | OBJS2 = rs_125_49.o ran1.o get_crc14.o | ||||||
| 	rs_sf.o ran1.o get_crc14.o |  | ||||||
| rs_125_49: $(OBJS2) | rs_125_49: $(OBJS2) | ||||||
| 	$(FC) -o rs_125_49 $(OBJS2) | 	$(FC) -o rs_125_49 $(OBJS2) rs_sf.a | ||||||
|  | 
 | ||||||
|  | rs_sf.a: init_rs_sf.o encode_rs_sf.o decode_rs_sf.o rs_sf.o | ||||||
|  | 	ar -crs rs_sf.a init_rs_sf.o encode_rs_sf.o decode_rs_sf.o rs_sf.o | ||||||
| 
 | 
 | ||||||
| init_rs_sf.o: init_rs.c | init_rs_sf.o: init_rs.c | ||||||
| 	gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ | 	gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ | ||||||
| @ -36,4 +37,4 @@ decode_rs_sf.o: decode_rs.c | |||||||
| 
 | 
 | ||||||
| .PHONY : clean | .PHONY : clean | ||||||
| clean: | clean: | ||||||
| 	-rm -f *.o rstest.exe  | 	-rm -f *.o *.a *.exe  | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ program rs_125_49 | |||||||
| !  integer dat(KK)                            !Decoded data, i*4 | !  integer dat(KK)                            !Decoded data, i*4 | ||||||
|   integer dat(256)                            !Decoded data, i*4 |   integer dat(256)                            !Decoded data, i*4 | ||||||
|   integer era(NN) |   integer era(NN) | ||||||
|   character c357*357,c14*14 |   character c357*357,c14*14,chkmsg*15 | ||||||
| 
 | 
 | ||||||
|   nargs=iargc() |   nargs=iargc() | ||||||
|   if(nargs.ne.1) then |   if(nargs.ne.1) then | ||||||
| @ -60,18 +60,16 @@ program rs_125_49 | |||||||
|   nera=0 |   nera=0 | ||||||
| 
 | 
 | ||||||
|   call rs_decode_sf(gsym,era,nera,dat,nfixed) |   call rs_decode_sf(gsym,era,nera,dat,nfixed) | ||||||
|   write(*,1008) |  | ||||||
| 1008 format(/'Decoded result:') |  | ||||||
|   write(*,1002) dat(1:KK) |  | ||||||
|   if(nfixed.ge.0) write(*,1100) nerr,nfixed |  | ||||||
| 1100 format(/'nerr:',i3,'   nfixed:',i3) |  | ||||||
|   if(nfixed.lt.0) write(*,1102) nerr,nfixed |  | ||||||
| 1102 format(/'nerr:',i3,'   nfixed:',i3,', decode failed.') |  | ||||||
| 
 |  | ||||||
|   write(c357,'(51b7.7)') dat(1:KK) |   write(c357,'(51b7.7)') dat(1:KK) | ||||||
|   read(c357,'(357i1)') dgen1 |   read(c357,'(357i1)') dgen1 | ||||||
|   call get_crc14(dgen1,7*KK,ncrc) |   call get_crc14(dgen1,7*KK,ncrc) | ||||||
|   if(ncrc.ne.0) print*,'CRC check failed' | 
 | ||||||
|   if(ncrc.eq.0) print*,'CRC check is OK' |   write(*,1008) | ||||||
|  | 1008 format(/'Decoded result:') | ||||||
|  |   chkmsg='Decode failed' | ||||||
|  |   if(nfixed.ge.0 .and. ncrc.eq.0) chkmsg='CRC check OK' | ||||||
|  |   write(*,1002) dat(1:KK) | ||||||
|  |   write(*,1100) nerr,nfixed,trim(chkmsg) | ||||||
|  | 1100 format(/'nerr:',i3,'   nfixed:',i3,', ',a) | ||||||
| 
 | 
 | ||||||
| 999 end program rs_125_49 | 999 end program rs_125_49 | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ program rstest | |||||||
|   integer gsym0(255)                         !Encoded data, Karn |   integer gsym0(255)                         !Encoded data, Karn | ||||||
|   integer gsym(255)                          !Encoded data with errors |   integer gsym(255)                          !Encoded data with errors | ||||||
|   integer dat(235)                           !Decoded data, i*4 |   integer dat(235)                           !Decoded data, i*4 | ||||||
|  |   integer iera(0:200)                          !Positions of erasures | ||||||
|        |        | ||||||
|   nargs=iargc() |   nargs=iargc() | ||||||
|   if(nargs.ne.4) then |   if(nargs.ne.4) then | ||||||
| @ -29,7 +30,7 @@ program rstest | |||||||
| 
 | 
 | ||||||
| ! Generate and random symbols with values 0 to nq-1 | ! Generate and random symbols with values 0 to nq-1 | ||||||
|   do i=1,kk |   do i=1,kk | ||||||
|      dgen(i)=(nq-0.0001)*ran1(idum) |      dgen(i)=int(nq*ran1(idum)) | ||||||
|   enddo |   enddo | ||||||
| 
 | 
 | ||||||
|   write(*,1000) |   write(*,1000) | ||||||
| @ -50,16 +51,15 @@ program rstest | |||||||
| 1006 format(/'Recovered channel symbols, with errors:') | 1006 format(/'Recovered channel symbols, with errors:') | ||||||
|   write(*,1002) gsym(1:nn) |   write(*,1002) gsym(1:nn) | ||||||
| 
 | 
 | ||||||
|   call rs_decode_sf(gsym,era,0,dat,nfixed) |   nera=0 | ||||||
|   ibad=0 |   iera=0 | ||||||
|   do i=1,kk |   call rs_decode_sf(gsym,iera,nera,dat,nfixed) | ||||||
|      if(dat(i).ne.dgen(i)) ibad=ibad+1 |   ibad=count(dat(1:kk).ne.dgen(1:kk)) | ||||||
|   enddo |  | ||||||
|   write(*,1008) |   write(*,1008) | ||||||
| 1008 format(/'Decoded result:') | 1008 format(/'Decoded result:') | ||||||
|   write(*,1002) dat(1:kk) |   write(*,1002) dat(1:kk) | ||||||
|   write(*,1100) nerr,nfixed,ibad |   write(*,1100) nerr,nfixed | ||||||
| 1100 format(/'nerr:',i3,'   nfixed:',i3,'   ibad:',i3) | 1100 format(/'nerr:',i3,'   nfixed:',i3) | ||||||
|    |    | ||||||
| 999 end program rstest | 999 end program rstest | ||||||
|   |   | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user