func (s *HackSession) InjectPacket(user api.User, TxPkt api.TransmitPacket) error { if s.Device == nil { return logger.Err("Device not set") } var err error pkt := api.CanData{} pkt.Src = user.GetName() pkt.ArbID = TxPkt.ArbId pkt.Network = TxPkt.Network pkt.B1, err = api.Atoui8(TxPkt.B1) if err != nil { return err } pkt.B2, err = api.Atoui8(TxPkt.B2) if err != nil { return err } pkt.B3, err = api.Atoui8(TxPkt.B3) if err != nil { return err } pkt.B4, err = api.Atoui8(TxPkt.B4) if err != nil { return err } pkt.B5, err = api.Atoui8(TxPkt.B5) if err != nil { return err } pkt.B6, err = api.Atoui8(TxPkt.B6) if err != nil { return err } pkt.B7, err = api.Atoui8(TxPkt.B7) if err != nil { return err } pkt.B8, err = api.Atoui8(TxPkt.B8) if err != nil { return err } err = s.Device.InjectPacket(pkt) return err }
func (e *Elm327) addPacket(canpkt api.CanData) { pkt := api.CanData{} pkt.SeqNo = e.seqNo e.seqNo += 1 pkt.Src = canpkt.Src pkt.AbsTime = time.Now().Format("10:00:00pm (EST)") pkt.RelTime = "TODO" // TODO pkt.Status = canpkt.Status pkt.Error = canpkt.Error pkt.Transmit = canpkt.Transmit pkt.Desc = canpkt.Desc pkt.Network = canpkt.Network pkt.Node = canpkt.Node pkt.ArbID = canpkt.ArbID pkt.Remote = canpkt.Remote pkt.Extended = canpkt.Extended pkt.B1 = canpkt.B1 pkt.B2 = canpkt.B2 pkt.B3 = canpkt.B3 pkt.B4 = canpkt.B4 pkt.B5 = canpkt.B5 pkt.B6 = canpkt.B6 pkt.B7 = canpkt.B7 pkt.B8 = canpkt.B8 pkt.Value = canpkt.Value pkt.Trigger = canpkt.Trigger e.Packets[e.packetIdx] = pkt e.packetIdx += 1 if e.packetIdx >= MAX_BUFFER { e.packetIdx = 0 } }
func (e *Elm327) parsePacket(data string) api.CanData { b := []byte(data) var p string gotArbId := false gotB1 := false gotB2 := false gotB3 := false gotB4 := false gotB5 := false gotB6 := false gotB7 := false gotB8 := false pkt := api.CanData{} idx := 0 done := false for done == false && idx < len(b) { if b[idx] == 60 { // < char done = true } else if !gotArbId { if b[idx] == 32 { gotArbId = true pkt.ArbID = p p = "" } else { p = p + string(b[idx]) } } else if !gotB1 { if b[idx] == 32 || b[idx] == 13 { gotB1 = true pkt.B1, _ = api.Hextoui8(p) p = "" if b[idx] == 13 { done = true } } else { p = p + string(b[idx]) } } else if !gotB2 { if b[idx] == 32 || b[idx] == 13 { gotB2 = true pkt.B2, _ = api.Hextoui8(p) p = "" if b[idx] == 13 { done = true } } else { p = p + string(b[idx]) } } else if !gotB3 { if b[idx] == 32 || b[idx] == 13 { gotB3 = true pkt.B3, _ = api.Hextoui8(p) p = "" if b[idx] == 13 { done = true } } else { p = p + string(b[idx]) } } else if !gotB4 { if b[idx] == 32 || b[idx] == 13 { gotB4 = true pkt.B4, _ = api.Hextoui8(p) p = "" if b[idx] == 13 { done = true } } else { p = p + string(b[idx]) } } else if !gotB5 { if b[idx] == 32 || b[idx] == 13 { gotB5 = true pkt.B5, _ = api.Hextoui8(p) p = "" if b[idx] == 13 { done = true } } else { p = p + string(b[idx]) } } else if !gotB6 { if b[idx] == 32 || b[idx] == 13 { gotB6 = true pkt.B6, _ = api.Hextoui8(p) p = "" if b[idx] == 13 { done = true } } else { p = p + string(b[idx]) } } else if !gotB7 { if b[idx] == 32 || b[idx] == 13 { gotB7 = true pkt.B7, _ = api.Hextoui8(p) p = "" if b[idx] == 13 { done = true } } else { p = p + string(b[idx]) } } else if !gotB8 { if b[idx] == 32 || b[idx] == 13 { gotB8 = true pkt.B8, _ = api.Hextoui8(p) done = true } else { p = p + string(b[idx]) } } idx += 1 } pkt.Network = e.Protocol return pkt }