aux platform
This commit is contained in:
82
extract/aos.go
Normal file
82
extract/aos.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package extract
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
const (
|
||||
AOSFrameLength = 1024
|
||||
AOSTempDataPrefix = "AOS_"
|
||||
)
|
||||
|
||||
var AOSSyncWord = []byte{0x1A, 0xCF, 0xFC, 0x1D}
|
||||
|
||||
type AOSFrame struct {
|
||||
}
|
||||
|
||||
func (p *Extractor) ExtractAosData() error {
|
||||
// 打开传输帧文件 - 一次读入内存
|
||||
rawData, err := os.ReadFile(p.params.InputData)
|
||||
if err != nil {
|
||||
log.Println("read data from", p.params.InputData, "error:", err.Error())
|
||||
return err
|
||||
}
|
||||
|
||||
name := filepath.Base(p.params.InputData)
|
||||
aosDataFile := filepath.Join(p.params.TempPath, AOSTempDataPrefix+name)
|
||||
foData, err := os.OpenFile(aosDataFile,
|
||||
os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0777)
|
||||
if err != nil {
|
||||
fmt.Println("create data err", err.Error())
|
||||
return err
|
||||
}
|
||||
defer foData.Close()
|
||||
wData := bufio.NewWriter(foData)
|
||||
|
||||
var validFrameCnt int
|
||||
var errFrameCnt int
|
||||
|
||||
for i := 0; i < len(rawData); {
|
||||
// 寻找帧头 0x1A CF FC 1D
|
||||
if i+4 > len(rawData) {
|
||||
log.Info("end of raw data")
|
||||
break
|
||||
}
|
||||
|
||||
if rawData[i] == 0x1A && rawData[i+1] == 0xCF && rawData[i+2] == 0xFC && rawData[i+3] == 0x1D {
|
||||
// 找到帧头
|
||||
log.Debug("detect AOS frame")
|
||||
} else {
|
||||
i++
|
||||
continue
|
||||
}
|
||||
|
||||
if i+1024 > len(rawData) {
|
||||
log.Info("not enough data for AOS frame")
|
||||
break
|
||||
}
|
||||
|
||||
// 读取完整帧
|
||||
if ldpcCheck(rawData[i:i+1024]) != nil {
|
||||
errFrameCnt++
|
||||
}
|
||||
|
||||
wData.Write(rawData[i+10 : i+894])
|
||||
i += 1024
|
||||
validFrameCnt++
|
||||
}
|
||||
|
||||
log.Println("valid AOS frame cnt:", validFrameCnt)
|
||||
log.Println("err AOS frame cnt:", errFrameCnt)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ldpcCheck(frame []byte) error {
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user