@@ -22,23 +22,18 @@ import (
2222 "github.com/HyperloopUPV-H8/h9-backend/internal/excel"
2323 "github.com/HyperloopUPV-H8/h9-backend/internal/excel/ade"
2424 "github.com/HyperloopUPV-H8/h9-backend/internal/info"
25- "github.com/HyperloopUPV-H8/h9-backend/internal/logger_handler"
26- protection_logger "github.com/HyperloopUPV-H8/h9-backend/internal/message_logger"
2725 "github.com/HyperloopUPV-H8/h9-backend/internal/message_transfer"
28- "github.com/HyperloopUPV-H8/h9-backend/internal/order_logger"
2926 "github.com/HyperloopUPV-H8/h9-backend/internal/order_transfer"
30- "github.com/HyperloopUPV-H8/h9-backend/internal/packet_logger"
3127 "github.com/HyperloopUPV-H8/h9-backend/internal/pod_data"
3228 "github.com/HyperloopUPV-H8/h9-backend/internal/server"
33- "github.com/HyperloopUPV-H8/h9-backend/internal/state_space_logger"
3429 "github.com/HyperloopUPV-H8/h9-backend/internal/update_factory"
35- "github.com/HyperloopUPV-H8/h9-backend/internal/value_logger"
3630 vehicle_models "github.com/HyperloopUPV-H8/h9-backend/internal/vehicle/models"
3731 "github.com/HyperloopUPV-H8/h9-backend/internal/ws_handle"
3832 "github.com/HyperloopUPV-H8/h9-backend/pkg/abstraction"
3933 "github.com/HyperloopUPV-H8/h9-backend/pkg/broker"
4034 connection_topic "github.com/HyperloopUPV-H8/h9-backend/pkg/broker/topics/connection"
4135 data_topic "github.com/HyperloopUPV-H8/h9-backend/pkg/broker/topics/data"
36+ "github.com/HyperloopUPV-H8/h9-backend/pkg/excel/utils"
4237 "github.com/HyperloopUPV-H8/h9-backend/pkg/transport"
4338 "github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/sniffer"
4439 "github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/tcp"
@@ -55,6 +50,12 @@ import (
5550 "github.com/google/gopacket/pcap"
5651 "github.com/pelletier/go-toml/v2"
5752 trace "github.com/rs/zerolog/log"
53+
54+ "github.com/HyperloopUPV-H8/h9-backend/pkg/logger"
55+ data_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/data"
56+ messages_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/messages"
57+ order_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/order"
58+ state_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/state"
5859)
5960
6061var traceLevel = flag .String ("trace" , "info" , "set the trace level (\" fatal\" , \" error\" , \" warn\" , \" info\" , \" debug\" , \" trace\" )" )
@@ -128,20 +129,15 @@ func main() {
128129 updateFactory := update_factory .NewFactory ()
129130
130131 // <--- logger --->
131- packetLogger := packet_logger .NewPacketLogger (podData .Boards , config .PacketLogger )
132- valueLogger := value_logger .NewValueLogger (podData .Boards , config .ValueLogger )
133- orderLogger := order_logger .NewOrderLogger (podData .Boards , config .OrderLogger )
134- protectionLogger := protection_logger .NewMessageLogger (config .Vehicle .Messages .InfoIdKey , config .Vehicle .Messages .FaultIdKey , config .Vehicle .Messages .WarningIdKey , config .ProtectionLogger )
135- stateSpaceLogger := state_space_logger .NewStateSpaceLogger (info .MessageIds .StateSpace )
136-
137- loggers := map [string ]logger_handler.Logger {
138- "packets" : & packetLogger ,
139- "values" : & valueLogger ,
140- "orders" : & orderLogger ,
141- "protections" : & protectionLogger ,
142- "stateSpace" : & stateSpaceLogger ,
132+ var boardMap map [abstraction.BoardId ]string
133+ var subloggers = map [abstraction.LoggerName ]abstraction.Logger {
134+ data_logger .Name : data_logger .NewLogger (),
135+ messages_logger .Name : messages_logger .NewLogger (boardMap ),
136+ order_logger .Name : order_logger .NewLogger (),
137+ state_logger .Name : state_logger .NewLogger (),
143138 }
144- loggerHandler := logger_handler .NewLoggerHandler (loggers , config .LoggerHandler )
139+
140+ loggerHandler := logger .NewLogger (subloggers )
145141
146142 // <--- order transfer --->
147143 idToBoard := make (map [uint16 ]string )
@@ -189,40 +185,67 @@ func main() {
189185 transp .SetAPI (& transportAPI {
190186 OnNotification : func (notification abstraction.TransportNotification ) {
191187 packet := notification .(transport.PacketNotification )
188+
192189 switch p := packet .Packet .(type ) {
193190 case * data.Packet :
194- if _ , ok := orders [p .Id ()]; ok {
195- loggerHandler .Log (order_logger .LoggableOrder (* p ))
196- return
197- }
198-
199191 update := updateFactory .NewUpdate (p )
200192 err := broker .Push (data_topic .NewPush (& update ))
201193 if err != nil {
202194 fmt .Println (err )
203195 }
204196
205- loggerHandler .Log (packet_logger .ToLoggablePacket (p ))
197+ err = loggerHandler .PushRecord (& data_logger.Record {
198+ Packet : p ,
199+ })
206200
207- for id , value := range p . GetValues () {
208- loggerHandler . Log ( value_logger . ToLoggableValue ( string ( id ), value , p . Timestamp ()) )
201+ if err != nil {
202+ fmt . Println ( "Error pushing record to logger: " , err )
209203 }
204+
210205 case * info_packet.Packet :
211206 messageTransfer .SendMessage (p )
212- loggerHandler .Log (protection_logger .LoggableInfo (* p ))
207+
208+ err = loggerHandler .PushRecord (& messages_logger.Record {
209+ Packet : p ,
210+ })
211+
212+ if err != nil {
213+ fmt .Println ("Error pushing record to logger: " , err )
214+ }
215+
213216 case * protection.Packet :
214217 messageTransfer .SendMessage (p )
215- loggerHandler .Log (protection_logger .LoggableProtection (* p ))
218+
219+ packet := info_packet .NewPacket (p .Id ())
220+ packet .BoardId = p .BoardId
221+ packet .Timestamp = p .Timestamp
222+ packet .Msg = info_packet .InfoData (fmt .Sprint (p ))
223+
224+ err = loggerHandler .PushRecord (& messages_logger.Record {
225+ Packet : packet ,
226+ })
227+
228+ if err != nil {
229+ fmt .Println ("Error pushing record to logger: " , err )
230+ }
231+
216232 case * blcu_packet.Ack :
217233 if useBlcu {
218234 blcu .NotifyAck ()
219235 }
236+
220237 case * state.Space :
221- for _ , row := range p .State () {
222- loggerHandler .Log (state_space_logger .LoggableStateSpaceRow (row ))
238+ err = loggerHandler .PushRecord (& state_logger.Record {
239+ Packet : p ,
240+ })
241+
242+ if err != nil {
243+ fmt .Println ("Error pushing record to logger: " , err )
223244 }
245+
224246 case * order.Add :
225247 orderTransfer .AddStateOrders (* p )
248+
226249 case * order.Remove :
227250 orderTransfer .RemoveStateOrders (* p )
228251 }
@@ -284,7 +307,13 @@ func main() {
284307 trace .Error ().Any ("order" , order ).Err (err ).Msg ("error sending order" )
285308 }
286309
287- loggerHandler .Log (order_logger .LoggableOrder (order ))
310+ err = loggerHandler .PushRecord (& order_logger.Record {
311+ Packet : & order ,
312+ })
313+
314+ if err != nil {
315+ fmt .Println ("Error pushing record to logger: " , err )
316+ }
288317 }
289318 }()
290319
@@ -310,7 +339,7 @@ func main() {
310339
311340 websocketBroker .RegisterHandle (& connectionTransfer , config .Connections .UpdateTopic , "connection/update" )
312341 websocketBroker .RegisterHandle (& dataTransfer , "podData/update" )
313- websocketBroker .RegisterHandle (& loggerHandler , config .LoggerHandler .Topics .Enable )
342+ websocketBroker .RegisterHandle (loggerHandler , config .LoggerHandler .Topics .Enable )
314343 websocketBroker .RegisterHandle (& messageTransfer , "message/update" )
315344 websocketBroker .RegisterHandle (& orderTransfer , config .Orders .SendTopic , "order/stateOrders" )
316345
@@ -462,27 +491,29 @@ func getTransportDecEnc(info info.Info, podData pod_data.PodData) (*presentation
462491 for i , measurement := range packet .Measurements {
463492 switch meas := measurement .(type ) {
464493 case pod_data.NumericMeasurement :
494+ podOps := getOps (meas .PodUnits )
495+ displayOps := getOps (meas .DisplayUnits )
465496 switch meas .Type {
466497 case "uint8" :
467- descriptor [i ] = data.NewNumericDescriptor [uint8 ](data .ValueName (meas .Id ))
498+ descriptor [i ] = data .NewNumericDescriptor [uint8 ](data .ValueName (meas .Id ), podOps , displayOps )
468499 case "uint16" :
469- descriptor [i ] = data.NewNumericDescriptor [uint16 ](data .ValueName (meas .Id ))
500+ descriptor [i ] = data .NewNumericDescriptor [uint16 ](data .ValueName (meas .Id ), podOps , displayOps )
470501 case "uint32" :
471- descriptor [i ] = data.NewNumericDescriptor [uint32 ](data .ValueName (meas .Id ))
502+ descriptor [i ] = data .NewNumericDescriptor [uint32 ](data .ValueName (meas .Id ), podOps , displayOps )
472503 case "uint64" :
473- descriptor [i ] = data.NewNumericDescriptor [uint64 ](data .ValueName (meas .Id ))
504+ descriptor [i ] = data .NewNumericDescriptor [uint64 ](data .ValueName (meas .Id ), podOps , displayOps )
474505 case "int8" :
475- descriptor [i ] = data.NewNumericDescriptor [int8 ](data .ValueName (meas .Id ))
506+ descriptor [i ] = data .NewNumericDescriptor [int8 ](data .ValueName (meas .Id ), podOps , displayOps )
476507 case "int16" :
477- descriptor [i ] = data.NewNumericDescriptor [int16 ](data .ValueName (meas .Id ))
508+ descriptor [i ] = data .NewNumericDescriptor [int16 ](data .ValueName (meas .Id ), podOps , displayOps )
478509 case "int32" :
479- descriptor [i ] = data.NewNumericDescriptor [int32 ](data .ValueName (meas .Id ))
510+ descriptor [i ] = data .NewNumericDescriptor [int32 ](data .ValueName (meas .Id ), podOps , displayOps )
480511 case "int64" :
481- descriptor [i ] = data.NewNumericDescriptor [int64 ](data .ValueName (meas .Id ))
512+ descriptor [i ] = data .NewNumericDescriptor [int64 ](data .ValueName (meas .Id ), podOps , displayOps )
482513 case "float32" :
483- descriptor [i ] = data.NewNumericDescriptor [float32 ](data .ValueName (meas .Id ))
514+ descriptor [i ] = data .NewNumericDescriptor [float32 ](data .ValueName (meas .Id ), podOps , displayOps )
484515 case "float64" :
485- descriptor [i ] = data.NewNumericDescriptor [float64 ](data .ValueName (meas .Id ))
516+ descriptor [i ] = data .NewNumericDescriptor [float64 ](data .ValueName (meas .Id ), podOps , displayOps )
486517 default :
487518 panic (fmt .Sprintf ("unexpected numeric type for %s: %s" , meas .Id , meas .Type ))
488519 }
@@ -526,6 +557,17 @@ func getTransportDecEnc(info info.Info, podData pod_data.PodData) (*presentation
526557 return decoder , encoder
527558}
528559
560+ func getOps (units utils.Units ) data.ConversionDescriptor {
561+ output := make (data.ConversionDescriptor , len (units .Operations ))
562+ for i , operation := range units .Operations {
563+ output [i ] = data.Operation {
564+ Operator : operation .Operator ,
565+ Operand : operation .Operand ,
566+ }
567+ }
568+ return output
569+ }
570+
529571type transportAPI struct {
530572 OnNotification func (abstraction.TransportNotification )
531573 OnConnectionUpdate func (abstraction.TransportTarget , bool )
0 commit comments