Files
lingniu-vehicle-ingest/go/vehicle-gateway/internal/loadsim/templates.go
2026-07-03 17:55:22 +08:00

54 lines
2.7 KiB
Go

package loadsim
import (
"encoding/hex"
"fmt"
"strings"
)
const sampleJT808LocationFrame = "7E020000320133077954250001000000000048000301D2C4C707376139000A00E6004F26063016235701040001900C2504000000000202000030011F31010F867E"
const sampleGB32960RealtimeFrame = "232302FE4C423941333241323152304C53313730370102ED1A070116091C0102030100000008297D161F27104C020007D0000002010104564E204E205815CA271003000A000000B40002666902800200000100A101000400FFFF001205000733444601E2B5DB06013A0F6C018E0F4001014B01054A07000000000000000000080101161F271000900001900F520F530F520F640F660F650F650F650F650F660F650F650F640F640F550F550F540F560F580F570F540F570F560F550F5A0F550F580F570F5C0F5F0F5E0F610F5E0F5D0F5E0F5F0F5E0F5D0F610F5F0F610F600F600F610F610F610F600F630F630F600F610F610F610F620F620F610F6A0F6C0F6B0F6A0F6C0F6B0F6A0F6B0F6B0F6B0F6A0F610F630F630F630F640F660F640F630F630F630F580F5A0F580F5B0F550F580F5A0F5A0F590F580F5A0F620F650F650F650F660F640F640F640F640F640F660F650F640F650F660F650F670F670F670F670F630F620F680F670F650F650F670F650F610F5F0F600F620F5E0F5C0F590F4C0F490F480F440F470F480F470F420F430F450F420F450F440F440F430F530F540F520F400F410F4109010100084B4B4B4B4A4A4B4A3001026907B2FF00FF00380002002800000008006C00016C00080008000000080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008002800070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000831010E9C0005FFFFFFFF0E9CFFFFFFFF0083320E9C1B6115E212465733FFFFFFFFFF34FFFFFFFFFF002B800009690E9C2710000D000E83002402020500002700080001000000FD00000000FFFFFFFFFFFFFFFFFFFFFFFF1FFE1FF3001DBA"
func FrameTemplate(protocol Protocol, name string) ([]byte, error) {
template := strings.ToLower(strings.TrimSpace(name))
if template == "" {
template = defaultTemplate(protocol)
}
var rawHex string
switch protocol {
case ProtocolJT808:
switch template {
case "0200", "location", "default":
rawHex = sampleJT808LocationFrame
default:
return nil, fmt.Errorf("unsupported jt808 template %q", name)
}
case ProtocolGB32960:
switch template {
case "0200", "realtime", "default":
rawHex = sampleGB32960RealtimeFrame
default:
return nil, fmt.Errorf("unsupported gb32960 template %q", name)
}
default:
return nil, fmt.Errorf("unsupported protocol %q", protocol)
}
frame, err := hex.DecodeString(rawHex)
if err != nil {
return nil, err
}
return frame, nil
}
func defaultTemplate(protocol Protocol) string {
switch protocol {
case ProtocolJT808:
return "0200"
case ProtocolGB32960:
return "realtime"
default:
return "default"
}
}