Refactor kafka to pure Go (franz-go), fix DBC stubs, update Dockerfile
This commit is contained in:
43
pkg/dbc/README.md
Normal file
43
pkg/dbc/README.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# DBC Package
|
||||
|
||||
CAN database (DBC) signal definitions and parsing utilities.
|
||||
|
||||
## Structure
|
||||
|
||||
- `models/` - Core types (DBCCollection, CANMessage, CANSignal)
|
||||
- `state/` - State tracking for CAN signals
|
||||
- `diagnostics/` - Diagnostic signal handling
|
||||
- `fm29_*/`, `n60/` - Generated packages from DBC files (stubs by default)
|
||||
|
||||
## Generated Packages
|
||||
|
||||
The `fm29_*` and `n60` packages contain CAN signal definitions generated from DBC files. By default, these are stubs that return empty collections.
|
||||
|
||||
To generate real definitions, you need:
|
||||
1. DBC source files (from CEC-Common repo or equivalent)
|
||||
2. The `cantool` from `pkg/can-go`
|
||||
|
||||
## Generating DBC Code
|
||||
|
||||
```bash
|
||||
# From cloud-services root
|
||||
go run ./pkg/can-go/cmd/cantool generate /path/to/dbc/files ./pkg/dbc
|
||||
```
|
||||
|
||||
Or use the generate script:
|
||||
```bash
|
||||
./scripts/generate-dbc.sh /path/to/dbc/files
|
||||
```
|
||||
|
||||
## When Do You Need Real DBC Packages?
|
||||
|
||||
- **Gateway**: Uses only `dbc/models` - stubs are fine
|
||||
- **Optimus**: Needs real DBC for CAN signal parsing
|
||||
- **Ditto**: Needs real DBC for digital twin state
|
||||
- **Beacon**: Needs real DBC for diagnostic alerts
|
||||
|
||||
## Adding New DBC Versions
|
||||
|
||||
1. Add DBC files to source directory
|
||||
2. Run cantool generate
|
||||
3. Update `new_dbc_collection.go` to include new version
|
||||
@@ -5,13 +5,13 @@ import (
|
||||
"math"
|
||||
"strings"
|
||||
|
||||
"fiskerinc.com/modules/common"
|
||||
"fiskerinc.com/modules/dbc/diagnostics"
|
||||
"fiskerinc.com/modules/dbc/state"
|
||||
"fiskerinc.com/modules/grpc/kafka_grpc"
|
||||
"github.com/fiskerinc/cloud-services/pkg/common"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/diagnostics"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/state"
|
||||
"github.com/fiskerinc/cloud-services/pkg/grpc/kafka_grpc"
|
||||
|
||||
can "github.com/Fisker-Inc/project-ai-can-go"
|
||||
"github.com/Fisker-Inc/project-ai-can-go/pkg/descriptor"
|
||||
can "github.com/fiskerinc/cloud-services/pkg/can-go"
|
||||
"github.com/fiskerinc/cloud-services/pkg/can-go/pkg/descriptor"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dbc
|
||||
|
||||
import (
|
||||
"fiskerinc.com/modules/dbc/diagnostics"
|
||||
fm29_frs90 "fiskerinc.com/modules/dbc/fm29_frs90"
|
||||
"fiskerinc.com/modules/dbc/models"
|
||||
"fiskerinc.com/modules/dbc/state"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/diagnostics"
|
||||
fm29_frs90 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frs90"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/models"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/state"
|
||||
)
|
||||
|
||||
func NewFM29_FRS90_DBC() models.DBCVersionInterface {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dbc
|
||||
|
||||
import (
|
||||
"fiskerinc.com/modules/dbc/diagnostics"
|
||||
fm29_frsd0 "fiskerinc.com/modules/dbc/fm29_frsd0"
|
||||
"fiskerinc.com/modules/dbc/models"
|
||||
"fiskerinc.com/modules/dbc/state"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/diagnostics"
|
||||
fm29_frsd0 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd0"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/models"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/state"
|
||||
)
|
||||
|
||||
func NewFM29_FRSD0_DBC() models.DBCVersionInterface {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dbc
|
||||
|
||||
import (
|
||||
"fiskerinc.com/modules/dbc/diagnostics"
|
||||
fm29_frsd21 "fiskerinc.com/modules/dbc/fm29_frsd21"
|
||||
"fiskerinc.com/modules/dbc/models"
|
||||
"fiskerinc.com/modules/dbc/state"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/diagnostics"
|
||||
fm29_frsd21 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd21"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/models"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/state"
|
||||
)
|
||||
|
||||
func NewFM29_FRSD21_DBC() models.DBCVersionInterface {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dbc
|
||||
|
||||
import (
|
||||
"fiskerinc.com/modules/dbc/diagnostics"
|
||||
fm29_frsd390 "fiskerinc.com/modules/dbc/fm29_frsd390"
|
||||
"fiskerinc.com/modules/dbc/models"
|
||||
"fiskerinc.com/modules/dbc/state"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/diagnostics"
|
||||
fm29_frsd390 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd390"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/models"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/state"
|
||||
)
|
||||
|
||||
func NewFM29_FRSD390_DBC() models.DBCVersionInterface {
|
||||
|
||||
@@ -6,15 +6,15 @@ import (
|
||||
"regexp"
|
||||
"testing"
|
||||
|
||||
"fiskerinc.com/modules/dbc"
|
||||
fm29_frs90 "fiskerinc.com/modules/dbc/fm29_frs90"
|
||||
fm29_frsd0 "fiskerinc.com/modules/dbc/fm29_frsd0"
|
||||
fm29_frsd21 "fiskerinc.com/modules/dbc/fm29_frsd21"
|
||||
fm29_frsd390 "fiskerinc.com/modules/dbc/fm29_frsd390"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc"
|
||||
fm29_frs90 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frs90"
|
||||
fm29_frsd0 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd0"
|
||||
fm29_frsd21 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd21"
|
||||
fm29_frsd390 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd390"
|
||||
|
||||
"fiskerinc.com/modules/dbc/state"
|
||||
"fiskerinc.com/modules/grpc/kafka_grpc"
|
||||
"fiskerinc.com/modules/testhelper"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/state"
|
||||
"github.com/fiskerinc/cloud-services/pkg/grpc/kafka_grpc"
|
||||
"github.com/fiskerinc/cloud-services/pkg/testhelper"
|
||||
"github.com/golang/protobuf/proto"
|
||||
"github.com/jinzhu/copier"
|
||||
)
|
||||
|
||||
@@ -5,15 +5,15 @@ import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
fm29_frs90 "fiskerinc.com/modules/dbc/fm29_frs90"
|
||||
fm29_frsd0 "fiskerinc.com/modules/dbc/fm29_frsd0"
|
||||
fm29_frsd21 "fiskerinc.com/modules/dbc/fm29_frsd21"
|
||||
fm29_frsd390 "fiskerinc.com/modules/dbc/fm29_frsd390"
|
||||
n60 "fiskerinc.com/modules/dbc/n60"
|
||||
"fiskerinc.com/modules/testhelper"
|
||||
fm29_frs90 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frs90"
|
||||
fm29_frsd0 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd0"
|
||||
fm29_frsd21 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd21"
|
||||
fm29_frsd390 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd390"
|
||||
n60 "github.com/fiskerinc/cloud-services/pkg/dbc/n60"
|
||||
"github.com/fiskerinc/cloud-services/pkg/testhelper"
|
||||
|
||||
can "github.com/Fisker-Inc/project-ai-can-go"
|
||||
"github.com/Fisker-Inc/project-ai-can-go/pkg/descriptor"
|
||||
can "github.com/fiskerinc/cloud-services/pkg/can-go"
|
||||
"github.com/fiskerinc/cloud-services/pkg/can-go/pkg/descriptor"
|
||||
)
|
||||
|
||||
// For generating test data
|
||||
|
||||
19
pkg/dbc/fm29_frs90/stub.go
Normal file
19
pkg/dbc/fm29_frs90/stub.go
Normal file
@@ -0,0 +1,19 @@
|
||||
// Package fm29_frs90 is a stub for generated DBC code.
|
||||
// Run ./scripts/generate-dbc.sh to generate actual CAN signal definitions.
|
||||
// See pkg/dbc/README.md for details.
|
||||
package fm29_frs90
|
||||
|
||||
import (
|
||||
"github.com/fiskerinc/cloud-services/pkg/can-go/pkg/descriptor"
|
||||
)
|
||||
|
||||
// Hash is the DBC file hash - stub value
|
||||
const Hash = "stub_fm29_frs90"
|
||||
|
||||
// MessagesDescriptor is a stub for the generated CAN message descriptor
|
||||
type MessagesDescriptor struct{}
|
||||
|
||||
// Database returns an empty CAN database - regenerate with cantool for actual definitions
|
||||
func (m *MessagesDescriptor) Database() *descriptor.Database {
|
||||
return &descriptor.Database{}
|
||||
}
|
||||
19
pkg/dbc/fm29_frsd0/stub.go
Normal file
19
pkg/dbc/fm29_frsd0/stub.go
Normal file
@@ -0,0 +1,19 @@
|
||||
// Package fm29_frsd0 is a stub for generated DBC code.
|
||||
// Run ./scripts/generate-dbc.sh to generate actual CAN signal definitions.
|
||||
// See pkg/dbc/README.md for details.
|
||||
package fm29_frsd0
|
||||
|
||||
import (
|
||||
"github.com/fiskerinc/cloud-services/pkg/can-go/pkg/descriptor"
|
||||
)
|
||||
|
||||
// Hash is the DBC file hash - stub value
|
||||
const Hash = "stub_fm29_frsd0"
|
||||
|
||||
// MessagesDescriptor is a stub for the generated CAN message descriptor
|
||||
type MessagesDescriptor struct{}
|
||||
|
||||
// Database returns an empty CAN database - regenerate with cantool for actual definitions
|
||||
func (m *MessagesDescriptor) Database() *descriptor.Database {
|
||||
return &descriptor.Database{}
|
||||
}
|
||||
19
pkg/dbc/fm29_frsd21/stub.go
Normal file
19
pkg/dbc/fm29_frsd21/stub.go
Normal file
@@ -0,0 +1,19 @@
|
||||
// Package fm29_frsd21 is a stub for generated DBC code.
|
||||
// Run ./scripts/generate-dbc.sh to generate actual CAN signal definitions.
|
||||
// See pkg/dbc/README.md for details.
|
||||
package fm29_frsd21
|
||||
|
||||
import (
|
||||
"github.com/fiskerinc/cloud-services/pkg/can-go/pkg/descriptor"
|
||||
)
|
||||
|
||||
// Hash is the DBC file hash - stub value
|
||||
const Hash = "stub_fm29_frsd21"
|
||||
|
||||
// MessagesDescriptor is a stub for the generated CAN message descriptor
|
||||
type MessagesDescriptor struct{}
|
||||
|
||||
// Database returns an empty CAN database - regenerate with cantool for actual definitions
|
||||
func (m *MessagesDescriptor) Database() *descriptor.Database {
|
||||
return &descriptor.Database{}
|
||||
}
|
||||
19
pkg/dbc/fm29_frsd390/stub.go
Normal file
19
pkg/dbc/fm29_frsd390/stub.go
Normal file
@@ -0,0 +1,19 @@
|
||||
// Package fm29_frsd390 is a stub for generated DBC code.
|
||||
// Run ./scripts/generate-dbc.sh to generate actual CAN signal definitions.
|
||||
// See pkg/dbc/README.md for details.
|
||||
package fm29_frsd390
|
||||
|
||||
import (
|
||||
"github.com/fiskerinc/cloud-services/pkg/can-go/pkg/descriptor"
|
||||
)
|
||||
|
||||
// Hash is the DBC file hash - stub value
|
||||
const Hash = "stub_fm29_frsd390"
|
||||
|
||||
// MessagesDescriptor is a stub for the generated CAN message descriptor
|
||||
type MessagesDescriptor struct{}
|
||||
|
||||
// Database returns an empty CAN database - regenerate with cantool for actual definitions
|
||||
func (m *MessagesDescriptor) Database() *descriptor.Database {
|
||||
return &descriptor.Database{}
|
||||
}
|
||||
@@ -3,10 +3,10 @@ package models
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"fiskerinc.com/modules/dbc/state"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/state"
|
||||
|
||||
"fiskerinc.com/modules/common"
|
||||
"fiskerinc.com/modules/digitaltwin"
|
||||
"github.com/fiskerinc/cloud-services/pkg/common"
|
||||
"github.com/fiskerinc/cloud-services/pkg/digitaltwin"
|
||||
)
|
||||
|
||||
type CANMessageInterface interface {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"fiskerinc.com/modules/common"
|
||||
"github.com/fiskerinc/cloud-services/pkg/common"
|
||||
)
|
||||
|
||||
func NewCANSignal(position int, name string, convert func(value float64) interface{}) CANSignal {
|
||||
|
||||
@@ -3,11 +3,11 @@ package models
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"fiskerinc.com/modules/common"
|
||||
"fiskerinc.com/modules/dbc/state"
|
||||
"fiskerinc.com/modules/digitaltwin"
|
||||
"fiskerinc.com/modules/grpc/kafka_grpc"
|
||||
"fiskerinc.com/modules/logger"
|
||||
"github.com/fiskerinc/cloud-services/pkg/common"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/state"
|
||||
"github.com/fiskerinc/cloud-services/pkg/digitaltwin"
|
||||
"github.com/fiskerinc/cloud-services/pkg/grpc/kafka_grpc"
|
||||
"github.com/fiskerinc/cloud-services/pkg/logger"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@ import (
|
||||
"math"
|
||||
"strings"
|
||||
|
||||
"fiskerinc.com/modules/common"
|
||||
"fiskerinc.com/modules/digitaltwin"
|
||||
"fiskerinc.com/modules/grpc/kafka_grpc"
|
||||
"github.com/fiskerinc/cloud-services/pkg/common"
|
||||
"github.com/fiskerinc/cloud-services/pkg/digitaltwin"
|
||||
"github.com/fiskerinc/cloud-services/pkg/grpc/kafka_grpc"
|
||||
|
||||
can "github.com/Fisker-Inc/project-ai-can-go"
|
||||
"github.com/Fisker-Inc/project-ai-can-go/pkg/descriptor"
|
||||
can "github.com/fiskerinc/cloud-services/pkg/can-go"
|
||||
"github.com/fiskerinc/cloud-services/pkg/can-go/pkg/descriptor"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"fiskerinc.com/modules/cache"
|
||||
"fiskerinc.com/modules/utils/envtool"
|
||||
"github.com/fiskerinc/cloud-services/pkg/cache"
|
||||
"github.com/fiskerinc/cloud-services/pkg/utils/envtool"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
19
pkg/dbc/n60/stub.go
Normal file
19
pkg/dbc/n60/stub.go
Normal file
@@ -0,0 +1,19 @@
|
||||
// Package n60 is a stub for generated DBC code.
|
||||
// Run ./scripts/generate-dbc.sh to generate actual CAN signal definitions.
|
||||
// See pkg/dbc/README.md for details.
|
||||
package n60
|
||||
|
||||
import (
|
||||
"github.com/fiskerinc/cloud-services/pkg/can-go/pkg/descriptor"
|
||||
)
|
||||
|
||||
// Hash is the DBC file hash - stub value
|
||||
const Hash = "stub_n60"
|
||||
|
||||
// MessagesDescriptor is a stub for the generated CAN message descriptor
|
||||
type MessagesDescriptor struct{}
|
||||
|
||||
// Database returns an empty CAN database - regenerate with cantool for actual definitions
|
||||
func (m *MessagesDescriptor) Database() *descriptor.Database {
|
||||
return &descriptor.Database{}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package dbc
|
||||
|
||||
import (
|
||||
fm29_frs90 "fiskerinc.com/modules/dbc/fm29_frs90"
|
||||
fm29_frsd0 "fiskerinc.com/modules/dbc/fm29_frsd0"
|
||||
fm29_frsd21 "fiskerinc.com/modules/dbc/fm29_frsd21"
|
||||
fm29_frsd390 "fiskerinc.com/modules/dbc/fm29_frsd390"
|
||||
"fiskerinc.com/modules/dbc/models"
|
||||
fm29_frs90 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frs90"
|
||||
fm29_frsd0 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd0"
|
||||
fm29_frsd21 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd21"
|
||||
fm29_frsd390 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd390"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/models"
|
||||
)
|
||||
|
||||
// This is the DBC hash before frsd0 was fixed
|
||||
|
||||
@@ -3,11 +3,11 @@ package dbc_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"fiskerinc.com/modules/dbc"
|
||||
fm29_frs90 "fiskerinc.com/modules/dbc/fm29_frs90"
|
||||
fm29_frsd0 "fiskerinc.com/modules/dbc/fm29_frsd0"
|
||||
"fiskerinc.com/modules/dbc/models"
|
||||
"fiskerinc.com/modules/testhelper"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc"
|
||||
fm29_frs90 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frs90"
|
||||
fm29_frsd0 "github.com/fiskerinc/cloud-services/pkg/dbc/fm29_frsd0"
|
||||
"github.com/fiskerinc/cloud-services/pkg/dbc/models"
|
||||
"github.com/fiskerinc/cloud-services/pkg/testhelper"
|
||||
)
|
||||
|
||||
func TestNewDBCCollection(t *testing.T) {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package state
|
||||
|
||||
import (
|
||||
"fiskerinc.com/modules/common"
|
||||
"fiskerinc.com/modules/redis"
|
||||
"github.com/fiskerinc/cloud-services/pkg/common"
|
||||
"github.com/fiskerinc/cloud-services/pkg/redis"
|
||||
)
|
||||
|
||||
type StateFunc func(*redis.RedisBatchCommands, string, int, []common.CANSignal) error
|
||||
|
||||
Reference in New Issue
Block a user