package main import ( "encoding/binary" "time" "pm3.dev/cvend" "pm3.dev/pic32" ) func must[V any](v V, err error) V { if err != nil { panic(err) } return v } func main() { cv := must(cvend.OpenIPP(nil)) defer cv.Close() var lastIgnition bool pic := must(pic32.OpenIPP(func(msgType byte, msgData []byte) { if msgType == 0x03 && binary.BigEndian.Uint16(msgData[:2]) == 0x03fb { ignition := msgData[2] != 0 if lastIgnition != ignition { lastIgnition = ignition if ignition { if err := cv.SendIPP(0x22, []byte{0x06, 0x00, 0x01, 0x00}); err != nil { panic(err) } } } } })) defer pic.Close() for { if err := pic.SendIPP(0x02, []byte{0x03, 0xfb}); err != nil { panic(err) } time.Sleep(100 * time.Millisecond) } }