To get a higher level of abstraction, the CAN signals and messages can be used to abstract the information mappings to the bus communication objects.
The information Nodestatus and CPU-Load shall be sent in a CAN frame called Status with the following definition:
CAN-Identifier = 0x150
DLC = 2 Payload Byte 0 = Current Nodestatus Payload Byte 1 = CPU-Load
The Nodestatus shall be settable via the CAN frame called Command with the following definition:
CAN-Identifier = 0x140 DLC = 1 Payload Byte 0 = New Nodestatus
If the information Nodestatus is changed, the following actions shall be done:
New Nodestatus = 1: Start the task Load-Task New Nodestatus = 2: Stop the task Load-Task
#include "can_sig.h" /* Signal Definition */ enum { S_NODESTATUS = 0, S_CPULOAD, S_MAX }; const CANSIG_PARA CanSig[CANSIG_N] = { /*--- S_NODESTATUS */ { CANSIG_UNCHANGED, /* Initial Status */ 1, /* Width in Bytes */ 0, /* Initial Value */ StatusChange }, /* Callback Func. */ /*------ S_CPULOAD */ { CANSIG_UNCHANGED, /* Initial Status */ 1, /* Width in Bytes */ 0, /* Initial Value */ 0 } /* No Callback */ }; |
CANSIG_CALLBACK_EN
parameter to 0.#include "can_msg.h" /* Message Definition */ enum { M_STATUS = 0, M_COMMAND, M_MAX }; const CANMSG_PARA CanMsg[CANMSG_N] = { /*------- M_STATUS */ { 0x150L, /* CAN-Identifier */ CANMSG_TX, /* Message Type */ 2, /* DLC of Message */ 2, /* No. of Links */ { { S_NODESTATUS, /* Signal ID */ 0 }, /* Byte Position */ { S_CPULOAD, /* Signal ID */ 1 } } }, /* Byte Position */ /*------ M_COMMAND */ { 0x140L, /* CAN-Identifier */ CANMSG_RX, /* Message Type */ 1, /* DLC of Message */ 1, /* No. of Links */ { { S_NODESTATUS, /* Signal ID */ 0 } } } /* Byte Position */ }; |