27#ifndef PROTOCORE_J1939_H
28#define PROTOCORE_J1939_H
32#if PROTOCORE_ENABLE_J1939
41#define J1939_PGN_TP_CM 0x00EC00u
42#define J1939_PGN_TP_DT 0x00EB00u
43#define J1939_PGN_ADDRESS_CLAIM 0x00EE00u
44#define J1939_PGN_REQUEST 0x00EA00u
45#define J1939_ADDR_GLOBAL 0xFFu
46#define J1939_ADDR_NULL 0xFEu
47#define J1939_PDU2_THRESHOLD 240u
50#define J1939_TP_CM_RTS 0x10u
51#define J1939_TP_CM_CTS 0x11u
52#define J1939_TP_CM_EOM_ACK 0x13u
53#define J1939_TP_CM_BAM 0x20u
54#define J1939_TP_CM_ABORT 0xFFu
56#define J1939_TP_DT_LEN 7u
58#define J1939_PGN_EEC1 0x00F004u
59#define J1939_PGN_ET1 0x00FEEEu
60#define J1939_PGN_LFE 0x00FEF2u
61#define J1939_PGN_AMB 0x00FEF5u
62#define J1939_PGN_IC1 0x00FEF6u
63#define J1939_PGN_VD 0x00FEE0u
64#define J1939_PGN_CCVS 0x00FEF1u
65#define J1939_PGN_DM1 0x00FECAu
68#define J1939_TORQUE_NA ((int16_t)0x7FFF)
102 uint8_t buf[PROTOCORE_J1939_TP_MAX];
109 int16_t drivers_demand_torque_pct;
110 int16_t actual_engine_torque_pct;
112 float engine_speed_rpm;
119 float coolant_temp_c;
132 float instant_econ_kmpl;
149 float ambient_temp_c;
161 float trap_inlet_kpa;
169 float air_filter_kpa;
171 float exhaust_temp_c;
173 float coolant_filter_kpa;
192 float wheel_speed_kmh;
211 uint8_t amber_warning;
245} J1939BuildMessageArgs;
253 uint32_t requested_pgn;
254} J1939BuildRequestArgs;
262} J1939BuildAddressClaimArgs;
268 uint8_t industry_group;
269 uint8_t vehicle_system_instance;
270 uint8_t vehicle_system;
272 uint8_t function_instance;
273 uint8_t ecu_instance;
274 uint16_t manufacturer_code;
275 uint32_t identity_number;
282} J1939TpNumPacketsArgs;
291} J1939BuildBamCmArgs;
300 const uint8_t *chunk;
322} J1939DecodeEec1Args;
364} J1939DecodeCcvsArgs;
439 J1939EncodeIdArgs encode_id_args;
440 J1939DecodeIdArgs decode_id_args;
441 J1939BuildMessageArgs build_message_args;
442 J1939BuildRequestArgs build_request_args;
443 J1939BuildAddressClaimArgs build_address_claim_args;
444 J1939BuildNameArgs build_name_args;
445 J1939TpNumPacketsArgs tp_num_packets_args;
446 J1939BuildBamCmArgs build_bam_cm_args;
447 J1939BuildTpDtArgs build_tp_dt_args;
448 J1939TpResetArgs tp_reset_args;
449 J1939TpFeedArgs tp_feed_args;
450 J1939DecodeEec1Args decode_eec1_args;
451 J1939DecodeEt1Args decode_et1_args;
452 J1939DecodeLfeArgs decode_lfe_args;
453 J1939DecodeAmbArgs decode_amb_args;
454 J1939DecodeIc1Args decode_ic1_args;
455 J1939DecodeVdArgs decode_vd_args;
456 J1939DecodeCcvsArgs decode_ccvs_args;
457 J1939DecodeDm1Args decode_dm1_args;
465extern J1939Vars J1939V;
470 void (*
const encode_id)(uint8_t *work);
471 void (*
const decode_id)(uint8_t *work);
472 void (*
const build_message)(uint8_t *work);
473 void (*
const build_request)(uint8_t *work);
474 void (*
const build_address_claim)(uint8_t *work);
475 void (*
const build_name)(uint8_t *work);
476 void (*
const tp_num_packets)(uint8_t *work);
477 void (*
const build_bam_cm)(uint8_t *work);
478 void (*
const build_tp_dt)(uint8_t *work);
479 void (*
const tp_reset)(uint8_t *work);
480 void (*
const tp_feed)(uint8_t *work);
481 void (*
const decode_eec1)(uint8_t *work);
482 void (*
const decode_et1)(uint8_t *work);
483 void (*
const decode_lfe)(uint8_t *work);
484 void (*
const decode_amb)(uint8_t *work);
485 void (*
const decode_ic1)(uint8_t *work);
486 void (*
const decode_vd)(uint8_t *work);
487 void (*
const decode_ccvs)(uint8_t *work);
488 void (*
const decode_dm1)(uint8_t *work);
493void protocore_j1939_encode_id(uint8_t *work);
494void protocore_j1939_decode_id(uint8_t *work);
495void protocore_j1939_build_message(uint8_t *work);
496void protocore_j1939_build_request(uint8_t *work);
497void protocore_j1939_build_address_claim(uint8_t *work);
498void protocore_j1939_build_name(uint8_t *work);
499void protocore_j1939_tp_num_packets(uint8_t *work);
500void protocore_j1939_build_bam_cm(uint8_t *work);
501void protocore_j1939_build_tp_dt(uint8_t *work);
502void protocore_j1939_tp_reset(uint8_t *work);
503void protocore_j1939_tp_feed(uint8_t *work);
504void protocore_j1939_decode_eec1(uint8_t *work);
505void protocore_j1939_decode_et1(uint8_t *work);
506void protocore_j1939_decode_lfe(uint8_t *work);
507void protocore_j1939_decode_amb(uint8_t *work);
508void protocore_j1939_decode_ic1(uint8_t *work);
509void protocore_j1939_decode_vd(uint8_t *work);
510void protocore_j1939_decode_ccvs(uint8_t *work);
511void protocore_j1939_decode_dm1(uint8_t *work);
517static const J1939Ns J1939 __attribute__((unused)) = {
518 .encode_id = protocore_j1939_encode_id,
519 .decode_id = protocore_j1939_decode_id,
520 .build_message = protocore_j1939_build_message,
521 .build_request = protocore_j1939_build_request,
522 .build_address_claim = protocore_j1939_build_address_claim,
523 .build_name = protocore_j1939_build_name,
524 .tp_num_packets = protocore_j1939_tp_num_packets,
525 .build_bam_cm = protocore_j1939_build_bam_cm,
526 .build_tp_dt = protocore_j1939_build_tp_dt,
527 .tp_reset = protocore_j1939_tp_reset,
528 .tp_feed = protocore_j1939_tp_feed,
529 .decode_eec1 = protocore_j1939_decode_eec1,
530 .decode_et1 = protocore_j1939_decode_et1,
531 .decode_lfe = protocore_j1939_decode_lfe,
532 .decode_amb = protocore_j1939_decode_amb,
533 .decode_ic1 = protocore_j1939_decode_ic1,
534 .decode_vd = protocore_j1939_decode_vd,
535 .decode_ccvs = protocore_j1939_decode_ccvs,
536 .decode_dm1 = protocore_j1939_decode_dm1,
548uint8_t *protocore_j1939_span(
void);
PROTO_ENUM_PACKED
Application protocol spoken on a listener port or connection slot.
Shared CAN 2.0 frame type for the CAN-based industrial codecs (one source of truth).
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS