1
- package common
1
+ package drivers
2
2
3
3
import (
4
4
"fmt"
5
5
"log/slog"
6
6
7
- "github.com/brokenCursor/usb-modem-cli/config"
8
7
"github.com/brokenCursor/usb-modem-cli/logging"
9
8
"github.com/spf13/viper"
10
9
)
@@ -13,8 +12,6 @@ import (
13
12
14
13
type (
15
14
BaseModem interface {
16
- SetHost (host string ) error
17
- GetHost () string
18
15
GetModel () string
19
16
}
20
17
@@ -47,49 +44,45 @@ type (
47
44
)
48
45
49
46
var (
50
- drivers map [string ]func (host string ) BaseModem = map [string ]func (host string ) BaseModem {}
51
- driverConfig * viper.Viper
52
- logger * slog.Logger
47
+ Drivers map [string ]func (config * viper.Viper , logger * slog.Logger ) (BaseModem , error ) = map [string ]func (config * viper.Viper , logger * slog.Logger ) (BaseModem , error ){}
48
+ logger * slog.Logger
53
49
)
54
50
55
51
func init () {
56
52
logger = logging .GetGeneralLogger ()
57
- driverConfig = config .Sub ("driver" )
58
53
}
59
54
60
55
func IsRegistered (name string ) bool {
61
56
// Check if driver has already been registered
62
- _ , ok := drivers [name ]
57
+ _ , ok := Drivers [name ]
63
58
return ok
64
59
}
65
60
66
- func RegisterDriver (name string , generator func (ip string ) BaseModem ) ( * viper.Viper , * slog.Logger ) {
61
+ func RegisterDriver (name string , generator func (config * viper.Viper , logger * slog.Logger ) ( BaseModem , error ) ) {
67
62
// Check if driver has already been registered
68
63
if IsRegistered (name ) {
69
64
panic (fmt .Sprintf ("attempted to register %s twice" , name ))
70
65
}
71
66
72
67
// Register the driver
73
- drivers [name ] = generator
68
+ Drivers [name ] = generator
74
69
logger .With ("name" , name ).Debug ("driver registered" )
75
-
76
- return driverConfig , logging .GetDriverLogger (name )
77
70
}
78
71
79
- func GetModemDriver (model string , host string ) (BaseModem , error ) {
72
+ func GetModemDriver (model string , config * viper. Viper , logger * slog. Logger ) (BaseModem , error ) {
80
73
if ! IsRegistered (model ) {
81
74
return nil , ErrUnknownModel
82
75
}
83
76
84
- logger .Debug ("driver instance created" , "driver" , model , "host" , host )
85
- return drivers [model ](host ), nil
77
+ logger .Debug ("driver instance created" , "driver" , model )
78
+ return Drivers [model ](config , logger )
86
79
}
87
80
88
81
func GetAvailableDrivers () * []string {
89
- keys := make ([]string , len (drivers ))
82
+ keys := make ([]string , len (Drivers ))
90
83
91
84
i := 0
92
- for k := range drivers {
85
+ for k := range Drivers {
93
86
keys [i ] = k
94
87
i ++
95
88
}
0 commit comments