diff --git a/bbn_m5atomS3_lite_env3/NmeaXDR.h b/bbn_m5atomS3_lite_env3/NmeaXDR.h new file mode 100644 index 0000000..fb34379 --- /dev/null +++ b/bbn_m5atomS3_lite_env3/NmeaXDR.h @@ -0,0 +1,75 @@ +#ifndef NmeaXDR_h +#define NmeaXDR_h + +/* + XDR - Transducer Measurement + https://gpsd.gitlab.io/gpsd/NMEA.html#_xdr_transducer_measurement + https://www.eye4software.com/hydromagic/documentation/articles-and-howtos/handling-nmea0183-xdr/ + + Format: $--XDR,a,x.x,a,c--c, ..... *hh + Example: + + $HCXDR,A,171,D,PITCH,A,-37,D,ROLL,G,367,,MAGX,G,2420,,MAGY,G,-8984,,MAGZ*41 + $SDXDR,C,23.15,C,WTHI*70 + + Transducer Types: + A - Angular displacement + C - Temperature + D - Depth + F - Frequency + H - Humidity + N - Force + P - Pressure + R - Flow + B - Absolute humidity + G - Generic + I - Current + L - Salinity + S - Switch, valve + T - Tachometer + U - Voltage + V - Volume + could be more + + Unit of measurement + "" - could be empty! + A - Amperes + B - Bars | Binary + C - Celsius + D - Degrees + H - Hertz + I - liters/second + K - Kelvin | Density, kg/m3 kilogram per cubic metre + M - Meters | Cubic Meters (m3) + N - Newton + P - Percent of full range | Pascal + R - RPM + S - Parts per thousand + V - Volts + could be more +*/ + +/* + Bareboat Necessities Sensors NMEA-0183 XDR Sentences: + + NMEA-0183 Sender + BB + + Temperature, pressure, humidity + + $BBXDR,C,28.07,C,TEMP*61 + $BBXDR,P,101328.38,P,PRES*76 + $BBXDR,H,44.57,P,HUMI*63 + +*/ + +#include "NmeaChecksum.h" + +void gen_nmea0183_xdr(const char *nmea_fmt, float value) { + char nmea_part[82]; + snprintf(nmea_part, 76, nmea_fmt, value); + int checksum = nmea0183_checksum(nmea_part); + Serial.printf("%s*%02X\r\n", nmea_part, checksum); +} + +#endif