Code: Select all
const
CAN_LAYER_STATE_TRANSMIT_PENDING = $0001;
CAN_LAYER_STATE_TRANSMITTED = $0002;
CAN_LAYER_STATE_SUCCESS = $0004;
CAN_LAYER_STATE_ERROR = $0008;
CAN_LAYER_STATE_INITIAL_LOAD = CAN_LAYER_STATE_TRANSMIT_PENDING or CAN_LAYER_STATE_SUCCESS;
TCAN_Layer_Buffer = record
Packet: TCAN_Packet;
State: Word; // See the TCAN_LAYER_STATE_xxx constants
end;
PCAN_Layer_Buffer = ^TCAN_Layer_Buffer;
var
CAN_Layer_Buffer: TCAN_Layer_Buffer;
CAN_Layer_Buffer.State := CAN_LAYER_STATE_INITIAL_LOAD; // Assume Success
// State = 5 as expected
CAN_Layer_Buffer.State := CAN_Layer_Buffer.State or CAN_LAYER_STATE_TRANSMITTED and not CAN_LAYER_STATE_TRANSMIT_PENDING;
// State = 7 Why????????
CAN_Layer_Buffer.State := CAN_Layer_Buffer.State or CAN_LAYER_STATE_TRANSMITTED;
CAN_Layer_Buffer.State := CAN_Layer_Buffer.State and not CAN_LAYER_STATE_TRANSMIT_PENDING;
// State = 6 as expected