Hex Artifact Content
Not logged in

Artifact 96f9f685fd89dc214c4e88ea6fc3c7c87891b984:

Wiki page [tclcan] by chw 2019-04-26 06:37:38.
0000: 44 20 32 30 31 39 2d 30 34 2d 32 36 54 30 36 3a  D 2019-04-26T06:
0010: 33 37 3a 33 38 2e 35 38 35 0a 4c 20 74 63 6c 63  37:38.585.L tclc
0020: 61 6e 0a 50 20 31 37 32 62 65 65 32 39 63 33 64  an.P 172bee29c3d
0030: 32 65 62 37 35 31 36 62 66 39 36 31 35 35 63 31  2eb7516bf96155c1
0040: 35 61 61 36 34 32 62 30 38 35 39 31 32 0a 55 20  5aa642b085912.U 
0050: 63 68 77 0a 57 20 31 34 30 32 39 0a 3c 68 32 3e  chw.W 14029.<h2>
0060: 63 61 6e 20 63 6f 6d 6d 61 6e 64 3c 2f 68 32 3e  can command</h2>
0070: 0d 0a 0d 0a 3c 68 33 3e 4e 61 6d 65 3c 2f 68 33  ....<h3>Name</h3
0080: 3e 0d 0a 0d 0a 3c 62 3e 63 61 6e 3c 2f 62 3e 20  >....<b>can</b> 
0090: 2d 20 54 63 6c 20 69 6e 74 65 72 66 61 63 65 20  - Tcl interface 
00a0: 74 6f 20 4c 69 6e 75 78 20 53 6f 63 6b 65 74 43  to Linux SocketC
00b0: 41 4e 0d 0a 0d 0a 3c 68 33 3e 53 79 6e 6f 70 73  AN....<h3>Synops
00c0: 69 73 3c 2f 68 33 3e 0d 0a 0d 0a 3c 74 74 3e 70  is</h3>....<tt>p
00d0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 54  ackage require T
00e0: 63 6c 20 38 2e 36 3c 2f 74 74 3e 3c 62 72 3e 0d  cl 8.6</tt><br>.
00f0: 0a 3c 74 74 3e 70 61 63 6b 61 67 65 20 72 65 71  .<tt>package req
0100: 75 69 72 65 20 74 63 6c 63 61 6e 3c 2f 74 74 3e  uire tclcan</tt>
0110: 3c 62 72 3e 0d 0a 3c 74 74 3e 63 61 6e 20 62 63  <br>..<tt>can bc
0120: 6d 6f 70 65 6e 20 3c 69 3e 69 66 6e 61 6d 65 3c  mopen <i>ifname<
0130: 2f 69 3e 3c 2f 74 74 3e 3c 62 72 3e 0d 0a 3c 74  /i></tt><br>..<t
0140: 74 3e 63 61 6e 20 62 69 74 72 61 74 65 20 3c 69  t>can bitrate <i
0150: 3e 69 66 6e 61 6d 65 20 3f 72 61 74 65 3f 20 3f  >ifname ?rate? ?
0160: 73 61 6d 70 6c 65 5f 70 6f 69 6e 74 3f 3c 2f 69  sample_point?</i
0170: 3e 3c 2f 74 74 3e 3c 62 72 3e 0d 0a 3c 74 74 3e  ></tt><br>..<tt>
0180: 63 61 6e 20 62 69 74 74 69 6d 69 6e 67 20 3c 69  can bittiming <i
0190: 3e 69 66 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e  >ifname</i></tt>
01a0: 3c 62 72 3e 0d 0a 3c 74 74 3e 63 61 6e 20 62 69  <br>..<tt>can bi
01b0: 74 74 74 69 6d 69 6e 67 5f 63 6f 6e 73 74 20 3c  tttiming_const <
01c0: 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74  i>ifname</i></tt
01d0: 3e 3c 62 72 3e 0d 0a 3c 74 74 3e 63 61 6e 20 62  ><br>..<tt>can b
01e0: 65 72 72 20 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69  err <i>ifname</i
01f0: 3e 3c 2f 74 74 3e 3c 62 72 3e 0d 0a 3c 74 74 3e  ></tt><br>..<tt>
0200: 63 61 6e 20 63 6c 6f 63 6b 20 3c 69 3e 69 66 6e  can clock <i>ifn
0210: 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 3c 62 72 3e  ame</i></tt><br>
0220: 0d 0a 3c 74 74 3e 63 61 6e 20 63 6c 6f 73 65 20  ..<tt>can close 
0230: 3c 69 3e 63 68 61 6e 3c 2f 69 3e 3c 2f 74 74 3e  <i>chan</i></tt>
0240: 3c 62 72 3e 0d 0a 3c 74 74 3e 63 61 6e 20 63 74  <br>..<tt>can ct
0250: 72 6c 6d 6f 64 65 20 3c 69 3e 69 66 6e 61 6d 65  rlmode <i>ifname
0260: 20 3f 6d 6f 64 65 20 2e 2e 2e 3f 3c 2f 69 3e 3c   ?mode ...?</i><
0270: 2f 74 74 3e 3c 62 72 3e 0d 0a 3c 74 74 3e 63 61  /tt><br>..<tt>ca
0280: 6e 20 64 65 76 73 74 61 74 20 3c 69 3e 69 66 6e  n devstat <i>ifn
0290: 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 3c 62 72 3e  ame</i></tt><br>
02a0: 0d 0a 3c 74 74 3e 63 61 6e 20 64 75 6d 70 20 3c  ..<tt>can dump <
02b0: 69 3e 63 68 61 6e 3c 2f 69 3e 3c 2f 74 74 3e 3c  i>chan</i></tt><
02c0: 62 72 3e 0d 0a 3c 74 74 3e 63 61 6e 20 69 6e 74  br>..<tt>can int
02d0: 65 72 66 61 63 65 73 3c 2f 69 3e 3c 2f 74 74 3e  erfaces</i></tt>
02e0: 3c 62 72 3e 0d 0a 3c 74 74 3e 63 61 6e 20 6f 70  <br>..<tt>can op
02f0: 65 6e 20 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e  en <i>ifname</i>
0300: 3c 2f 74 74 3e 3c 62 72 3e 0d 0a 3c 74 74 3e 63  </tt><br>..<tt>c
0310: 61 6e 20 72 65 61 64 20 3c 69 3e 63 68 61 6e 3c  an read <i>chan<
0320: 2f 69 3e 3c 2f 74 74 3e 3c 62 72 3e 0d 0a 3c 74  /i></tt><br>..<t
0330: 74 3e 63 61 6e 20 72 65 73 74 61 72 74 20 3c 69  t>can restart <i
0340: 3e 69 66 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e  >ifname</i></tt>
0350: 3c 62 72 3e 0d 0a 3c 74 74 3e 63 61 6e 20 72 65  <br>..<tt>can re
0360: 73 74 61 72 74 5f 6d 73 20 3c 69 3e 69 66 6e 61  start_ms <i>ifna
0370: 6d 65 20 3f 6d 73 3f 3c 2f 69 3e 3c 2f 74 74 3e  me ?ms?</i></tt>
0380: 3c 62 72 3e 0d 0a 3c 74 74 3e 63 61 6e 20 73 74  <br>..<tt>can st
0390: 61 72 74 20 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69  art <i>ifname</i
03a0: 3e 3c 2f 74 74 3e 3c 62 72 3e 0d 0a 3c 74 74 3e  ></tt><br>..<tt>
03b0: 63 61 6e 20 73 74 61 74 65 20 3c 69 3e 69 66 6e  can state <i>ifn
03c0: 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 3c 62 72 3e  ame</i></tt><br>
03d0: 0d 0a 3c 74 74 3e 63 61 6e 20 73 74 6f 70 20 3c  ..<tt>can stop <
03e0: 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74  i>ifname</i></tt
03f0: 3e 3c 62 72 3e 0d 0a 3c 74 74 3e 63 61 6e 20 77  ><br>..<tt>can w
0400: 72 69 74 65 20 3c 69 3e 63 68 61 6e 20 63 61 6e  rite <i>chan can
0410: 69 64 20 64 61 74 61 20 3f 69 66 69 6e 64 65 78  id data ?ifindex
0420: 3f 3c 2f 69 3e 3c 2f 74 74 3e 3c 62 72 3e 0d 0a  ?</i></tt><br>..
0430: 3c 74 74 3e 63 61 6e 20 77 72 69 74 65 20 3c 69  <tt>can write <i
0440: 3e 63 68 61 6e 20 6f 70 63 6f 64 65 20 66 6c 61  >chan opcode fla
0450: 67 73 20 63 6f 75 6e 74 20 74 69 6d 65 31 20 74  gs count time1 t
0460: 69 6d 65 32 20 63 61 6e 69 64 20 3f 69 66 69 6e  ime2 canid ?ifin
0470: 64 65 78 20 2e 2e 2e 3f 3c 2f 69 3e 3c 2f 74 74  dex ...?</i></tt
0480: 3e 0d 0a 0d 0a 3c 68 33 3e 44 65 73 63 72 69 70  >....<h3>Descrip
0490: 74 69 6f 6e 3c 2f 68 33 3e 0d 0a 0d 0a 54 68 69  tion</h3>....Thi
04a0: 73 20 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64  s package provid
04b0: 65 73 20 54 63 6c 20 73 75 70 70 6f 72 74 20 66  es Tcl support f
04c0: 6f 72 20 4c 69 6e 75 78 20 53 6f 63 6b 65 74 43  or Linux SocketC
04d0: 41 4e 20 3c 62 3e 43 41 4e 5f 52 41 57 3c 2f 62  AN <b>CAN_RAW</b
04e0: 3e 20 61 6e 64 20 3c 62 3e 43 41 4e 5f 42 43 4d  > and <b>CAN_BCM
04f0: 3c 2f 62 3e 20 73 6f 63 6b 65 74 20 74 79 70 65  </b> socket type
0500: 73 2e 20 54 68 65 20 70 61 63 6b 61 67 65 20 69  s. The package i
0510: 6d 70 6c 65 6d 65 6e 74 73 20 61 20 6e 65 77 20  mplements a new 
0520: 63 68 61 6e 6e 65 6c 20 74 79 70 65 20 61 6e 64  channel type and
0530: 20 61 20 20 54 63 6c 20 20 63 6f 6d 6d 61 6e 64   a  Tcl  command
0540: 20 74 6f 20 70 65 72 66 6f 72 6d 20 6f 70 65 72   to perform oper
0550: 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 73 65 20  ations on these 
0560: 63 68 61 6e 6e 65 6c 73 2e 20 54 68 65 20 73 74  channels. The st
0570: 61 6e 64 61 72 64 20 3c 74 74 3e 67 65 74 73 3c  andard <tt>gets<
0580: 2f 74 74 3e 2c 20 3c 74 74 3e 70 75 74 73 3c 2f  /tt>, <tt>puts</
0590: 74 74 3e 2c 20 61 6e 64 20 3c 74 74 3e 72 65 61  tt>, and <tt>rea
05a0: 64 3c 2f 74 74 3e 20 54 63 6c 20 63 6f 6d 6d 61  d</tt> Tcl comma
05b0: 6e 64 73 20 61 72 65 20 6e 6f 74 20 73 75 70 70  nds are not supp
05c0: 6f 72 74 65 64 2c 20 62 75 74 20 3c 74 74 3e 63  orted, but <tt>c
05d0: 6c 6f 73 65 3c 2f 74 74 3e 2c 20 3c 74 74 3e 66  lose</tt>, <tt>f
05e0: 63 6f 6e 66 69 67 75 72 65 3c 2f 74 74 3e 2c 20  configure</tt>, 
05f0: 20 61 6e 64 20 20 3c 74 74 3e 66 69 6c 65 65 76   and  <tt>fileev
0600: 65 6e 74 3c 2f 74 74 3e 20 61 72 65 20 61 76 61  ent</tt> are ava
0610: 69 6c 61 62 6c 65 20 61 73 20 66 6f 72 20 6e 6f  ilable as for no
0620: 72 6d 61 6c 20 63 68 61 6e 6e 65 6c 73 2c 20 65  rmal channels, e
0630: 2e 67 2e 20 73 6f 63 6b 65 74 73 2e 20 57 68 65  .g. sockets. Whe
0640: 6e 20 74 68 65 20 3c 62 3e 6c 69 62 73 6f 63 6b  n the <b>libsock
0650: 65 74 63 61 6e 3c 2f 62 3e 20 73 68 61 72 65 64  etcan</b> shared
0660: 20 6c 69 62 72 61 72 79 20 69 73 20 61 76 61 69   library is avai
0670: 6c 61 62 6c 65 2c 20 76 61 72 69 6f 75 73 20 73  lable, various s
0680: 75 62 63 6f 6d 6d 61 6e 64 73 20 20 63 61 6e 20  ubcommands  can 
0690: 20 62 65 20 20 75 73 65 64 20 20 74 6f 20 6d 61   be  used  to ma
06a0: 6e 61 67 65 20 43 41 4e 20 69 6e 74 65 72 66 61  nage CAN interfa
06b0: 63 65 73 2c 20 74 6f 6f 2e 0d 0a 0d 0a 3c 68 33  ces, too.....<h3
06c0: 3e 43 6f 6d 6d 61 6e 64 73 3c 2f 68 33 3e 0d 0a  >Commands</h3>..
06d0: 0d 0a 3c 74 74 3e 63 61 6e 20 62 63 6d 6f 70 65  ..<tt>can bcmope
06e0: 6e 20 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e 3c  n <i>ifname</i><
06f0: 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 4f 70 65 6e  /tt>....    Open
0700: 73 20 61 20 63 68 61 6e 6e 65 6c 20 62 79 20 63  s a channel by c
0710: 72 65 61 74 69 6e 67 20 61 20 62 72 6f 61 64 63  reating a broadc
0720: 61 73 74 20 6d 61 6e 61 67 65 72 20 73 6f 63 6b  ast manager sock
0730: 65 74 20 28 74 79 70 65 20 3c 62 3e 43 41 4e 5f  et (type <b>CAN_
0740: 42 43 4d 3c 2f 62 3e 20 29 20 6f 6e 20 74 68 65  BCM</b> ) on the
0750: 20 67 69 76 65 6e 20 43 41 4e 20 69 6e 74 65 72   given CAN inter
0760: 66 61 63 65 20 3c 74 74 3e 3c 69 3e 69 66 6e 61  face <tt><i>ifna
0770: 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 49 66 20  me</i></tt>. If 
0780: 3c 74 74 3e 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69  <tt><i>ifname</i
0790: 3e 3c 2f 74 74 3e 20 69 73 20 73 70 65 63 69 66  ></tt> is specif
07a0: 69 65 64 20 61 73 20 61 6e 20 65 6d 70 74 79 20  ied as an empty 
07b0: 73 74 72 69 6e 67 2c 20 74 68 65 20 63 68 61 6e  string, the chan
07c0: 6e 65 6c 20 69 73 20 20 62 6f 75 6e 64 20 74 6f  nel is  bound to
07d0: 20 61 6c 6c 20 43 41 4e 20 69 6e 74 65 72 66 61   all CAN interfa
07e0: 63 65 73 2e 20 54 68 65 20 63 6f 6d 6d 61 6e 64  ces. The command
07f0: 20 72 65 74 75 72 6e 73 20 61 6e 20 69 64 65 6e   returns an iden
0800: 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20 63  tifier for the c
0810: 68 61 6e 6e 65 6c 20 77 68 69 63 68 20 69 73 20  hannel which is 
0820: 74 6f 20 62 65 20 75 73 65 64 20 69 6e 20 73 75  to be used in su
0830: 62 73 65 71 75 65 6e 74 20 3c 74 74 3e 63 61 6e  bsequent <tt>can
0840: 20 72 65 61 64 3c 2f 74 74 3e 20 61 6e 64 20 3c   read</tt> and <
0850: 74 74 3e 63 61 6e 20 77 72 69 74 65 3c 2f 74 74  tt>can write</tt
0860: 3e 20 63 6f 6d 6d 61 6e 64 73 2e 0d 0a 0d 0a 3c  > commands.....<
0870: 74 74 3e 63 61 6e 20 62 69 74 72 61 74 65 20 3c  tt>can bitrate <
0880: 69 3e 69 66 6e 61 6d 65 20 3f 72 61 74 65 3f 20  i>ifname ?rate? 
0890: 3f 73 61 6d 70 6c 65 5f 70 6f 69 6e 74 3f 3c 2f  ?sample_point?</
08a0: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 47  i></tt>....    G
08b0: 65 74 73 20 6f 72 20 73 65 74 73 20 74 68 65 20  ets or sets the 
08c0: 62 69 74 72 61 74 65 20 3c 74 74 3e 3c 69 3e 72  bitrate <tt><i>r
08d0: 61 74 65 3c 2f 69 3e 3c 2f 74 74 3e 20 28 61 6e  ate</i></tt> (an
08e0: 64 20 73 65 74 73 20 6f 70 74 69 6f 6e 61 6c 20  d sets optional 
08f0: 73 61 6d 70 6c 65 20 70 6f 69 6e 74 20 74 6f 20  sample point to 
0900: 3c 74 74 3e 3c 69 3e 73 61 6d 70 6c 65 5f 70 6f  <tt><i>sample_po
0910: 69 6e 74 3c 2f 69 3e 3c 2f 74 74 3e 29 20 6f 6e  int</i></tt>) on
0920: 20 74 68 65 20 43 41 4e 20 69 6e 74 65 72 66 61   the CAN interfa
0930: 63 65 20 3c 74 74 3e 3c 69 3e 69 66 6e 61 6d 65  ce <tt><i>ifname
0940: 3c 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74  </i></tt>.....<t
0950: 74 3e 63 61 6e 20 62 69 74 74 69 6d 69 6e 67 20  t>can bittiming 
0960: 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e 3c 2f 74  <i>ifname</i></t
0970: 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 74 72 69 65  t>....    Retrie
0980: 76 65 73 20 74 68 65 20 63 75 72 72 65 6e 74 20  ves the current 
0990: 62 69 74 20 74 69 6d 69 6e 67 20 6f 66 20 74 68  bit timing of th
09a0: 65 20 43 41 4e 20 69 6e 74 65 72 66 61 63 65 20  e CAN interface 
09b0: 3c 74 74 3e 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69  <tt><i>ifname</i
09c0: 3e 3c 2f 74 74 3e 2e 20 46 6f 72 20 64 65 74 61  ></tt>. For deta
09d0: 69 6c 73 20 72 65 66 65 72 20 74 6f 20 3c 62 3e  ils refer to <b>
09e0: 2f 75 73 72 2f 69 6e 63 6c 75 64 65 2f 63 61 6e  /usr/include/can
09f0: 5f 6e 65 74 6c 69 6e 6b 2e 68 3c 2f 62 3e 2e 0d  _netlink.h</b>..
0a00: 0a 0d 0a 3c 74 74 3e 63 61 6e 20 62 69 74 74 69  ...<tt>can bitti
0a10: 6d 69 6e 67 5f 63 6f 6e 73 74 20 3c 69 3e 69 66  ming_const <i>if
0a20: 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d  name</i></tt>...
0a30: 0a 20 20 20 20 52 65 74 72 69 65 76 65 73 20 63  .    Retrieves c
0a40: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 6e 20  onfiguration on 
0a50: 62 69 74 20 74 69 6d 69 6e 67 20 6f 66 20 74 68  bit timing of th
0a60: 65 20 43 41 4e 20 69 6e 74 65 72 66 61 63 65 20  e CAN interface 
0a70: 3c 74 74 3e 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69  <tt><i>ifname</i
0a80: 3e 3c 2f 74 74 3e 2e 20 46 6f 72 20 64 65 74 61  ></tt>. For deta
0a90: 69 6c 73 20 72 65 66 65 72 20 74 6f 20 3c 62 3e  ils refer to <b>
0aa0: 2f 75 73 72 2f 69 6e 63 6c 75 64 65 2f 63 61 6e  /usr/include/can
0ab0: 5f 6e 65 74 6c 69 6e 6b 2e 68 3c 2f 62 3e 2e 0d  _netlink.h</b>..
0ac0: 0a 0d 0a 3c 74 74 3e 63 61 6e 20 62 65 72 72 20  ...<tt>can berr 
0ad0: 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e 3c 2f 74  <i>ifname</i></t
0ae0: 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 74 72 69 65  t>....    Retrie
0af0: 76 65 73 20 65 72 72 6f 72 20 63 6f 75 6e 74 65  ves error counte
0b00: 72 73 20 6f 66 20 74 68 65 20 43 41 4e 20 69 6e  rs of the CAN in
0b10: 74 65 72 66 61 63 65 20 3c 74 74 3e 3c 69 3e 69  terface <tt><i>i
0b20: 66 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20  fname</i></tt>. 
0b30: 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20  The result is a 
0b40: 64 69 63 74 69 6f 6e 61 72 79 20 6d 61 64 65 20  dictionary made 
0b50: 75 70 20 6f 66 20 74 68 65 20 6b 65 79 73 20 3c  up of the keys <
0b60: 74 74 3e 74 78 65 72 72 3c 2f 74 74 3e 20 61 6e  tt>txerr</tt> an
0b70: 64 20 3c 74 74 3e 72 78 65 72 72 3c 2f 74 74 3e  d <tt>rxerr</tt>
0b80: 20 77 69 74 68 20 72 65 73 70 65 63 74 69 76 65   with respective
0b90: 20 69 6e 74 65 67 65 72 20 65 72 72 6f 72 20 63   integer error c
0ba0: 6f 75 6e 74 65 72 73 2e 0d 0a 0d 0a 3c 74 74 3e  ounters.....<tt>
0bb0: 63 61 6e 20 63 6c 6f 63 6b 20 3c 69 3e 69 66 6e  can clock <i>ifn
0bc0: 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a  ame</i></tt>....
0bd0: 20 20 20 20 52 65 74 72 69 65 76 65 73 20 74 68      Retrieves th
0be0: 65 20 63 6c 6f 63 6b 20 66 72 65 71 75 65 6e 63  e clock frequenc
0bf0: 79 20 6f 66 20 74 68 65 20 43 41 4e 20 69 6e 74  y of the CAN int
0c00: 65 72 66 61 63 65 20 3c 74 74 3e 3c 69 3e 69 66  erface <tt><i>if
0c10: 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 20  name</i></tt>.  
0c20: 46 6f 72 20 64 65 74 61 69 6c 73 20 72 65 66 65  For details refe
0c30: 72 20 74 6f 20 3c 62 3e 2f 75 73 72 2f 69 6e 63  r to <b>/usr/inc
0c40: 6c 75 64 65 2f 63 61 6e 5f 6e 65 74 6c 69 6e 6b  lude/can_netlink
0c50: 2e 68 3c 2f 62 3e 2e 0d 0a 0d 0a 3c 74 74 3e 63  .h</b>.....<tt>c
0c60: 61 6e 20 63 6c 6f 73 65 20 3c 69 3e 63 68 61 6e  an close <i>chan
0c70: 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20  </i></tt>....   
0c80: 20 43 6c 6f 73 65 73 20 74 68 65 20 63 68 61 6e   Closes the chan
0c90: 6e 65 6c 20 3c 74 74 3e 3c 69 3e 63 68 61 6e 3c  nel <tt><i>chan<
0ca0: 2f 69 3e 3c 2f 74 74 3e 20 77 68 69 63 68 20 77  /i></tt> which w
0cb0: 61 73 20 66 6f 72 6d 65 72 6c 79 20 6f 62 74 61  as formerly obta
0cc0: 69 6e 65 64 20 62 79 20 3c 74 74 3e 63 61 6e 20  ined by <tt>can 
0cd0: 6f 70 65 6e 3c 2f 74 74 3e 2e 20 54 68 69 73 20  open</tt>. This 
0ce0: 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f  is equivalent to
0cf0: 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 3c 74   invoking the <t
0d00: 74 3e 63 6c 6f 73 65 3c 2f 74 74 3e 20 63 6f 6d  t>close</tt> com
0d10: 6d 61 6e 64 20 20 77 69 74 68 20 3c 74 74 3e 3c  mand  with <tt><
0d20: 69 3e 63 68 61 6e 3c 2f 69 3e 3c 2f 74 74 3e 20  i>chan</i></tt> 
0d30: 61 73 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a 0d  as parameter....
0d40: 0a 3c 74 74 3e 63 61 6e 20 63 74 72 6c 6d 6f 64  .<tt>can ctrlmod
0d50: 65 20 3c 69 3e 69 66 6e 61 6d 65 20 3f 6d 6f 64  e <i>ifname ?mod
0d60: 65 20 2e 2e 2e 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d  e ...?</i></tt>.
0d70: 0a 0d 0a 20 20 20 20 47 65 74 73 20 6f 72 20 73  ...    Gets or s
0d80: 65 74 73 20 6d 6f 64 65 73 20 6f 6e 20 74 68 65  ets modes on the
0d90: 20 43 41 4e 20 69 6e 74 65 72 66 61 63 65 20 3c   CAN interface <
0da0: 74 74 3e 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e  tt><i>ifname</i>
0db0: 3c 2f 74 74 3e 2e 20 49 66 20 6e 6f 20 3c 74 74  </tt>. If no <tt
0dc0: 3e 3c 69 3e 6d 6f 64 65 3c 2f 69 3e 3c 2f 74 74  ><i>mode</i></tt
0dd0: 3e 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  > is specified, 
0de0: 74 68 65 20 63 75 72 72 65 6e 74 20 61 63 74 69  the current acti
0df0: 76 65 20 6d 6f 64 65 73 20 61 72 65 20 72 65 74  ve modes are ret
0e00: 75 72 6e 65 64 20 61 73 20 61 20 6c 69 73 74 2e  urned as a list.
0e10: 20 4f 74 68 65 72 77 69 73 65 2c 20 3c 74 74 3e   Otherwise, <tt>
0e20: 3c 69 3e 6d 6f 64 65 3c 2f 69 3e 3c 2f 74 74 3e  <i>mode</i></tt>
0e30: 20 6d 75 73 74 20 62 65 20 6f 6e 65 20 6f 72 20   must be one or 
0e40: 6d 6f 72 65 20 77 6f 72 64 73 20 6f 66 20 3c 74  more words of <t
0e50: 74 3e 6c 6f 6f 70 62 61 63 6b 3c 2f 74 74 3e 2c  t>loopback</tt>,
0e60: 20 3c 74 74 3e 6c 69 73 74 65 6e 6f 6e 6c 79 3c   <tt>listenonly<
0e70: 2f 74 74 3e 2c 20 3c 74 74 3e 33 5f 73 61 6d 70  /tt>, <tt>3_samp
0e80: 6c 65 73 3c 2f 74 74 3e 2c 20 3c 74 74 3e 6f 6e  les</tt>, <tt>on
0e90: 65 5f 73 68 6f 74 3c 2f 74 74 3e 2c 20 3c 74 74  e_shot</tt>, <tt
0ea0: 3e 62 65 72 72 5f 72 65 70 6f 72 74 69 6e 67 3c  >berr_reporting<
0eb0: 2f 74 74 3e 2c 20 20 3c 74 74 3e 66 64 3c 2f 74  /tt>,  <tt>fd</t
0ec0: 74 3e 2c 20 61 6e 64 20 3c 74 74 3e 70 72 65 73  t>, and <tt>pres
0ed0: 75 6d 65 5f 61 63 6b 3c 2f 74 74 3e 2e 20 49 6e  ume_ack</tt>. In
0ee0: 20 6f 72 64 65 72 20 74 6f 20 74 75 72 6e 20 61   order to turn a
0ef0: 20 6d 6f 64 65 20 6f 66 66 2c 20 70 72 65 66 69   mode off, prefi
0f00: 78 20 74 68 65 20 77 6f 72 64 20 77 69 74 68 20  x the word with 
0f10: 61 20 6d 69 6e 75 73 20 73 69 67 6e 2e 20 4c 69  a minus sign. Li
0f20: 6b 65 77 69 73 65 2c 20 74 6f 20 74 75 72 6e 20  kewise, to turn 
0f30: 69 74 20 6f 6e 2c 20 61 20 70 6c 75 73 20 73 69  it on, a plus si
0f40: 67 6e 20 6d 61 79 20 62 65 20 6f 70 74 69 6f 6e  gn may be option
0f50: 61 6c 6c 79 20 75 73 65 64 20 61 73 20 70 72 65  ally used as pre
0f60: 66 69 78 2e 0d 0a 0d 0a 3c 74 74 3e 63 61 6e 20  fix.....<tt>can 
0f70: 64 65 76 73 74 61 74 73 20 3c 69 3e 69 66 6e 61  devstats <i>ifna
0f80: 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20  me</i></tt>.... 
0f90: 20 20 20 52 65 74 72 69 65 76 65 73 20 64 65 76     Retrieves dev
0fa0: 69 63 65 20 73 74 61 74 69 73 74 69 63 73 20 61  ice statistics a
0fb0: 73 20 61 20 64 69 63 74 69 6f 6e 61 72 79 2e 20  s a dictionary. 
0fc0: 46 6f 72 20 64 65 74 61 69 6c 73 20 72 65 66 65  For details refe
0fd0: 72 20 74 6f 20 3c 62 3e 2f 75 73 72 2f 69 6e 63  r to <b>/usr/inc
0fe0: 6c 75 64 65 2f 6c 69 62 73 6f 63 6b 65 74 63 61  lude/libsocketca
0ff0: 6e 2e 68 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 2f  n.h</b> and <b>/
1000: 75 73 72 2f 69 6e 63 6c 75 64 65 2f 63 61 6e 5f  usr/include/can_
1010: 6e 65 74 6c 69 6e 6b 2e 68 3c 2f 62 3e 2e 0d 0a  netlink.h</b>...
1020: 0d 0a 3c 74 74 3e 63 61 6e 20 64 75 6d 70 20 3c  ..<tt>can dump <
1030: 69 3e 63 68 61 6e 3c 2f 69 3e 3c 2f 74 74 3e 0d  i>chan</i></tt>.
1040: 0a 0d 0a 20 20 20 20 52 65 61 64 73 20 61 20 3c  ...    Reads a <
1050: 62 3e 43 41 4e 5f 52 41 57 3c 2f 62 3e 20 6f 72  b>CAN_RAW</b> or
1060: 20 3c 62 3e 43 41 4e 5f 42 43 4d 3c 2f 62 3e 20   <b>CAN_BCM</b> 
1070: 6d 65 73 73 61 67 65 20 6f 66 66 20 3c 74 74 3e  message off <tt>
1080: 3c 69 3e 63 68 61 6e 3c 2f 69 3e 3c 2f 74 74 3e  <i>chan</i></tt>
1090: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 66   and returns a f
10a0: 6f 72 6d 61 74 74 65 64 20 72 65 70 72 65 73 65  ormatted represe
10b0: 6e 74 61 74 69 6f 6e 20 6f 66 20 69 74 20 61 73  ntation of it as
10c0: 20 61 20 6c 69 73 74 2e 20 54 68 65 20 6c 69 73   a list. The lis
10d0: 74 20 69 73 20 65 6d 70 74 79 20 69 66 20 6e 6f  t is empty if no
10e0: 20 43 41 4e 20 6d 65 73 73 61 67 65 20 77 61 73   CAN message was
10f0: 20 70 65 6e 64 69 6e 67 20 6f 6e 20 3c 74 74 3e   pending on <tt>
1100: 3c 69 3e 63 68 61 6e 3c 2f 69 3e 3c 2f 74 74 3e  <i>chan</i></tt>
1110: 2e 0d 0a 0d 0a 20 20 20 20 4f 74 68 65 72 77 69  .....    Otherwi
1120: 73 65 2c 20 66 6f 72 20 3c 62 3e 43 41 4e 5f 52  se, for <b>CAN_R
1130: 41 57 3c 2f 62 3e 20 63 68 61 6e 6e 65 6c 73 20  AW</b> channels 
1140: 74 68 65 20 6c 69 73 74 20 68 61 73 20 66 69 76  the list has fiv
1150: 65 20 6f 72 20 73 69 78 20 65 6c 65 6d 65 6e 74  e or six element
1160: 73 20 77 68 69 63 68 20 61 72 65 3a 20 20 31 2e  s which are:  1.
1170: 20 61 6e 20 20 69 6e 74 65 67 65 72 20 74 69 6d   an  integer tim
1180: 65 20 73 74 61 6d 70 20 65 71 75 69 76 61 6c 65  e stamp equivale
1190: 6e 74 20 74 6f 20 3c 74 74 3e 63 6c 6f 63 6b 20  nt to <tt>clock 
11a0: 6d 69 63 72 6f 73 65 63 6f 6e 64 73 3c 2f 74 74  microseconds</tt
11b0: 3e 2c 20 32 2e 20 74 68 65 20 69 6e 74 65 72 66  >, 2. the interf
11c0: 61 63 65 20 69 6e 64 65 78 20 28 73 65 65 20 3c  ace index (see <
11d0: 74 74 3e 63 61 6e 20 69 6e 74 65 72 66 61 63 65  tt>can interface
11e0: 73 3c 2f 74 74 3e 29 2c 20 33 2e 20 74 68 65 20  s</tt>), 3. the 
11f0: 20 43 41 4e 20 69 64 65 6e 74 69 66 69 65 72 20   CAN identifier 
1200: 61 73 20 61 20 68 65 78 61 64 65 63 69 6d 61 6c  as a hexadecimal
1210: 20 73 74 72 69 6e 67 20 77 69 74 68 20 30 78 20   string with 0x 
1220: 70 72 65 66 69 78 2c 20 34 2e 20 61 20 66 72 61  prefix, 4. a fra
1230: 6d 65 20 66 6f 72 6d 61 74 20 74 61 67 20 6f 66  me format tag of
1240: 20 74 68 65 20 43 41 4e 20 6d 65 73 73 61 67 65   the CAN message
1250: 20 61 73 20 3c 74 74 3e 45 46 46 3c 2f 74 74 3e   as <tt>EFF</tt>
1260: 20 28 65 78 74 65 6e 64 65 64 20 66 72 61 6d 65   (extended frame
1270: 20 66 6f 72 6d 61 74 29 20 6f 72 20 3c 74 74 3e   format) or <tt>
1280: 53 46 46 3c 2f 74 74 3e 20 28 73 74 61 6e 64 61  SFF</tt> (standa
1290: 72 64 20 66 72 61 6d 65 20 66 6f 72 6d 61 74 29  rd frame format)
12a0: 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c   optionally foll
12b0: 6f 77 65 64 20 62 79 20 3c 74 74 3e 7c 52 54 52  owed by <tt>|RTR
12c0: 3c 2f 74 74 3e 20 28 72 65 6d 6f 74 65 20 74 72  </tt> (remote tr
12d0: 61 6e 73 6d 69 73 73 69 6f 6e 20 72 65 71 75 65  ansmission reque
12e0: 73 74 29 20 6f 72 20 3c 74 74 3e 7c 45 52 52 3c  st) or <tt>|ERR<
12f0: 2f 74 74 3e 20 28 65 72 72 6f 72 20 66 72 61 6d  /tt> (error fram
1300: 65 29 2c 20 35 2e 20 74 68 65 20 64 61 74 61 20  e), 5. the data 
1310: 6c 65 6e 67 74 68 20 61 73 20 61 20 64 65 63 69  length as a deci
1320: 6d 61 6c 20 6e 75 6d 62 65 72 2c 20 61 6e 64 20  mal number, and 
1330: 6f 70 74 69 6f 6e 61 6c 6c 79 20 36 2e 20 74 68  optionally 6. th
1340: 65 20 64 61 74 61 20 70 6f 72 74 69 6f 6e 20 6f  e data portion o
1350: 66 20 74 68 65 20 43 41 4e 20 6d 65 73 73 61 67  f the CAN messag
1360: 65 20 61 73 20 68 65 78 61 64 65 63 69 6d 61 6c  e as hexadecimal
1370: 20 64 75 6d 70 20 77 69 74 68 6f 75 74 20 62 6c   dump without bl
1380: 61 6e 6b 73 20 61 6e 64 20 70 72 65 66 69 78 2e  anks and prefix.
1390: 0d 0a 0d 0a 20 20 20 20 46 6f 72 20 3c 62 3e 43  ....    For <b>C
13a0: 41 4e 5f 42 43 4d 3c 2f 62 3e 20 63 68 61 6e 6e  AN_BCM</b> chann
13b0: 65 6c 73 20 74 68 65 20 6c 69 73 74 20 69 73 20  els the list is 
13c0: 6d 61 64 65 20 75 70 20 6f 66 3a 20 31 2e 20 61  made up of: 1. a
13d0: 6e 20 69 6e 74 65 67 65 72 20 74 69 6d 65 20 73  n integer time s
13e0: 74 61 6d 70 20 20 65 71 75 69 76 61 6c 65 6e 74  tamp  equivalent
13f0: 20 74 6f 20 3c 74 74 3e 63 6c 6f 63 6b 20 6d 69   to <tt>clock mi
1400: 63 72 6f 73 65 63 6f 6e 64 73 3c 2f 74 74 3e 2c  croseconds</tt>,
1410: 20 32 2e 20 74 68 65 20 69 6e 74 65 72 66 61 63   2. the interfac
1420: 65 20 69 6e 64 65 78 20 28 73 65 65 20 3c 74 74  e index (see <tt
1430: 3e 63 61 6e 20 69 6e 74 65 72 66 61 63 65 73 3c  >can interfaces<
1440: 2f 74 74 3e 29 2c 20 33 2e 20 74 68 65 20 6d 61  /tt>), 3. the ma
1450: 6a 6f 72 20 43 41 4e 20 69 64 65 6e 74 69 66 69  jor CAN identifi
1460: 65 72 20 61 73 20 61 20 68 65 78 61 64 65 63 69  er as a hexadeci
1470: 6d 61 6c 20 73 74 72 69 6e 67 20 77 69 74 68 20  mal string with 
1480: 30 78 20 70 72 65 66 69 78 2c 20 34 2e 20 61 20  0x prefix, 4. a 
1490: 66 72 61 6d 65 20 66 6f 72 6d 61 74 20 74 61 67  frame format tag
14a0: 20 61 73 20 64 65 73 63 72 69 62 65 64 20 61 62   as described ab
14b0: 6f 76 65 2c 20 35 2e 20 74 68 65 20 3c 74 74 3e  ove, 5. the <tt>
14c0: 42 43 4d 3c 2f 74 74 3e 20 6f 70 63 6f 64 65 20  BCM</tt> opcode 
14d0: 61 73 20 6f 6e 65 20 6f 66 20 3c 74 74 3e 54 58  as one of <tt>TX
14e0: 5f 53 54 41 54 55 53 3c 2f 74 74 3e 2c 20 20 3c  _STATUS</tt>,  <
14f0: 74 74 3e 54 58 5f 45 58 50 49 52 45 44 3c 2f 74  tt>TX_EXPIRED</t
1500: 74 3e 2c 20 3c 74 74 3e 52 58 5f 53 54 41 54 55  t>, <tt>RX_STATU
1510: 53 3c 2f 74 74 3e 2c 20 3c 74 74 3e 52 58 5f 54  S</tt>, <tt>RX_T
1520: 49 4d 45 4f 55 54 3c 2f 74 74 3e 2c 20 6f 72 20  IMEOUT</tt>, or 
1530: 3c 74 74 3e 52 58 5f 43 48 41 4e 47 45 44 3c 2f  <tt>RX_CHANGED</
1540: 74 74 3e 2c 20 36 2e 20 74 68 65 20 3c 74 74 3e  tt>, 6. the <tt>
1550: 42 43 4d 3c 2f 74 74 3e 20 66 6c 61 67 73 20 73  BCM</tt> flags s
1560: 65 70 61 72 61 74 65 64 20 62 79 20 20 20 76 65  eparated by   ve
1570: 72 74 69 63 61 6c 20 62 61 72 73 20 28 3c 74 74  rtical bars (<tt
1580: 3e 53 45 54 54 49 4d 45 52 3c 2f 74 74 3e 2c 20  >SETTIMER</tt>, 
1590: 3c 74 74 3e 53 54 41 52 54 54 49 4d 45 52 3c 2f  <tt>STARTTIMER</
15a0: 74 74 3e 2c 20 3c 74 74 3e 54 58 5f 43 4f 55 4e  tt>, <tt>TX_COUN
15b0: 54 45 56 54 3c 2f 74 74 3e 2c 20 3c 74 74 3e 54  TEVT</tt>, <tt>T
15c0: 58 5f 41 4e 4e 4f 55 4e 43 45 3c 2f 74 74 3e 2c  X_ANNOUNCE</tt>,
15d0: 20 3c 74 74 3e 54 58 5f 43 50 5f 43 41 4e 5f 49   <tt>TX_CP_CAN_I
15e0: 44 3c 2f 74 74 3e 2c 20 3c 74 74 3e 52 58 5f 46  D</tt>, <tt>RX_F
15f0: 49 4c 54 45 52 5f 49 44 3c 2f 74 74 3e 2c 20 3c  ILTER_ID</tt>, <
1600: 74 74 3e 52 58 5f 43 48 45 43 4b 5f 44 4c 43 3c  tt>RX_CHECK_DLC<
1610: 2f 74 74 3e 2c 20 3c 74 74 3e 52 58 5f 4e 4f 5f  /tt>, <tt>RX_NO_
1620: 41 55 54 4f 54 49 4d 45 52 3c 2f 74 74 3e 2c 20  AUTOTIMER</tt>, 
1630: 3c 74 74 3e 54 58 5f 52 45 53 45 54 5f 4d 55 4c  <tt>TX_RESET_MUL
1640: 54 49 5f 49 44 58 3c 2f 74 74 3e 2c 20 61 6e 64  TI_IDX</tt>, and
1650: 20 3c 74 74 3e 52 58 5f 52 54 52 5f 46 52 41 4d   <tt>RX_RTR_FRAM
1660: 45 3c 2f 74 74 3e 29 2c 20 37 2e 20 74 68 65 20  E</tt>), 7. the 
1670: 3c 74 74 3e 42 43 4d 3c 2f 74 74 3e 20 63 6f 75  <tt>BCM</tt> cou
1680: 6e 74 20 66 69 65 6c 64 2c 20 20 38 2e 20 74 68  nt field,  8. th
1690: 65 20 66 69 72 73 74 20 3c 74 74 3e 42 43 4d 3c  e first <tt>BCM<
16a0: 2f 74 74 3e 20 69 6e 74 65 72 76 61 6c 20 66 69  /tt> interval fi
16b0: 65 6c 64 20 61 73 20 66 6c 6f 61 74 69 6e 67 20  eld as floating 
16c0: 70 6f 69 6e 74 20 6e 75 6d 62 65 72 2c 20 39 2e  point number, 9.
16d0: 20 74 68 65 20 73 65 63 6f 6e 64 20 3c 74 74 3e   the second <tt>
16e0: 42 43 4d 3c 2f 74 74 3e 20 69 6e 74 65 72 76 61  BCM</tt> interva
16f0: 6c 20 66 69 65 6c 64 20 61 73 20 66 6c 6f 61 74  l field as float
1700: 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72  ing point number
1710: 2c 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 31 30 2e  , optionally 10.
1720: 20 74 6f 20 31 33 2e 20 64 65 73 63 72 69 62 69   to 13. describi
1730: 6e 67 20 74 68 65 20 66 69 72 73 74 20 43 41 4e  ng the first CAN
1740: 20 66 72 61 6d 65 20 61 73 20 43 41 4e 20 69 64   frame as CAN id
1750: 65 6e 74 69 66 69 65 72 20 28 68 65 78 61 64 65  entifier (hexade
1760: 63 69 6d 61 6c 20 73 74 72 69 6e 67 29 2c 20 74  cimal string), t
1770: 68 65 20 66 72 61 6d 65 20 66 6f 72 6d 61 74 20  he frame format 
1780: 74 61 67 20 28 3c 74 74 3e 45 46 46 3c 2f 74 74  tag (<tt>EFF</tt
1790: 3e 2c 20 3c 74 74 3e 53 46 46 3c 2f 74 74 3e 2c  >, <tt>SFF</tt>,
17a0: 20 65 74 63 2e 29 2c 20 74 68 65 20 64 61 74 61   etc.), the data
17b0: 20 6c 65 6e 67 74 68 2c 20 61 6e 64 20 74 68 65   length, and the
17c0: 20 70 61 79 6c 6f 61 64 20 61 73 20 68 65 78 61   payload as hexa
17d0: 64 65 63 69 6d 61 6c 20 64 75 6d 70 2e 20 46 69  decimal dump. Fi
17e0: 65 6c 64 73 20 31 30 2e 20 74 6f 20 31 33 2e 20  elds 10. to 13. 
17f0: 72 65 70 65 61 74 20 66 6f 72 20 74 68 65 20 72  repeat for the r
1800: 65 73 70 65 63 74 69 76 65 20 6e 75 6d 62 65 72  espective number
1810: 20 6f 66 20 43 41 4e 20 66 72 61 6d 65 73 20 63   of CAN frames c
1820: 6f 6e 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20  ontained in the 
1830: 3c 74 74 3e 42 43 4d 3c 2f 74 74 3e 20 6d 65 73  <tt>BCM</tt> mes
1840: 73 61 67 65 2e 0d 0a 0d 0a 3c 74 74 3e 63 61 6e  sage.....<tt>can
1850: 20 69 6e 74 65 72 66 61 63 65 73 3c 2f 74 74 3e   interfaces</tt>
1860: 0d 0a 0d 0a 20 20 20 20 52 65 74 75 72 6e 73 20  ....    Returns 
1870: 61 20 6c 69 73 74 20 6f 66 20 43 41 4e 20 6e 65  a list of CAN ne
1880: 74 77 6f 72 6b 20 69 6e 74 65 72 66 61 63 65 20  twork interface 
1890: 6e 61 6d 65 73 20 61 6e 64 20 69 6e 64 69 63 65  names and indice
18a0: 73 20 73 75 69 74 61 62 6c 65 20 66 6f 72 20 3c  s suitable for <
18b0: 74 74 3e 63 61 6e 20 6f 70 65 6e 3c 2f 74 74 3e  tt>can open</tt>
18c0: 2c 20 3c 74 74 3e 63 61 6e 20 72 65 61 64 3c 2f  , <tt>can read</
18d0: 74 74 3e 2c 20 3c 74 74 3e 63 61 6e 20 77 72 69  tt>, <tt>can wri
18e0: 74 65 3c 2f 74 74 3e 20 61 6e 64 20 6c 69 6e 6b  te</tt> and link
18f0: 20 6d 61 6e 61 67 65 6d 65 6e 74 20 73 75 62 63   management subc
1900: 6f 6d 6d 61 6e 64 73 2e 0d 0a 0d 0a 3c 74 74 3e  ommands.....<tt>
1910: 63 61 6e 20 6f 70 65 6e 20 3c 69 3e 69 66 6e 61  can open <i>ifna
1920: 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20  me</i></tt>.... 
1930: 20 20 20 4f 70 65 6e 73 20 61 20 63 68 61 6e 6e     Opens a chann
1940: 65 6c 20 28 72 61 77 20 3c 62 3e 41 46 5f 43 41  el (raw <b>AF_CA
1950: 4e 3c 2f 62 3e 20 73 6f 63 6b 65 74 29 20 6f 6e  N</b> socket) on
1960: 20 74 68 65 20 67 69 76 65 6e 20 43 41 4e 20 69   the given CAN i
1970: 6e 74 65 72 66 61 63 65 20 3c 74 74 3e 3c 69 3e  nterface <tt><i>
1980: 69 66 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 2e  ifname</i></tt>.
1990: 20 49 66 20 3c 74 74 3e 3c 69 3e 69 66 6e 61 6d   If <tt><i>ifnam
19a0: 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 73 70  e</i></tt> is sp
19b0: 65 63 69 66 69 65 64 20 61 73 20 61 6e 20 65 6d  ecified as an em
19c0: 70 74 79 20 73 74 72 69 6e 67 2c 20 74 68 65 20  pty string, the 
19d0: 63 68 61 6e 6e 65 6c 20 69 73 20 20 62 6f 75 6e  channel is  boun
19e0: 64 20 74 6f 20 61 6c 6c 20 43 41 4e 20 69 6e 74  d to all CAN int
19f0: 65 72 66 61 63 65 73 2e 20 54 68 65 20 63 6f 6d  erfaces. The com
1a00: 6d 61 6e 64 20 72 65 74 75 72 6e 73 20 61 6e 20  mand returns an 
1a10: 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20 74  identifier for t
1a20: 68 65 20 63 68 61 6e 6e 65 6c 20 77 68 69 63 68  he channel which
1a30: 20 69 73 20 74 6f 20 62 65 20 75 73 65 64 20 69   is to be used i
1a40: 6e 20 73 75 62 73 65 71 75 65 6e 74 20 3c 74 74  n subsequent <tt
1a50: 3e 63 61 6e 20 72 65 61 64 3c 2f 74 74 3e 20 61  >can read</tt> a
1a60: 6e 64 20 3c 74 74 3e 63 61 6e 20 77 72 69 74 65  nd <tt>can write
1a70: 3c 2f 74 74 3e 20 63 6f 6d 6d 61 6e 64 73 2e 0d  </tt> commands..
1a80: 0a 0d 0a 3c 74 74 3e 63 61 6e 20 72 65 61 64 20  ...<tt>can read 
1a90: 3c 69 3e 63 68 61 6e 3c 2f 69 3e 3c 2f 74 74 3e  <i>chan</i></tt>
1aa0: 0d 0a 0d 0a 20 20 20 20 52 65 61 64 73 20 61 20  ....    Reads a 
1ab0: 3c 62 3e 43 41 4e 5f 52 41 57 3c 2f 62 3e 20 6f  <b>CAN_RAW</b> o
1ac0: 72 20 3c 62 3e 43 41 4e 5f 42 43 4d 3c 2f 62 3e  r <b>CAN_BCM</b>
1ad0: 20 6d 65 73 73 61 67 65 20 6f 66 66 20 3c 74 74   message off <tt
1ae0: 3e 3c 69 3e 63 68 61 6e 3c 2f 69 3e 3c 2f 74 74  ><i>chan</i></tt
1af0: 3e 20 61 73 20 61 20 6c 69 73 74 2e 20 54 68 65  > as a list. The
1b00: 20 6c 69 73 74 20 69 73 20 65 6d 70 74 79 20 69   list is empty i
1b10: 66 20 6e 6f 20 43 41 4e 20 6d 65 73 73 61 67 65  f no CAN message
1b20: 20 77 61 73 20 70 65 6e 64 69 6e 67 20 6f 6e 20   was pending on 
1b30: 3c 74 74 3e 3c 69 3e 63 68 61 6e 3c 2f 69 3e 3c  <tt><i>chan</i><
1b40: 2f 74 74 3e 2e 0d 0a 0d 0a 20 20 20 20 4f 74 68  /tt>.....    Oth
1b50: 65 72 77 69 73 65 2c 20 66 6f 72 20 3c 62 3e 43  erwise, for <b>C
1b60: 41 4e 5f 52 41 57 3c 2f 62 3e 20 63 68 61 6e 6e  AN_RAW</b> chann
1b70: 65 6c 73 20 69 74 20 69 73 20 6d 61 64 65 20 75  els it is made u
1b80: 70 20 6f 66 20 66 6f 75 72 20 65 6c 65 6d 65 6e  p of four elemen
1b90: 74 73 2c 20 31 2e 20 74 68 65 20 43 41 4e 20 69  ts, 1. the CAN i
1ba0: 64 65 6e 74 69 66 69 65 72 20 61 73 20 61 6e 20  dentifier as an 
1bb0: 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 69  integer number i
1bc0: 6e 63 6c 75 64 69 6e 67 20 66 6c 61 67 73 20 61  ncluding flags a
1bd0: 73 20 65 78 70 6c 61 69 6e 65 64 20 62 65 6c 6f  s explained belo
1be0: 77 2c 20 32 2e 20 74 68 65 20 64 61 74 61 20 70  w, 2. the data p
1bf0: 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 43 41  ortion of the CA
1c00: 4e 20 6d 65 73 73 61 67 65 20 61 73 20 61 20 62  N message as a b
1c10: 79 74 65 20 61 72 72 61 79 2c 20 33 2e 20 74 68  yte array, 3. th
1c20: 65 20 69 6e 74 65 72 66 61 63 65 20 69 6e 64 65  e interface inde
1c30: 78 20 6f 66 20 74 68 65 20 43 41 4e 20 69 6e 74  x of the CAN int
1c40: 65 72 66 61 63 65 20 74 68 65 20 43 41 4e 20 6d  erface the CAN m
1c50: 65 73 73 61 67 65 20 77 61 73 20 72 65 63 65 69  essage was recei
1c60: 76 65 64 20 66 72 6f 6d 2c 20 61 6e 64 20 34 2e  ved from, and 4.
1c70: 20 61 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65   a boolean value
1c80: 20 69 6e 64 69 63 61 74 69 6e 67 20 69 66 20 6d   indicating if m
1c90: 6f 72 65 20 43 41 4e 20 6d 65 73 73 61 67 65 73  ore CAN messages
1ca0: 20 63 61 6e 20 62 65 20 72 65 61 64 20 75 73 69   can be read usi
1cb0: 6e 67 20 3c 74 74 3e 63 61 6e 20 72 65 61 64 3c  ng <tt>can read<
1cc0: 2f 74 74 3e 2e 0d 0a 0d 0a 20 20 20 20 46 6f 72  /tt>.....    For
1cd0: 20 3c 62 3e 43 41 4e 5f 42 43 4d 3c 2f 62 3e 20   <b>CAN_BCM</b> 
1ce0: 63 68 61 6e 6e 65 6c 73 20 69 74 20 69 73 20 6d  channels it is m
1cf0: 61 64 65 20 75 70 20 6f 66 20 61 74 20 6c 65 61  ade up of at lea
1d00: 73 74 20 73 65 76 65 6e 20 65 6c 65 6d 65 6e 74  st seven element
1d10: 73 3a 20 31 2e 20 74 68 65 20 69 6e 74 65 72 66  s: 1. the interf
1d20: 61 63 65 20 69 6e 64 65 78 2c 20 32 2e 20 74 68  ace index, 2. th
1d30: 65 20 6d 61 6a 6f 72 20 43 41 4e 20 69 64 65 6e  e major CAN iden
1d40: 74 69 66 69 65 72 20 28 73 65 65 20 61 62 6f 76  tifier (see abov
1d50: 65 29 2c 20 33 2e 20 74 68 65 20 3c 74 74 3e 42  e), 3. the <tt>B
1d60: 43 4d 3c 2f 74 74 3e 20 6f 70 65 72 61 74 69 6f  CM</tt> operatio
1d70: 6e 20 61 73 20 6f 6e 65 20 6f 66 20 3c 74 74 3e  n as one of <tt>
1d80: 54 58 5f 53 54 41 54 55 53 3c 2f 74 74 3e 2c 20  TX_STATUS</tt>, 
1d90: 3c 74 74 3e 54 58 5f 45 58 50 49 52 45 44 3c 2f  <tt>TX_EXPIRED</
1da0: 74 74 3e 2c 20 3c 74 74 3e 52 58 5f 53 54 41 54  tt>, <tt>RX_STAT
1db0: 55 53 3c 2f 74 74 3e 2c 20 3c 74 74 3e 52 58 5f  US</tt>, <tt>RX_
1dc0: 54 49 4d 45 4f 55 54 3c 2f 74 74 3e 2c 20 6f 72  TIMEOUT</tt>, or
1dd0: 20 3c 74 74 3e 52 58 5f 43 48 41 4e 47 45 44 3c   <tt>RX_CHANGED<
1de0: 2f 74 74 3e 2c 20 34 2e 20 74 68 65 20 3c 74 74  /tt>, 4. the <tt
1df0: 3e 42 43 4d 3c 2f 74 74 3e 20 66 6c 61 67 73 20  >BCM</tt> flags 
1e00: 61 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75  as an integer nu
1e10: 6d 62 65 72 2c 20 20 35 2e 20 74 68 65 20 3c 74  mber,  5. the <t
1e20: 74 3e 42 43 4d 3c 2f 74 74 3e 20 63 6f 75 6e 74  t>BCM</tt> count
1e30: 20 66 69 65 6c 64 20 61 73 20 61 6e 20 69 6e 74   field as an int
1e40: 65 67 65 72 20 6e 75 6d 62 65 72 2c 20 36 2e 20  eger number, 6. 
1e50: 74 68 65 20 66 69 72 73 74 20 3c 74 74 3e 42 43  the first <tt>BC
1e60: 4d 3c 2f 74 74 3e 20 69 6e 74 65 72 76 61 6c 20  M</tt> interval 
1e70: 66 69 65 6c 64 20 61 73 20 61 20 66 6c 6f 61 74  field as a float
1e80: 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72  ing point number
1e90: 2c 20 61 6e 64 20 37 2e 20 74 68 65 20 73 65 63  , and 7. the sec
1ea0: 6f 6e 64 20 3c 74 74 3e 42 43 4d 3c 2f 74 74 3e  ond <tt>BCM</tt>
1eb0: 20 69 6e 74 65 72 76 61 6c 20 66 69 65 6c 64 20   interval field 
1ec0: 61 73 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f  as a floating po
1ed0: 69 6e 74 20 6e 75 6d 62 65 72 2e 20 57 68 65 6e  int number. When
1ee0: 20 43 41 4e 20 66 72 61 6d 65 73 20 61 72 65 20   CAN frames are 
1ef0: 70 61 72 74 20 6f 66 20 74 68 65 20 3c 74 74 3e  part of the <tt>
1f00: 42 43 4d 3c 2f 74 74 3e 20 6d 65 73 73 61 67 65  BCM</tt> message
1f10: 2c 20 65 61 63 68 20 66 72 61 6d 65 20 69 73 20  , each frame is 
1f20: 61 20 70 61 69 72 20 6f 66 20 43 41 4e 20 69 64  a pair of CAN id
1f30: 65 6e 74 69 66 69 65 72 20 61 73 20 69 6e 74 65  entifier as inte
1f40: 67 65 72 20 6e 75 6d 62 65 72 20 61 6e 64 20 74  ger number and t
1f50: 68 65 20 70 61 79 6c 6f 61 64 20 61 73 20 62 79  he payload as by
1f60: 74 65 20 61 72 72 61 79 20 6f 66 20 6c 65 6e 67  te array of leng
1f70: 74 68 20 30 20 74 6f 20 38 20 66 6f 72 20 6e 6f  th 0 to 8 for no
1f80: 72 6d 61 6c 20 66 72 61 6d 65 73 20 6f 72 20 61  rmal frames or a
1f90: 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  n integer number
1fa0: 20 66 6f 72 20 52 54 52 20 66 72 61 6d 65 73 2e   for RTR frames.
1fb0: 0d 0a 0d 0a 3c 74 74 3e 63 61 6e 20 72 65 73 74  ....<tt>can rest
1fc0: 61 72 74 20 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69  art <i>ifname</i
1fd0: 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 50 65  ></tt>....    Pe
1fe0: 72 66 6f 72 6d 73 20 61 20 6c 69 6e 6b 20 72 65  rforms a link re
1ff0: 73 74 61 72 74 20 6f 6e 20 74 68 65 20 43 41 4e  start on the CAN
2000: 20 69 6e 74 65 72 66 61 63 65 20 3c 74 74 3e 3c   interface <tt><
2010: 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74  i>ifname</i></tt
2020: 3e 2e 0d 0a 0d 0a 3c 74 74 3e 63 61 6e 20 72 65  >.....<tt>can re
2030: 73 74 61 72 74 5f 6d 73 20 3c 69 3e 69 66 6e 61  start_ms <i>ifna
2040: 6d 65 20 3f 6d 73 3f 3c 2f 69 3e 3c 2f 74 74 3e  me ?ms?</i></tt>
2050: 0d 0a 0d 0a 20 20 20 20 47 65 74 73 20 6f 72 20  ....    Gets or 
2060: 73 65 74 73 20 74 68 65 20 72 65 73 74 61 72 74  sets the restart
2070: 20 74 69 6d 65 72 20 6f 66 20 74 68 65 20 43 41   timer of the CA
2080: 4e 20 69 6e 74 65 72 66 61 63 65 20 3c 74 74 3e  N interface <tt>
2090: 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e 3c 2f 74  <i>ifname</i></t
20a0: 74 3e 2e 20 3c 74 74 3e 3c 69 3e 6d 73 3c 2f 69  t>. <tt><i>ms</i
20b0: 3e 3c 2f 74 74 3e 20 6d 75 73 74 20 62 65 20 73  ></tt> must be s
20c0: 70 65 63 69 66 69 65 64 20 61 73 20 70 6f 73 69  pecified as posi
20d0: 74 69 76 65 20 69 6e 74 65 67 65 72 20 6e 75 6d  tive integer num
20e0: 62 65 72 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f  ber of milliseco
20f0: 6e 64 73 2e 0d 0a 0d 0a 3c 74 74 3e 63 61 6e 20  nds.....<tt>can 
2100: 73 74 61 72 74 20 3c 69 3e 69 66 6e 61 6d 65 3c  start <i>ifname<
2110: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20  /i></tt>....    
2120: 50 65 72 66 6f 72 6d 73 20 61 20 6c 69 6e 6b 20  Performs a link 
2130: 73 74 61 72 74 75 70 20 6f 6e 20 74 68 65 20 43  startup on the C
2140: 41 4e 20 69 6e 74 65 72 66 61 63 65 20 3c 74 74  AN interface <tt
2150: 3e 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e 3c 2f  ><i>ifname</i></
2160: 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 63 61 6e 20  tt>.....<tt>can 
2170: 73 74 61 74 65 20 3c 69 3e 69 66 6e 61 6d 65 3c  state <i>ifname<
2180: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20  /i></tt>....    
2190: 52 65 74 72 69 65 76 65 73 20 74 68 65 20 6c 69  Retrieves the li
21a0: 6e 6d 6b 20 73 74 61 74 65 20 6f 66 20 74 68 65  nmk state of the
21b0: 20 43 41 4e 20 69 6e 74 65 72 66 61 63 65 20 3c   CAN interface <
21c0: 74 74 3e 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e  tt><i>ifname</i>
21d0: 3c 2f 74 74 3e 2e 20 54 68 65 20 72 65 73 75 6c  </tt>. The resul
21e0: 74 20 69 73 20 6f 6e 65 20 6f 66 20 3c 74 74 3e  t is one of <tt>
21f0: 65 72 72 6f 72 5f 61 63 74 69 76 65 3c 2f 74 74  error_active</tt
2200: 3e 2c 20 3c 74 74 3e 20 65 72 72 6f 72 5f 77 61  >, <tt> error_wa
2210: 72 6e 69 6e 67 3c 2f 74 74 3e 2c 20 3c 74 74 3e  rning</tt>, <tt>
2220: 65 72 72 6f 72 5f 70 61 73 73 69 76 65 3c 2f 74  error_passive</t
2230: 74 3e 2c 20 3c 74 74 3e 62 75 73 5f 6f 66 66 3c  t>, <tt>bus_off<
2240: 2f 74 74 3e 2c 20 3c 74 74 3e 73 74 6f 70 70 65  /tt>, <tt>stoppe
2250: 64 3c 2f 74 74 3e 2c 20 3c 74 74 3e 73 6c 65 65  d</tt>, <tt>slee
2260: 70 69 6e 67 3c 2f 74 74 3e 2c 20 6f 72 20 3c 74  ping</tt>, or <t
2270: 74 3e 75 6e 6b 6e 6f 77 6e 3c 2f 74 74 3e 2e 0d  t>unknown</tt>..
2280: 0a 0d 0a 3c 74 74 3e 63 61 6e 20 73 74 6f 70 20  ...<tt>can stop 
2290: 3c 69 3e 69 66 6e 61 6d 65 3c 2f 69 3e 3c 2f 74  <i>ifname</i></t
22a0: 74 3e 0d 0a 0d 0a 20 20 20 20 50 65 72 66 6f 72  t>....    Perfor
22b0: 6d 73 20 61 20 6c 69 6e 6b 20 73 74 6f 70 20 6f  ms a link stop o
22c0: 6e 20 74 68 65 20 43 41 4e 20 69 6e 74 65 72 66  n the CAN interf
22d0: 61 63 65 20 3c 74 74 3e 3c 69 3e 69 66 6e 61 6d  ace <tt><i>ifnam
22e0: 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c  e</i></tt>.....<
22f0: 74 74 3e 63 61 6e 20 77 72 69 74 65 20 3c 69 3e  tt>can write <i>
2300: 63 68 61 6e 20 63 61 6e 69 64 20 64 61 74 61 20  chan canid data 
2310: 3f 69 66 69 6e 64 65 78 3f 3c 2f 69 3e 3c 2f 74  ?ifindex?</i></t
2320: 74 3e 0d 0a 0d 0a 20 20 20 20 57 72 69 74 65 73  t>....    Writes
2330: 20 61 20 3c 62 3e 43 41 4e 5f 52 41 57 3c 2f 62   a <b>CAN_RAW</b
2340: 3e 20 6d 65 73 73 61 67 65 20 74 6f 20 3c 74 74  > message to <tt
2350: 3e 3c 69 3e 63 68 61 6e 3c 2f 69 3e 3c 2f 74 74  ><i>chan</i></tt
2360: 3e 2e 20 3c 74 74 3e 3c 69 3e 63 61 6e 69 64 3c  >. <tt><i>canid<
2370: 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 74 68 65 20  /i></tt> is the 
2380: 20 43 41 4e 20 69 64 65 6e 74 69 66 69 65 72 20   CAN identifier 
2390: 61 73 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65  as integer numbe
23a0: 72 2c 20 3c 74 74 3e 3c 69 3e 64 61 74 61 3c 2f  r, <tt><i>data</
23b0: 69 3e 3c 2f 74 74 3e 20 61 20 62 79 74 65 20 61  i></tt> a byte a
23c0: 72 72 61 79 20 6f 66 20 74 68 65 20 64 61 74 61  rray of the data
23d0: 20 74 6f 20 62 65 20 73 65 6e 74 2e 20 54 68 65   to be sent. The
23e0: 20 6f 70 74 69 6f 6e 61 6c 20 3c 74 74 3e 3c 69   optional <tt><i
23f0: 3e 69 66 69 6e 64 65 78 3c 2f 69 3e 3c 2f 74 74  >ifindex</i></tt
2400: 3e 20 69 73 20 74 68 65 20 43 41 4e 20 69 6e 74  > is the CAN int
2410: 65 72 66 61 63 65 20 69 6e 64 65 78 20 28 73 65  erface index (se
2420: 65 20 3c 74 74 3e 63 61 6e 20 69 6e 74 65 72 66  e <tt>can interf
2430: 61 63 65 73 3c 2f 74 74 3e 29 20 6f 6e 20 77 68  aces</tt>) on wh
2440: 69 63 68 20 74 68 65 20 6d 65 73 73 61 67 65 20  ich the message 
2450: 69 73 20 74 6f 20 62 65 20 73 65 6e 74 2e 20 49  is to be sent. I
2460: 74 20 69 73 20 6d 61 6e 64 61 74 6f 72 79 20 74  t is mandatory t
2470: 6f 20 73 70 65 63 69 66 79 20 3c 74 74 3e 3c 69  o specify <tt><i
2480: 3e 69 66 69 6e 64 65 78 3c 2f 69 3e 3c 2f 74 74  >ifindex</i></tt
2490: 3e 20 77 68 65 6e 20 3c 74 74 3e 3c 69 3e 63 68  > when <tt><i>ch
24a0: 61 6e 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 62  an</i></tt> is b
24b0: 6f 75 6e 64 20 74 6f 20 61 6c 6c 20 69 6e 74 65  ound to all inte
24c0: 72 66 61 63 65 73 2c 20 69 2e 65 2e 20 74 68 65  rfaces, i.e. the
24d0: 20 69 6e 74 65 72 66 61 63 65 20 6e 61 6d 65 20   interface name 
24e0: 6f 6e 20 3c 74 74 3e 63 61 6e 20 6f 70 65 6e 3c  on <tt>can open<
24f0: 2f 74 74 3e 20 77 61 73 20 61 6e 20 65 6d 70 74  /tt> was an empt
2500: 79 20 73 74 72 69 6e 67 2e 0d 0a 0d 0a 3c 74 74  y string.....<tt
2510: 3e 63 61 6e 20 77 72 69 74 65 20 3c 69 3e 63 68  >can write <i>ch
2520: 61 6e 20 6f 70 63 6f 64 65 20 66 6c 61 67 73 20  an opcode flags 
2530: 63 6f 75 6e 74 20 74 69 6d 65 31 20 74 69 6d 65  count time1 time
2540: 32 20 63 61 6e 69 64 20 3f 69 66 69 6e 64 65 78  2 canid ?ifindex
2550: 20 2e 2e 2e 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a   ...?</i></tt>..
2560: 0d 0a 20 20 20 20 57 72 69 74 65 73 20 61 20 3c  ..    Writes a <
2570: 62 3e 43 41 4e 5f 42 43 4d 3c 2f 62 3e 20 6d 65  b>CAN_BCM</b> me
2580: 73 73 61 67 65 20 74 6f 20 3c 74 74 3e 3c 69 3e  ssage to <tt><i>
2590: 63 68 61 6e 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 3c  chan</i></tt>. <
25a0: 74 74 3e 3c 69 3e 6f 70 63 6f 64 65 3c 2f 69 3e  tt><i>opcode</i>
25b0: 3c 2f 74 74 3e 20 6d 75 73 74 20 62 65 20 61 20  </tt> must be a 
25c0: 3c 74 74 3e 42 43 4d 3c 2f 74 74 3e 20 6f 70 65  <tt>BCM</tt> ope
25d0: 72 61 74 69 6f 6e 20 6f 75 74 20 6f 66 20 74 68  ration out of th
25e0: 65 20 73 65 74 20 3c 74 74 3e 54 58 5f 53 45 54  e set <tt>TX_SET
25f0: 55 50 3c 2f 74 74 3e 2c 20 3c 74 74 3e 54 58 5f  UP</tt>, <tt>TX_
2600: 44 45 4c 45 54 45 3c 2f 74 74 3e 2c 20 3c 74 74  DELETE</tt>, <tt
2610: 3e 54 58 5f 52 45 41 44 3c 2f 74 74 3e 2c 20 3c  >TX_READ</tt>, <
2620: 74 74 3e 54 58 5f 53 45 4e 44 3c 2f 74 74 3e 2c  tt>TX_SEND</tt>,
2630: 20 3c 74 74 3e 52 58 5f 53 45 54 55 50 3c 2f 74   <tt>RX_SETUP</t
2640: 74 3e 2c 20 3c 74 74 3e 52 58 5f 44 45 4c 45 54  t>, <tt>RX_DELET
2650: 45 3c 2f 74 74 3e 2c 20 61 6e 64 20 3c 74 74 3e  E</tt>, and <tt>
2660: 52 58 5f 52 45 41 44 3c 2f 74 74 3e 2e 20 3c 74  RX_READ</tt>. <t
2670: 74 3e 3c 69 3e 66 6c 61 67 73 3c 2f 69 3e 3c 2f  t><i>flags</i></
2680: 74 74 3e 20 6d 75 73 74 20 62 65 20 61 20 6c 69  tt> must be a li
2690: 73 74 20 77 69 74 68 20 7a 65 72 6f 20 6f 72 20  st with zero or 
26a0: 6d 6f 72 65 20 65 6c 65 6d 65 6e 74 73 20 6f 66  more elements of
26b0: 20 74 68 65 20 73 65 74 20 3c 74 74 3e 53 45 54   the set <tt>SET
26c0: 54 49 4d 45 52 3c 2f 74 74 3e 2c 20 3c 74 74 3e  TIMER</tt>, <tt>
26d0: 53 54 41 52 54 54 49 4d 45 52 3c 2f 74 74 3e 2c  STARTTIMER</tt>,
26e0: 20 3c 74 74 3e 54 58 5f 43 4f 55 4e 54 45 56 54   <tt>TX_COUNTEVT
26f0: 3c 2f 74 74 3e 2c 20 3c 74 74 3e 54 58 5f 41 4e  </tt>, <tt>TX_AN
2700: 4e 4f 55 4e 43 45 3c 2f 74 74 3e 2c 20 3c 74 74  NOUNCE</tt>, <tt
2710: 3e 54 58 5f 43 50 5f 43 41 4e 5f 49 44 3c 2f 74  >TX_CP_CAN_ID</t
2720: 74 3e 2c 20 3c 74 74 3e 52 58 5f 46 49 4c 54 45  t>, <tt>RX_FILTE
2730: 52 5f 49 44 3c 2f 74 74 3e 2c 20 3c 74 74 3e 52  R_ID</tt>, <tt>R
2740: 58 5f 43 48 45 43 4b 5f 44 4c 43 3c 2f 74 74 3e  X_CHECK_DLC</tt>
2750: 2c 20 3c 74 74 3e 52 58 5f 4e 4f 5f 41 55 54 4f  , <tt>RX_NO_AUTO
2760: 54 49 4d 45 52 3c 2f 74 74 3e 2c 20 3c 74 74 3e  TIMER</tt>, <tt>
2770: 52 58 5f 41 4e 4e 4f 55 4e 43 45 5f 52 45 53 55  RX_ANNOUNCE_RESU
2780: 4d 45 3c 2f 74 74 3e 2c 20 3c 74 74 3e 54 58 5f  ME</tt>, <tt>TX_
2790: 52 45 53 45 54 5f 4d 55 4c 54 49 5f 49 44 58 3c  RESET_MULTI_IDX<
27a0: 2f 74 74 3e 2c 20 61 6e 64 20 3c 74 74 3e 52 58  /tt>, and <tt>RX
27b0: 5f 52 54 52 5f 46 52 41 4d 45 3c 2f 74 74 3e 2e  _RTR_FRAME</tt>.
27c0: 20 3c 74 74 3e 3c 69 3e 63 6f 75 6e 74 3c 2f 69   <tt><i>count</i
27d0: 3e 3c 2f 74 74 3e 20 69 73 20 74 68 65 20 63 6f  ></tt> is the co
27e0: 75 6e 74 65 72 20 66 6f 72 20 74 68 65 20 66 69  unter for the fi
27f0: 72 73 74 20 69 6e 74 65 72 76 61 6c 20 3c 74 74  rst interval <tt
2800: 3e 3c 69 3e 74 69 6d 65 31 3c 2f 69 3e 3c 2f 74  ><i>time1</i></t
2810: 74 3e 2e 20 54 68 65 20 69 6e 74 65 72 76 61 6c  t>. The interval
2820: 73 20 3c 74 74 3e 3c 69 3e 74 69 6d 65 31 3c 2f  s <tt><i>time1</
2830: 69 3e 3c 2f 74 74 3e 20 61 6e 64 20 3c 74 74 3e  i></tt> and <tt>
2840: 3c 69 3e 74 69 6d 65 32 3c 2f 69 3e 3c 2f 74 74  <i>time2</i></tt
2850: 3e 20 6d 75 73 74 20 62 65 20 67 69 76 65 6e 20  > must be given 
2860: 61 73 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e  as floating poin
2870: 74 20 6e 75 6d 62 65 72 73 20 6f 66 20 73 65 63  t numbers of sec
2880: 6f 6e 64 73 2e 20 3c 74 74 3e 3c 69 3e 63 61 6e  onds. <tt><i>can
2890: 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 74  id</i></tt> is t
28a0: 68 65 20 6d 61 6a 6f 72 20 43 41 4e 20 69 64 65  he major CAN ide
28b0: 6e 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20  ntifier for the 
28c0: 3c 74 74 3e 42 43 4d 3c 2f 74 74 3e 20 6d 65 73  <tt>BCM</tt> mes
28d0: 73 61 67 65 2e 20 3c 74 74 3e 3c 69 3e 69 66 69  sage. <tt><i>ifi
28e0: 6e 64 65 78 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73  ndex</i></tt> is
28f0: 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 69   the interface i
2900: 6e 64 65 78 20 77 68 69 63 68 20 69 73 20 72 65  ndex which is re
2910: 71 75 69 72 65 64 2c 20 69 66 20 74 68 65 20 3c  quired, if the <
2920: 62 3e 43 41 4e 5f 42 43 4d 3c 2f 62 3e 20 63 68  b>CAN_BCM</b> ch
2930: 61 6e 6e 65 6c 20 77 61 73 20 62 6f 75 6e 64 20  annel was bound 
2940: 74 6f 20 61 6c 6c 20 69 6e 74 65 72 66 61 63 65  to all interface
2950: 73 2e 20 41 6c 6c 20 66 6f 6c 6c 6f 77 69 6e 67  s. All following
2960: 20 6f 70 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65   optional argume
2970: 6e 74 73 20 6d 61 6b 65 20 75 70 20 43 41 4e 20  nts make up CAN 
2980: 66 72 61 6d 65 73 20 61 6e 64 20 6d 75 73 74 20  frames and must 
2990: 62 65 20 70 61 69 72 73 20 6f 66 20 61 20 43 41  be pairs of a CA
29a0: 4e 20 69 64 65 6e 74 69 66 69 65 72 20 61 6e 64  N identifier and
29b0: 20 61 20 62 79 74 65 20 61 72 72 61 79 20 6f 66   a byte array of
29c0: 20 30 20 75 70 20 74 6f 20 38 20 62 79 74 65 73   0 up to 8 bytes
29d0: 20 66 6f 72 20 6e 6f 72 6d 61 6c 20 66 72 61 6d   for normal fram
29e0: 65 73 2c 20 6f 72 20 61 6e 20 69 6e 74 65 67 65  es, or an intege
29f0: 72 20 61 73 20 64 61 74 61 20 6c 65 6e 67 74 68  r as data length
2a00: 20 66 6f 72 20 52 54 52 20 66 72 61 6d 65 73 2e   for RTR frames.
2a10: 0d 0a 0d 0a 3c 68 33 3e 43 41 4e 20 49 64 65 6e  ....<h3>CAN Iden
2a20: 74 69 66 69 65 72 73 3c 2f 68 33 3e 0d 0a 0d 0a  tifiers</h3>....
2a30: 54 68 65 20 4c 69 6e 75 78 20 53 6f 63 6b 65 74  The Linux Socket
2a40: 43 41 4e 20 69 6e 74 65 72 66 61 63 65 20 64 65  CAN interface de
2a50: 66 69 6e 65 73 20 73 70 65 63 69 61 6c 20 62 69  fines special bi
2a60: 74 73 20 69 6e 20 43 41 4e 20 69 64 65 6e 74 69  ts in CAN identi
2a70: 66 69 65 72 73 20 77 68 69 63 68 20 61 72 65 20  fiers which are 
2a80: 6d 61 64 65 20 75 70 20 6f 66 20 74 68 65 20 74  made up of the t
2a90: 68 72 65 65 20 6d 6f 73 74 20 73 69 67 6e 69 66  hree most signif
2aa0: 69 63 61 6e 74 20 62 69 74 73 20 69 6e 20 61 20  icant bits in a 
2ab0: 33 32 20 62 69 74 20 69 6e 74 65 67 65 72 3a 20  32 bit integer: 
2ac0: 30 78 38 30 30 30 30 30 30 30 20 66 6f 72 20 65  0x80000000 for e
2ad0: 78 74 65 6e 64 65 64 20 66 72 61 6d 65 20 66 6f  xtended frame fo
2ae0: 72 6d 61 74 20 28 3c 74 74 3e 45 46 46 3c 2f 74  rmat (<tt>EFF</t
2af0: 74 3e 29 2c 20 30 78 34 30 30 30 30 30 30 30 20  t>), 0x40000000 
2b00: 66 6f 72 20 72 65 6d 6f 74 65 20 74 72 61 6e 73  for remote trans
2b10: 6d 69 73 73 69 6f 6e 20 72 65 71 75 65 73 74 20  mission request 
2b20: 28 3c 74 74 3e 52 54 52 3c 2f 74 74 3e 29 2c 20  (<tt>RTR</tt>), 
2b30: 61 6e 64 20 30 78 32 30 30 30 30 30 30 30 20 66  and 0x20000000 f
2b40: 6f 72 20 65 72 72 6f 72 20 66 72 61 6d 65 73 20  or error frames 
2b50: 28 3c 74 74 3e 45 52 52 3c 2f 74 74 3e 29 2e 20  (<tt>ERR</tt>). 
2b60: 54 68 65 20 6c 6f 77 65 72 20 32 39 20 28 66 6f  The lower 29 (fo
2b70: 72 20 3c 74 74 3e 45 46 46 3c 2f 74 74 3e 29 20  r <tt>EFF</tt>) 
2b80: 6f 72 20 31 31 20 28 66 6f 72 20 3c 74 74 3e 53  or 11 (for <tt>S
2b90: 46 46 3c 2f 74 74 3e 29 20 62 69 74 73 20 6d 61  FF</tt>) bits ma
2ba0: 6b 65 20 75 70 20 74 68 65 20 43 41 4e 20 69 64  ke up the CAN id
2bb0: 65 6e 74 69 66 69 65 72 2e 20 49 6e 20 6f 72 64  entifier. In ord
2bc0: 65 72 20 74 6f 20 72 65 74 72 69 65 76 65 20 74  er to retrieve t
2bd0: 68 65 20 72 65 61 6c 20 43 41 4e 20 69 64 65 6e  he real CAN iden
2be0: 74 69 66 69 65 72 20 6f 66 20 20 61 20 72 65 63  tifier of  a rec
2bf0: 65 69 76 65 64 20 43 41 4e 20 6d 65 73 73 61 67  eived CAN messag
2c00: 65 20 66 72 6f 6d 20 3c 74 74 3e 63 61 6e 20 72  e from <tt>can r
2c10: 65 61 64 3c 2f 74 74 3e 20 61 20 62 69 6e 61 72  ead</tt> a binar
2c20: 79 20 61 6e 64 20 77 69 74 68 20 74 68 65 20 6d  y and with the m
2c30: 61 73 6b 73 20 30 78 31 46 46 46 46 46 46 46 20  asks 0x1FFFFFFF 
2c40: 6f 72 20 30 78 37 46 46 20 6d 75 73 74 20 62 65  or 0x7FF must be
2c50: 20 63 61 72 72 69 65 64 20 6f 75 74 2e 20 49 6e   carried out. In
2c60: 20 6f 72 64 65 72 20 74 6f 20 73 65 6e 64 20 61   order to send a
2c70: 6e 20 3c 74 74 3e 52 54 52 3c 2f 74 74 3e 20 6d  n <tt>RTR</tt> m
2c80: 65 73 73 61 67 65 2c 20 74 68 65 20 43 41 4e 20  essage, the CAN 
2c90: 69 64 65 6e 74 69 66 69 65 72 20 6d 75 73 74 20  identifier must 
2ca0: 62 65 20 62 69 6e 61 72 79 20 6f 72 2d 65 64 20  be binary or-ed 
2cb0: 77 69 74 68 20 30 78 34 30 30 30 30 30 30 30 20  with 0x40000000 
2cc0: 66 6f 72 20 3c 74 74 3e 63 61 6e 20 77 72 69 74  for <tt>can writ
2cd0: 65 3c 2f 74 74 3e 2e 20 49 6e 20 6f 72 64 65 72  e</tt>. In order
2ce0: 20 74 6f 20 73 65 6e 64 20 61 20 32 39 20 62 69   to send a 29 bi
2cf0: 74 20 43 41 4e 20 69 64 65 6e 74 69 66 69 65 72  t CAN identifier
2d00: 20 69 74 20 6d 75 73 74 20 62 65 20 6f 72 2d 65   it must be or-e
2d10: 64 20 77 69 74 68 20 30 78 38 30 30 30 30 30 30  d with 0x8000000
2d20: 30 2e 0d 0a 0d 0a 3c 68 33 3e 43 68 61 6e 6e 65  0.....<h3>Channe
2d30: 6c 20 4f 70 74 69 6f 6e 73 3c 2f 68 33 3e 0d 0a  l Options</h3>..
2d40: 0d 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  ..The following 
2d50: 6c 69 73 74 20 64 65 73 63 72 69 62 65 73 20 74  list describes t
2d60: 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 68  he additional ch
2d70: 61 6e 6e 65 6c 20 6f 70 74 69 6f 6e 73 20 6f 66  annel options of
2d80: 20 43 41 4e 20 63 68 61 6e 6e 65 6c 73 2e 0d 0a   CAN channels...
2d90: 0d 0a 3c 74 74 3e 2d 65 72 72 6f 72 3c 2f 74 74  ..<tt>-error</tt
2da0: 3e 0d 0a 0d 0a 20 20 20 20 54 68 65 20 6c 61 73  >....    The las
2db0: 74 20 73 79 73 74 65 6d 20 65 72 72 6f 72 20 6d  t system error m
2dc0: 65 73 73 61 67 65 20 6f 6e 20 74 68 65 20 63 68  essage on the ch
2dd0: 61 6e 6e 65 6c 2e 20 54 68 69 73 20 69 73 20 61  annel. This is a
2de0: 20 72 65 61 64 2d 6f 6e 6c 79 20 6f 70 74 69 6f   read-only optio
2df0: 6e 2e 0d 0a 0d 0a 3c 74 74 3e 2d 66 69 6c 74 65  n.....<tt>-filte
2e00: 72 20 3c 69 3e 3f 6c 69 73 74 3f 3c 2f 69 3e 3c  r <i>?list?</i><
2e10: 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 4d 65 73 73  /tt>....    Mess
2e20: 61 67 65 20 66 69 6c 74 65 72 73 20 61 70 70 6c  age filters appl
2e30: 69 65 64 20 6f 6e 20 72 65 63 65 70 74 69 6f 6e  ied on reception
2e40: 2e 20 3c 74 74 3e 3c 69 3e 6c 69 73 74 3c 2f 69  . <tt><i>list</i
2e50: 3e 3c 2f 74 74 3e 20 6d 75 73 74 20 62 65 20 6d  ></tt> must be m
2e60: 61 64 65 20 75 70 20 6f 66 20 61 6e 20 65 76 65  ade up of an eve
2e70: 6e 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 74 65  n number of inte
2e80: 67 65 72 73 20 73 70 65 63 69 66 79 69 6e 67 20  gers specifying 
2e90: 43 41 4e 20 69 64 65 6e 74 69 66 69 65 72 73 20  CAN identifiers 
2ea0: 61 6e 64 20 6d 61 73 6b 73 2e 20 54 68 65 20 64  and masks. The d
2eb0: 65 66 61 75 6c 74 20 69 73 20 6e 6f 20 66 69 6c  efault is no fil
2ec0: 74 65 72 69 6e 67 2c 20 65 78 70 72 65 73 73 65  tering, expresse
2ed0: 64 20 61 73 20 74 77 6f 20 7a 65 72 6f 20 76 61  d as two zero va
2ee0: 6c 75 65 73 2e 20 55 70 20 74 6f 20 31 36 20 66  lues. Up to 16 f
2ef0: 69 6c 74 65 72 73 20 63 61 6e 20 62 65 20 73 70  ilters can be sp
2f00: 65 63 69 66 69 65 64 2e 20 46 6f 72 20 64 65 74  ecified. For det
2f10: 61 69 6c 73 20 72 65 66 65 72 20 74 6f 20 3c 62  ails refer to <b
2f20: 3e 2f 75 73 72 2f 69 6e 63 6c 75 64 65 2f 6c 69  >/usr/include/li
2f30: 6e 75 78 2f 63 61 6e 2e 68 3c 2f 62 3e 2e 0d 0a  nux/can.h</b>...
2f40: 0d 0a 3c 74 74 3e 2d 6c 6f 6f 70 62 61 63 6b 20  ..<tt>-loopback 
2f50: 3c 69 3e 3f 62 6f 6f 6c 3f 3c 2f 69 3e 3c 2f 74  <i>?bool?</i></t
2f60: 74 3e 0d 0a 0d 0a 20 20 20 20 4d 65 73 73 61 67  t>....    Messag
2f70: 65 73 20 73 65 6e 74 20 61 72 65 20 6c 6f 6f 70  es sent are loop
2f80: 65 64 20 62 61 63 6b 20 6f 6e 20 74 68 65 20 6c  ed back on the l
2f90: 6f 63 61 6c 20 73 79 73 74 65 6d 20 20 77 68 65  ocal system  whe
2fa0: 6e 20 20 65 6e 61 62 6c 65 64 20 28 6f 6e 20 62  n  enabled (on b
2fb0: 79 20 64 65 66 61 75 6c 74 29 2e 0d 0a 0d 0a 3c  y default).....<
2fc0: 74 74 3e 2d 6f 77 6e 6d 73 67 73 20 3c 69 3e 3f  tt>-ownmsgs <i>?
2fd0: 62 6f 6f 6c 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a  bool?</i></tt>..
2fe0: 0d 0a 20 20 20 20 4d 65 73 73 61 67 65 73 20 73  ..    Messages s
2ff0: 65 6e 74 20 61 72 65 20 72 65 63 65 69 76 65 64  ent are received
3000: 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 63 68 61   on the same cha
3010: 6e 6e 65 6c 20 77 68 65 6e 20 65 6e 61 62 6c 65  nnel when enable
3020: 64 20 28 6f 66 66 20 62 79 20 64 65 66 61 75 6c  d (off by defaul
3030: 74 29 2e 0d 0a 0d 0a 3c 68 33 3e 4c 69 6e 6b 20  t).....<h3>Link 
3040: 4d 61 6e 61 67 65 6d 65 6e 74 3c 2f 68 33 3e 0d  Management</h3>.
3050: 0a 0d 0a 54 68 65 20 6c 69 6e 6b 20 6d 61 6e 61  ...The link mana
3060: 67 65 6d 65 6e 74 20 73 75 62 63 6f 6d 6d 61 6e  gement subcomman
3070: 64 73 20 3c 74 74 3e 62 69 74 72 61 74 65 3c 2f  ds <tt>bitrate</
3080: 74 74 3e 2c 20 3c 74 74 3e 62 69 74 74 69 6d 69  tt>, <tt>bittimi
3090: 6e 67 3c 2f 74 74 3e 2c 20 3c 74 74 3e 62 69 74  ng</tt>, <tt>bit
30a0: 74 69 6d 69 6e 67 5f 63 6f 6e 73 74 3c 2f 74 74  timing_const</tt
30b0: 3e 2c 20 3c 74 74 3e 62 65 72 72 3c 2f 74 74 3e  >, <tt>berr</tt>
30c0: 2c 20 3c 74 74 3e 63 6c 6f 63 6b 3c 2f 74 74 3e  , <tt>clock</tt>
30d0: 2c 20 3c 74 74 3e 63 74 6c 72 6d 6f 64 65 3c 2f  , <tt>ctlrmode</
30e0: 74 74 3e 2c 20 3c 74 74 3e 64 65 76 73 74 61 74  tt>, <tt>devstat
30f0: 3c 2f 74 74 3e 2c 20 3c 74 74 3e 72 65 73 74 61  </tt>, <tt>resta
3100: 72 74 3c 2f 74 74 3e 2c 20 3c 74 74 3e 72 65 73  rt</tt>, <tt>res
3110: 74 61 72 74 5f 6d 73 3c 2f 74 74 3e 2c 20 3c 74  tart_ms</tt>, <t
3120: 74 3e 73 74 61 72 74 3c 2f 74 74 3e 2c 20 3c 74  t>start</tt>, <t
3130: 74 3e 73 74 61 74 65 3c 2f 74 74 3e 2c 20 61 6e  t>state</tt>, an
3140: 64 20 3c 74 74 3e 73 74 6f 70 3c 2f 74 74 3e 20  d <tt>stop</tt> 
3150: 64 65 70 65 6e 64 20 6f 6e 20 61 6e 20 69 6e 73  depend on an ins
3160: 74 61 6c 6c 65 64 20 3c 62 3e 6c 69 62 73 6f 63  talled <b>libsoc
3170: 6b 65 74 63 61 6e 3c 2f 62 3e 20 73 68 61 72 65  ketcan</b> share
3180: 64 20 6c 69 62 72 61 72 79 20 66 6f 72 20 70 72  d library for pr
3190: 6f 70 65 72 20 6f 70 65 72 61 74 69 6f 6e 2e 20  oper operation. 
31a0: 4f 74 68 65 72 77 69 73 65 20 74 68 65 79 20 72  Otherwise they r
31b0: 65 70 6f 72 74 20 22 66 75 6e 63 74 69 6f 6e 20  eport "function 
31c0: 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 22  not implemented"
31d0: 2e 20 41 6c 6c 20 63 68 61 6e 67 65 73 20 6f 66  . All changes of
31e0: 20 6c 69 6e 6b 20 73 74 61 74 65 20 62 79 20 74   link state by t
31f0: 68 65 73 65 20 63 6f 6d 6d 61 6e 64 73 20 75 73  hese commands us
3200: 75 61 6c 6c 79 20 72 65 71 75 69 72 65 20 61 64  ually require ad
3210: 6d 69 6e 69 73 74 72 61 74 69 76 65 20 72 69 67  ministrative rig
3220: 68 74 73 2e 20 45 69 74 68 65 72 20 74 68 65 20  hts. Either the 
3230: 63 61 6c 6c 69 6e 67 20 70 72 6f 63 65 73 73 20  calling process 
3240: 6d 75 73 74 20 68 61 76 65 20 73 75 70 65 72 20  must have super 
3250: 75 73 65 72 20 70 72 69 76 69 6c 65 67 65 73 20  user privileges 
3260: 6f 72 20 74 68 65 20 3c 62 3e 43 41 50 5f 4e 45  or the <b>CAP_NE
3270: 54 5f 41 44 4d 49 4e 3c 2f 62 3e 20 63 61 70 61  T_ADMIN</b> capa
3280: 62 69 6c 69 74 79 20 6d 75 73 74 20 62 65 20 65  bility must be e
3290: 66 66 65 63 74 69 76 65 2e 20 54 68 65 20 6c 61  ffective. The la
32a0: 74 74 65 72 20 63 61 6e 20 62 65 20 61 63 68 69  tter can be achi
32b0: 65 76 65 64 20 62 79 20 61 20 63 6f 6d 6d 61 6e  eved by a comman
32c0: 64 20 73 69 6d 69 6c 61 72 20 74 6f 3a 0d 0a 0d  d similar to:...
32d0: 0a 3c 76 65 72 62 61 74 69 6d 3e 0d 0a 20 20 20  .<verbatim>..   
32e0: 20 73 65 74 63 61 70 20 63 61 70 5f 6e 65 74 5f   setcap cap_net_
32f0: 61 64 6d 69 6e 2b 65 69 70 20 62 69 6e 61 72 79  admin+eip binary
3300: 2d 70 61 63 6b 61 67 65 2d 72 65 71 75 69 72 69  -package-requiri
3310: 6e 67 2d 74 63 6c 63 61 6e 0d 0a 3c 2f 76 65 72  ng-tclcan..</ver
3320: 62 61 74 69 6d 3e 0d 0a 0d 0a 46 75 72 74 68 65  batim>....Furthe
3330: 72 6d 6f 72 65 2c 20 72 65 74 72 69 65 76 69 6e  rmore, retrievin
3340: 67 20 6c 69 6e 6b 20 69 6e 66 6f 72 6d 61 74 69  g link informati
3350: 6f 6e 20 64 65 70 65 6e 64 73 20 6f 6e 20 43 41  on depends on CA
3360: 4e 20 64 72 69 76 65 72 20 73 75 70 70 6f 72 74  N driver support
3370: 2e 20 55 73 75 61 6c 6c 79 2c 20 74 68 65 20 76  . Usually, the v
3380: 69 72 74 75 61 6c 20 43 41 4e 20 64 72 69 76 65  irtual CAN drive
3390: 72 20 3c 62 3e 76 63 61 6e 3c 2f 62 3e 20 61 6e  r <b>vcan</b> an
33a0: 64 20 64 72 69 76 65 72 73 20 61 74 74 61 63 68  d drivers attach
33b0: 65 64 20 74 68 72 6f 75 67 68 20 61 20 73 65 72  ed through a ser
33c0: 69 61 6c 20 6c 69 6e 65 20 64 69 73 63 69 70 6c  ial line discipl
33d0: 69 6e 65 20 28 75 73 69 6e 67 20 74 68 65 20 3c  ine (using the <
33e0: 62 3e 73 6c 63 61 6e 5f 61 74 74 61 63 68 3c 2f  b>slcan_attach</
33f0: 62 3e 20 6f 72 20 3c 62 3e 73 6c 63 61 6e 64 3c  b> or <b>slcand<
3400: 2f 62 3e 20 70 72 6f 67 72 61 6d 73 29 20 6f 6e  /b> programs) on
3410: 6c 79 20 70 72 6f 76 69 64 65 20 72 75 64 69 6d  ly provide rudim
3420: 65 6e 74 61 72 79 20 6c 69 6e 6b 20 73 74 61 74  entary link stat
3430: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a  e information...
3440: 0d 0a 3c 68 33 3e 42 72 6f 61 64 63 61 73 74 20  ..<h3>Broadcast 
3450: 4d 61 6e 61 67 65 72 20 45 78 61 6d 70 6c 65 73  Manager Examples
3460: 3c 2f 68 33 3e 0d 0a 0d 0a 4f 70 65 6e 20 3c 74  </h3>....Open <t
3470: 74 3e 42 43 4d 3c 2f 74 74 3e 20 63 68 61 6e 6e  t>BCM</tt> chann
3480: 65 6c 3a 0d 0a 0d 0a 3c 76 65 72 62 61 74 69 6d  el:....<verbatim
3490: 3e 0d 0a 20 20 20 20 73 65 74 20 63 68 61 6e 20  >..    set chan 
34a0: 5b 63 61 6e 20 62 63 6d 6f 70 65 6e 20 63 61 6e  [can bcmopen can
34b0: 30 5d 0d 0a 3c 2f 76 65 72 62 61 74 69 6d 3e 0d  0]..</verbatim>.
34c0: 0a 0d 0a 53 63 68 65 64 75 6c 65 20 73 65 6e 64  ...Schedule send
34d0: 69 6e 67 20 74 68 65 20 70 61 74 74 65 72 6e 20  ing the pattern 
34e0: 30 78 34 31 34 32 34 33 34 34 20 6f 6e 20 43 41  0x41424344 on CA
34f0: 4e 20 69 64 65 6e 74 69 66 69 65 72 20 30 78 31  N identifier 0x1
3500: 32 33 20 6f 6e 63 65 20 70 65 72 20 73 65 63 6f  23 once per seco
3510: 6e 64 3a 0d 0a 0d 0a 3c 76 65 72 62 61 74 69 6d  nd:....<verbatim
3520: 3e 0d 0a 20 20 20 20 63 61 6e 20 77 72 69 74 65  >..    can write
3530: 20 24 63 68 61 6e 20 54 58 5f 53 45 54 55 50 20   $chan TX_SETUP 
3540: 5c 0d 0a 20 20 20 20 20 20 20 20 7b 53 45 54 54  \..        {SETT
3550: 49 4d 45 52 20 53 54 41 52 54 54 49 4d 45 52 7d  IMER STARTTIMER}
3560: 20 5c 0d 0a 20 20 20 20 20 20 20 20 30 20 30 2e   \..        0 0.
3570: 30 20 31 2e 30 20 30 78 31 32 33 20 30 78 31 32  0 1.0 0x123 0x12
3580: 33 20 41 42 43 44 0d 0a 3c 2f 76 65 72 62 61 74  3 ABCD..</verbat
3590: 69 6d 3e 0d 0a 0d 0a 44 69 73 70 61 74 63 68 20  im>....Dispatch 
35a0: 72 65 63 65 69 76 69 6e 67 20 43 41 4e 20 69 64  receiving CAN id
35b0: 65 6e 74 69 66 69 65 72 20 30 78 31 32 33 20 77  entifier 0x123 w
35c0: 69 74 68 20 75 70 64 61 74 65 20 72 61 74 65 20  ith update rate 
35d0: 6c 69 6d 69 74 65 64 20 74 6f 20 74 77 6f 20 73  limited to two s
35e0: 65 63 6f 6e 64 73 3a 0d 0a 0d 0a 3c 76 65 72 62  econds:....<verb
35f0: 61 74 69 6d 3e 0d 0a 20 20 20 20 63 61 6e 20 77  atim>..    can w
3600: 72 69 74 65 20 24 63 68 61 6e 20 52 58 5f 53 45  rite $chan RX_SE
3610: 54 55 50 20 5c 0d 0a 20 20 20 20 20 20 20 20 7b  TUP \..        {
3620: 53 45 54 54 49 4d 45 52 20 52 58 5f 46 49 4c 54  SETTIMER RX_FILT
3630: 45 52 5f 49 44 20 52 58 5f 41 4e 4e 4f 55 4e 43  ER_ID RX_ANNOUNC
3640: 45 5f 52 45 53 55 4d 45 7d 20 5c 0d 0a 20 20 20  E_RESUME} \..   
3650: 20 20 20 20 20 30 20 30 2e 30 20 32 2e 30 20 30       0 0.0 2.0 0
3660: 78 31 32 33 0d 0a 3c 2f 76 65 72 62 61 74 69 6d  x123..</verbatim
3670: 3e 0d 0a 0d 0a 44 75 6d 70 20 61 6c 6c 20 72 65  >....Dump all re
3680: 63 65 69 76 65 64 20 3c 74 74 3e 42 43 4d 3c 2f  ceived <tt>BCM</
3690: 74 74 3e 20 6d 65 73 73 61 67 65 73 20 6f 6e 20  tt> messages on 
36a0: 73 74 61 6e 64 61 72 64 20 6f 75 74 70 75 74 3a  standard output:
36b0: 0d 0a 0d 0a 3c 76 65 72 62 61 74 69 6d 3e 0d 0a  ....<verbatim>..
36c0: 20 20 20 20 70 72 6f 63 20 64 75 6d 70 20 63 68      proc dump ch
36d0: 61 6e 20 7b 70 75 74 73 20 5b 63 61 6e 20 64 75  an {puts [can du
36e0: 6d 70 20 24 63 68 61 6e 5d 7d 0d 0a 20 20 20 20  mp $chan]}..    
36f0: 66 69 6c 65 65 76 65 6e 74 20 24 63 68 61 6e 20  fileevent $chan 
3700: 72 65 61 64 61 62 6c 65 20 5b 6c 69 73 74 20 64  readable [list d
3710: 75 6d 70 20 24 63 68 61 6e 5d 0d 0a 3c 2f 76 65  ump $chan]..</ve
3720: 72 62 61 74 69 6d 3e 0d 0a 0a 5a 20 64 33 31 65  rbatim>...Z d31e
3730: 35 31 39 39 65 36 64 30 36 32 35 34 66 31 63 64  5199e6d06254f1cd
3740: 33 32 37 32 64 34 62 36 37 35 30 64 0a           3272d4b6750d.