Set reception acceptance.
Ret = CanSetChannelAcceptance ( Id , ChannelNo , MessageTypeMask , CanIdMask , CanIdCode )
Id
[ C: short ] [ Python: ctypes.c_short ]
Specify the device ID retrieved from CanInit.
ChannelNo
[ C: unsigned short ] [ Python: ctypes.c_ushort ]
Specify the channel number.
MessageTypeMask
[ C: unsigned int ] [ Python: ctypes.c_uint ]
Specify message types that you do not want to receive.
Message types with specified bits will not be received.
When specifying multiple message types, perform bitwise operations using logical OR.
For example, if it is 0x00, there is no message type specified, so all message types will be received.
Definition |
Value |
Description |
CCAN_MSG_TYPE_DISABLE |
0x00 |
Not specified (all message types will be received) |
CCAN_MSG_TYPE_CAN |
0x01 |
CAN message |
CCAN_MSG_TYPE_CAN_FD |
0x02 |
CAN FD message |
CCAN_MSG_TYPE_REMOTE_FRAME |
0x04 |
Remote frame. *Only CAN can be enabled |
CCAN_MSG_TYPE_BITRATE_SWITCH |
0x08 |
Bitrate switch. *Only CAN FD can be enabled |
CCAN_MSG_TYPE_EXTENDED_FORMAT |
0x20 |
Extended format |
CanIdMask
[ C: unsigned int ] [ Python: ctypes.c_uint ]
Specify the mask for the CAN IDs to be received.
When standard format is specified, specify with base ID (11bit).
Valid specification range is 0x000 to 0x7FF.
If you specify 0x000, all CAN ID messages will be stored in the receive buffer.
When you specify 0x7FF, all CAN ID messages are the filtered target. And you can designate some of CAN ID messages to be stored in the receive buffer with CanIdCode.
When extended format is specified, specify it as extended ID + base ID (29 bits in total).
Valid specification range is 0x000 to 0x1FFFFFFF.
If you specify 0x00000000, all CAN ID messages will be stored in the receive buffer.
If you specify 0x1FFFFFFF, all CAN ID messages are the filtered target. And you can designate some of CAN ID messages to be stored in the receive buffer with CanIdCode.
CanIdMask |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
Extended ID/Base ID |
- |
- |
- |
Extended ID |
Base ID |
|||||||||||||||||||||||||||
Bit number of each ID |
- |
- |
- |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
CanIdCode
[ C: unsigned int ] [ Python: ctypes.c_uint ]
Indicate the CAN ID with code to be stored in the receive buffer among the messages filtered by the CanIdMask setting.
When standard format is specified, specify with base ID (11bit).
Valid specification range is 0x000 to 0x7FF.
If extended format is specified, specify it as extended ID + base ID (29 bits in total).
The extended ID is the upper bits, and the base ID is the lower bits.
Valid specification range is 0x000 to 0x1FFFFFFF.
CanIdCode |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
Extended ID/Base ID |
- |
- |
- |
Extended ID |
Base ID |
|||||||||||||||||||||||||||
Bit number of each ID |
- |
- |
- |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
Ret [ C: long ] [ Python: ctypes.c_long ]
Definition |
Value [Dec] |
Description |
CAN_ERR_SUCCESS |
0 |
Normality completion |
CAN_ERR_DLL_INVALID_ID |
10001 |
Invalid ID was specified. |
CAN_ERR_DLL_CALL_DRIVER |
10002 |
Driver can't be called (Failed in the ioctl). |
CAN_ERR_SYS_CH_NO |
20101 |
Channel number is outside the settable range |
CAN_ERR_SYS_DATA_FRAME_FORMAT |
20102 |
The data frame format is outside the settable range. |
The others (See also: Details of Error Code)
MessageTypeMask = 0x00 (CCAN_MSG_TYPE_DISABLE. Not specified (all message types will be received))
CanIdMask = 0x00000000 (All messages are stored in the receive buffer)
CanIdCode = 0x00000000
Set reception acceptance.
This can be set only when the bus is not connected.
In addition to store only one CAN ID message to the receive buffer, you can store the multiple CAN ID messages to the receive buffer by combining CanIdMask and CanIdCode.
Please refer [Examples of the combination for CanIdMask and CanIdCode setting] topic to know more details.
Set CanIdMask = 2047, CanIdCode = 3 with standard format CAN communication to ChannelNo = 1. The decimal number 2047 is expressed as 0x7FF in hexadecimal.
C |
long Ret; Ret = CanSetChannelAcceptance
( Id , 1 , CCAN_MSG_TYPE_CAN , 2047 , 3 ); |
Python |
Ret = ctypes.c_long() Ret.value
= ccan.CanSetChannelAcceptance ( Id , 1 , CCAN_MSG_TYPE_CAN ,
2047 , 3 ) |