rts-sim-testing-service/third_party/message/rssp_code.go
2024-07-24 18:27:41 +08:00

47 lines
1.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package message
import "github.com/snksoft/crc"
//rssp 协议中crc校验查表法实现
var (
// crc16多项式为G(x)=X16+X11+X4+1
RSSP_I_CRC16 = crc.NewHash(&crc.Parameters{Width: 16, Polynomial: 0x0811, Init: 0x0, ReflectIn: true, ReflectOut: true, FinalXor: 0x0})
// 通道1 crc32多项式为0x100d4e63
RSSP_I_C1_CRC32 = crc.NewHash(&crc.Parameters{Width: 32, Polynomial: 0x100d4e63, Init: 0x0, ReflectIn: false, ReflectOut: true, FinalXor: 0x0})
// 通道2 crc32多项式为0x8ce56011
RSSP_I_C2_CRC32 = crc.NewHash(&crc.Parameters{Width: 32, Polynomial: 0x8ce56011, Init: 0x0, ReflectIn: false, ReflectOut: true, FinalXor: 0x0})
)
// Rssp_I_Crc16计算
func Rssp_I_Crc16(data []byte) uint16 {
return uint16(RSSP_I_CRC16.CalculateCRC(data))
}
// 通道1的crc32
func Rssp_I_Crc32C1(data []byte) uint32 {
//newData := reverseBitsInByte(data)
return uint32(RSSP_I_C1_CRC32.CalculateCRC(data))
}
// 通道2的crc32
func Rssp_I_Crc32C2(data []byte) uint32 {
//newData := reverseBitsInByte(data)
return uint32(RSSP_I_C2_CRC32.CalculateCRC(data))
}
//func reverseBitsInByte(data []byte) []byte {
// var result byte
// newData := make([]byte, len(data))
// for i, b := range data {
// result = 0
// for i := 0; i < 8; i++ {
// result <<= 1
// result |= b & 1
// b >>= 1
// }
// newData[i] = result
// }
// return newData
//}