Initial cloud-services repo - gateway service + pkg modules

This commit is contained in:
Chris Rai
2026-01-30 23:14:52 -05:00
commit fbb820d7b3
1037 changed files with 171318 additions and 0 deletions

76
pkg/common/car_data.go Normal file
View File

@@ -0,0 +1,76 @@
package common
import (
"encoding/json"
"fiskerinc.com/modules/grpc/kafka_grpc"
"github.com/pkg/errors"
)
type CANBusFrame struct {
EpochUsec int64 `json:"epoch_usec"`
ID int `json:"id"`
Data string `json:"data"`
}
type CANBusMessageRaw struct {
EpochUsec int64 `json:"epoch_usec"`
Dropped int `json:"dropped"`
Filtered int `json:"filtered"`
Frames []CANBusFrame `json:"frames"`
}
type CarDataBatchPayloadRaw struct {
Handler string `json:"handler"`
Data CANBusMessageRaw `json:"data"`
Version string `json:"version"`
}
// CarDataBatchPayload is a payload received from T.Rex
//
// it contains batches of CANMessages (can.go)
type CarDataBatchPayload struct {
Handler string `json:"handler"`
Data CANBusMessage `json:"data"`
Version string `json:"version"`
}
func (c *CarDataBatchPayload) Marshal() ([]byte, error) {
data, err := json.Marshal(*c)
return data, errors.WithStack(err)
}
func (c *CarDataBatchPayload) Unmarshal(data []byte) error {
err := json.Unmarshal(data, c)
return errors.WithStack(err)
}
func (c *CarDataBatchPayload) ToGrpc(data MessageRawJSON, vin string) (*kafka_grpc.GRPC_BatchPayload, error) {
var payload CANBusMessageRaw
err := json.Unmarshal(data.Data, &payload)
if err != nil {
return nil, errors.WithStack(err)
}
frames := make([]*kafka_grpc.GRPC_CANFrame, len(payload.Frames))
msg := kafka_grpc.GRPC_CANData{
EpochUsec: payload.EpochUsec,
Dropped: int32(payload.Dropped),
Filtered: int32(payload.Filtered),
Frames: frames,
Vin: vin,
}
for i, frame := range payload.Frames {
msg.Frames[i] = &kafka_grpc.GRPC_CANFrame{
Epoch: frame.EpochUsec,
ID: int32(frame.ID),
Value: []byte(frame.Data),
}
}
batch_payload := kafka_grpc.GRPC_BatchPayload{
Handler: data.Handler,
Data: &msg,
Version: data.Version,
}
return &batch_payload, nil
}