I'm having an odd problem. Here's the short(ish) version:
I have two ESP32s connected via UART. ESP32-A reads PGN 130306 (wind) from N2K bus-A, corrects it for mast rotation, and forwards to ESP32-B in Actisense format. ESP32-B simply forwards the message to N2K bus-B. My Garmin displays happily report the (corrected) wind direction.
It would be more efficient/elegant to use a second CAN bus on ESP32-A, which I only recently got working (with a MCP2515 HAT). So now ESP32-A reads PGN 130306, corrects, and transmits directly onto bus B. The issue is that the Garmin displays do not acknowledge/display this wind data. However, SignalK sees wind data in both configurations. Aside from the obvious fact that SignalK is a more robust marine communication mechanism than Garmin, what am I doing wrong?
In the first configuration, ESP-A does this:
SetN2kPGN130306(correctN2kMsg, 1, windSpeedMeters, rotateout*(M_PI/180), N2kWind_Apparent);
correctN2kMsg.SendInActisenseFormat((Stream )&ESPlink);
and ESP-B is doing:
actisense_reader.ParseMessages();
(which, since there are no special handlers, simply forwards the message to bus B)
In the second configuration, the sole ESP is doing this:
SetN2kPGN130306(correctN2kMsg, 1, windSpeedMeters, rotateout(M_PI/180), N2kWind_Apparent);
n2kMain->SendMsg(correctN2kMsg);
In both configurations, the only source for PGN 130306 on the N2K bus that all of the displays are connected to, is an ESP32 registered on the network, using N2km_ListenAndSend mode. I'm struggling to figure out what's missing from the direct/single ESP config.