kopia lustrzana https://github.com/cyoung/stratux
				
				
				
			
		
			
				
	
	
		
			89 wiersze
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			89 wiersze
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"../uatparse"
 | |
| 	"bufio"
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"strconv"
 | |
| 	"strings"
 | |
| )
 | |
| 
 | |
| func main() {
 | |
| 	if len(os.Args) < 2 {
 | |
| 		fmt.Printf("%s <uat log>\n", os.Args[0])
 | |
| 		return
 | |
| 	}
 | |
| 	fp, err := os.Open(os.Args[1])
 | |
| 	if err != nil {
 | |
| 		fmt.Printf("can't open '%s'.\n", os.Args[1])
 | |
| 		return
 | |
| 	}
 | |
| 	defer fp.Close()
 | |
| 
 | |
| 	reader := bufio.NewReader(fp)
 | |
| 
 | |
| 	for {
 | |
| 		buf, err := reader.ReadString('\n')
 | |
| 		if err != nil {
 | |
| 			fmt.Printf("lost stdin.\n")
 | |
| 			break
 | |
| 		}
 | |
| 
 | |
| 		x := strings.Split(buf, ",")
 | |
| 
 | |
| 		if len(x) < 2 {
 | |
| 			continue
 | |
| 		}
 | |
| 
 | |
| 		uatMsg, err := uatparse.New(x[1])
 | |
| 		if err != nil {
 | |
| 			//			fmt.Printf("err %s\n", err.Error())
 | |
| 			continue
 | |
| 		}
 | |
| 
 | |
| 		uatMsg.DecodeUplink()
 | |
| 
 | |
| 		/*
 | |
| 			p, _ := uatMsg.GetTextReports()
 | |
| 			for _, r := range p {
 | |
| 				fmt.Printf("!!!!%s!!!!\n", r)
 | |
| 			}
 | |
| 		*/
 | |
| 
 | |
| 		fmt.Printf("%s,%f,%f,%d,%d, says: ", x[0], uatMsg.Lat, uatMsg.Lon, uatMsg.RS_Err, uatMsg.SignalStrength)
 | |
| 		types := make(map[string]int)
 | |
| 		for _, uatframe := range uatMsg.Frames {
 | |
| 			if uatframe.Product_id == 413 {
 | |
| 				for _, txt := range uatframe.Text_data {
 | |
| 					txt = strings.Trim(txt, " ")
 | |
| 					if len(txt) == 0 {
 | |
| 						continue
 | |
| 					}
 | |
| 					p := strings.Split(txt, " ")
 | |
| 					thisType := p[0]
 | |
| 					types[thisType]++
 | |
| 				}
 | |
| 			} else {
 | |
| 				if uatframe.Frame_type == 0 { // FIS-B product.
 | |
| 					types[strconv.Itoa(int(uatframe.Product_id))]++
 | |
| 				} else {
 | |
| 					types[strconv.Itoa(int(uatframe.Frame_type))]++
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		if len(types) == 0 {
 | |
| 			fmt.Printf("(unimplemented)\n")
 | |
| 		} else {
 | |
| 			for thisType, thisNum := range types {
 | |
| 				fmt.Printf("%s(%d) ", thisType, thisNum)
 | |
| 			}
 | |
| 			fmt.Printf("\n")
 | |
| 			//			fmt.Printf("%s\n", buf)
 | |
| 			//			k, _ := uatMsg.GetTextReports()
 | |
| 			//			fmt.Printf("%v\n", k)
 | |
| 		}
 | |
| 	}
 | |
| }
 |