Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gr25/service/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ func HandleMessage(vehicleID string, nodeID string, canID int, message []byte) {
signal.Name = fmt.Sprintf("%s_%s", nodeID, signal.Name)
signal.Timestamp = int(binary.BigEndian.Uint64(timestamp))
signal.VehicleID = vehicleID
signal.ProducedAt = time.UnixMilli(int64(signal.Timestamp))
signal.ProducedAt = time.UnixMicro(int64(signal.Timestamp))
signal.CreatedAt = utils.WithPrecision(time.Now())

err := CreateSignal(signal)
Expand Down
22 changes: 11 additions & 11 deletions gr25/service/ping.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

func HandlePing(vehicleID string, nodeID string, payload []byte) {
utils.SugarLogger.Infof("[MQ] Received ping from gr25/%s/%s", vehicleID, nodeID)
ping := int(binary.BigEndian.Uint64(payload[:8]))
ping := binary.BigEndian.Uint64(payload[:8])
uploadKey := binary.BigEndian.Uint16(payload[8:10])
// TODO: Check upload key
if uploadKey == 0 {
Expand All @@ -24,32 +24,32 @@ func HandlePing(vehicleID string, nodeID string, payload []byte) {
go SendPong(vehicleID, nodeID, ping)
}

func SendPong(vehicleID string, nodeID string, ping int) {
func SendPong(vehicleID string, nodeID string, ping uint64) {
topic := fmt.Sprintf("gr25/%s/%s/pong", vehicleID, nodeID)
pong := int(time.Now().UnixMilli())
pong := uint64(time.Now().UnixMicro())
latency := pong - ping

payload := make([]byte, 16)
binary.BigEndian.PutUint64(payload, uint64(ping))
binary.BigEndian.PutUint64(payload[8:], uint64(pong))
binary.BigEndian.PutUint64(payload, ping)
binary.BigEndian.PutUint64(payload[8:], pong)

mqtt.Client.Publish(topic, 0, false, payload)
utils.SugarLogger.Infof("[PING] Received ping from gr25/%s/%s in %dms", vehicleID, nodeID, latency)
utils.SugarLogger.Infof("[PING] Received ping from gr25/%s/%s in %dμs", vehicleID, nodeID, latency)

err := CreatePing(mapache.Ping{
VehicleID: vehicleID,
Ping: ping,
Pong: pong,
Latency: latency,
Ping: int(ping),
Pong: int(pong),
Latency: int(latency),
})
if err != nil {
utils.SugarLogger.Infof("Error creating ping: %s", err)
}
}

func GetPing(vehicleID string, millis int) mapache.Ping {
func GetPing(vehicleID string, micros int) mapache.Ping {
var ping mapache.Ping
database.DB.Where("vehicle_id = ? AND ping = ?", vehicleID, millis).First(&ping)
database.DB.Where("vehicle_id = ? AND ping = ?", vehicleID, micros).First(&ping)
return ping
}

Expand Down
Loading