diff --git a/docs/HUNTER_UserManual_v1.2.6_S.pdf b/docs/HUNTER_UserManual_v1.2.6_S.pdf new file mode 100644 index 0000000..4fa0556 Binary files /dev/null and b/docs/HUNTER_UserManual_v1.2.6_S.pdf differ diff --git a/docs/SCOUT_UserManual_v1.2.10_S.pdf b/docs/SCOUT_UserManual_v1.2.16_S.pdf similarity index 65% rename from docs/SCOUT_UserManual_v1.2.10_S.pdf rename to docs/SCOUT_UserManual_v1.2.16_S.pdf index 95df6c2..d07af84 100644 Binary files a/docs/SCOUT_UserManual_v1.2.10_S.pdf and b/docs/SCOUT_UserManual_v1.2.16_S.pdf differ diff --git a/docs/TRACER_UserManual_v1.1.pdf b/docs/TRACER_UserManual_v1.1.pdf new file mode 100644 index 0000000..4b2ddd7 Binary files /dev/null and b/docs/TRACER_UserManual_v1.1.pdf differ diff --git a/docs/misc/SCOUT_UserManual_v1.2.8_CN.pdf b/docs/misc/SCOUT_UserManual_v1.2.8_CN.pdf deleted file mode 100644 index 4f34c71..0000000 Binary files a/docs/misc/SCOUT_UserManual_v1.2.8_CN.pdf and /dev/null differ diff --git a/docs/misc/beaglebone_black_can_cape.md b/docs/misc/beaglebone_black_can_cape.md deleted file mode 100644 index 22a6265..0000000 --- a/docs/misc/beaglebone_black_can_cape.md +++ /dev/null @@ -1,23 +0,0 @@ -# Setup CAN on Beaglebone Black - -CAN/RS485 Cape: https://item.taobao.com/item.htm?spm=a1z09.2.0.0.68b02e8d02l2uT&id=42637485181&_u=a4mg52ma183 - -* Install latest Debian image from offical site -* Build and install overlays -``` -$ sudo apt install device-tree-compiler -$ git clone https://github.com/beagleboard/bb.org-overlays -$ cd ./bb.org-overlays/ -$ ./install.sh -``` -* Edit /boot/uEnv.txt -``` -# 1. Add the following overlay -###Custom Cape -dtb_overlay=/lib/firmware/BB-CAN1-00A0.dtbo - -# 2. Disable auto loading of virutal capes (uncomment the two lines) -disable_uboot_overlay_video=1 -disable_uboot_overlay_audio=1 -``` -* Reboot the system \ No newline at end of file diff --git a/docs/misc/beaglebone_ros_install.md b/docs/misc/beaglebone_ros_install.md deleted file mode 100644 index cb63e7a..0000000 --- a/docs/misc/beaglebone_ros_install.md +++ /dev/null @@ -1,51 +0,0 @@ -``` -$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu stretch main" > /etc/apt/sources.list.d/ros-latest.list' -$ wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add - -$ sudo apt-get update -``` - -``` -$ sudo apt-get install -y python-pip python-setuptools python-yaml python-distribute python-docutils python-dateutil python-six -$ sudo pip install rosdep rosinstall_generator wstool rosinstall -$ sudo apt-get install -y \ - libconsole-bridge-dev liblz4-dev checkinstall cmake \ - python-empy python-nose libbz2-dev \ - libboost-test-dev libboost-dev libboost-program-options-dev \ - libboost-regex-dev libboost-signals-dev \ - libtinyxml-dev libboost-filesystem-dev libxml2-dev \ - libgtest-dev libpoco-dev -``` - -``` -$ sudo rosdep init -$ rosdep update -``` - -``` -$ rosinstall_generator ros_comm --rosdistro melodic --deps --tar > melodic-ros_comm.rosinstall -$ wstool init -j1 src melodic-ros_comm.rosinstall -``` - -``` -$ # rosdep install --from-paths src --ignore-src --rosdistro melodic -y -$ sudo ./src/catkin/bin/catkin_make_isolated --install --install-space /opt/ros/melodic -DCMAKE_BUILD_TYPE=Release -``` - -``` -$ source /opt/ros/melodic/setup.bash -``` - -Additional runtime dependencies: - -``` -$ sudo apt install -y python-defusedxml python-netifaces -``` - -``` -$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654 -``` - -Reference: - -* [1] https://machinekoder.com/ros-with-debian-stretch-on-the-beaglebone-black-green-blue/ -* [2] http://wiki.ros.org/melodic/Installation/Source \ No newline at end of file diff --git a/docs/misc/can_msg.txt b/docs/misc/can_msg.txt deleted file mode 100644 index 80b9832..0000000 --- a/docs/misc/can_msg.txt +++ /dev/null @@ -1,2248 +0,0 @@ - can1 203 [8] 00 00 00 00 00 00 E2 EF - can1 141 [8] 00 00 00 02 0F 00 E2 3D - can1 131 [8] 00 00 00 00 00 00 E4 1E - can1 200 [8] 00 00 00 00 00 00 E3 ED - can1 201 [8] 00 00 00 00 00 00 E3 EE - can1 202 [8] 00 00 00 00 00 00 E3 EF - can1 203 [8] 00 00 00 00 00 00 E3 F0 - can1 141 [8] 00 00 00 02 0E 00 E3 3D - can1 151 [8] 01 00 00 EF 00 3C E4 6A - can1 131 [8] 00 00 00 00 00 00 E5 1F - can1 200 [8] 00 00 00 00 00 00 E4 EE - can1 201 [8] 00 00 00 00 00 00 E4 EF - can1 202 [8] 00 00 00 00 00 00 E4 F0 - can1 203 [8] 00 00 00 00 00 00 E4 F1 - can1 141 [8] 00 00 00 02 0E 00 E4 3E - can1 151 [8] 01 00 00 EF 00 3C E5 6B - can1 131 [8] 00 00 00 00 00 00 E6 20 - can1 200 [8] 00 00 00 00 00 00 E5 EF - can1 201 [8] 00 00 00 00 00 00 E5 F0 - can1 202 [8] 00 00 00 00 00 00 E5 F1 - can1 203 [8] 00 00 00 00 00 00 E5 F2 - can1 141 [8] 00 00 00 02 0D 00 E5 3E - can1 151 [8] 01 00 00 EF 00 3C E6 6C - can1 131 [8] 00 00 00 00 00 00 E7 21 - can1 200 [8] 00 00 00 00 00 00 E6 F0 - can1 201 [8] 00 00 00 00 00 00 E6 F1 - can1 202 [8] 00 00 00 00 00 00 E6 F2 - can1 203 [8] 00 00 00 00 00 00 E6 F3 - can1 141 [8] 00 00 00 02 0C 00 E6 3E - can1 151 [8] 01 00 00 EF 00 3C E7 6D - can1 151 [8] 01 00 00 EF 00 3C E8 6E - can1 131 [8] 00 00 00 00 00 00 E8 22 - can1 200 [8] 00 00 00 00 00 00 E7 F1 - can1 201 [8] 00 00 00 00 00 00 E7 F2 - can1 202 [8] 00 00 00 00 00 00 E7 F3 - can1 203 [8] 00 00 00 00 00 00 E7 F4 - can1 141 [8] 00 00 00 02 0B 00 E7 3E - can1 131 [8] 00 00 00 00 00 00 E9 23 - can1 200 [8] 00 00 00 00 00 00 E8 F2 - can1 201 [8] 00 00 00 00 00 00 E8 F3 - can1 202 [8] 00 00 00 00 00 00 E8 F4 - can1 203 [8] 00 00 00 00 00 00 E8 F5 - can1 141 [8] 00 00 00 02 0A 00 E8 3E - can1 151 [8] 01 00 00 EF 00 3C E9 6F - can1 131 [8] 00 00 00 00 00 00 EA 24 - can1 200 [8] 00 00 00 00 00 00 E9 F3 - can1 201 [8] 00 00 00 00 00 00 E9 F4 - can1 202 [8] 00 00 00 00 00 00 E9 F5 - can1 203 [8] 00 00 00 00 00 00 E9 F6 - can1 141 [8] 00 00 00 02 0A 00 E9 3F - can1 151 [8] 01 00 00 EF 00 3C EA 70 - can1 131 [8] 00 00 00 00 00 00 EB 25 - can1 200 [8] 00 00 00 00 00 00 EA F4 - can1 201 [8] 00 00 00 00 00 00 EA F5 - can1 202 [8] 00 00 00 00 00 00 EA F6 - can1 203 [8] 00 00 00 00 00 00 EA F7 - can1 141 [8] 00 00 00 02 09 00 EA 3F - can1 151 [8] 01 00 00 EF 00 3C EB 71 - can1 131 [8] 00 00 00 00 00 00 EC 26 - can1 200 [8] 00 00 00 00 00 00 EB F5 - can1 201 [8] 00 00 00 00 00 00 EB F6 - can1 202 [8] 00 00 00 00 00 00 EB F7 - can1 203 [8] 00 00 00 00 00 00 EB F8 - can1 141 [8] 00 00 00 02 08 00 EB 3F - can1 151 [8] 01 00 00 EF 00 3C EC 72 - can1 131 [8] 00 00 00 00 00 00 ED 27 - can1 200 [8] 00 00 00 00 00 00 EC F6 - can1 201 [8] 00 00 00 00 00 00 EC F7 - can1 202 [8] 00 00 00 00 00 00 EC F8 - can1 203 [8] 00 00 00 00 00 00 EC F9 - can1 141 [8] 00 00 00 02 07 00 EC 3F - can1 151 [8] 01 00 00 EF 00 3C ED 73 - can1 131 [8] 00 00 00 00 00 00 EE 28 - can1 200 [8] 00 00 00 00 00 00 ED F7 - can1 201 [8] 00 00 00 00 00 00 ED F8 - can1 202 [8] 00 00 00 00 00 00 ED F9 - can1 203 [8] 00 00 00 00 00 00 ED FA - can1 141 [8] 00 00 00 02 06 00 ED 3F - can1 151 [8] 01 00 00 EF 00 3C EE 74 - can1 131 [8] 00 00 00 00 00 00 EF 29 - can1 200 [8] 00 00 00 00 00 00 EE F8 - can1 201 [8] 00 00 00 00 00 00 EE F9 - can1 202 [8] 00 00 00 00 00 00 EE FA - can1 203 [8] 00 00 00 00 00 00 EE FB - can1 141 [8] 00 00 00 02 06 00 EE 40 - can1 151 [8] 01 00 00 EF 00 3C EF 75 - can1 131 [8] 00 00 00 00 00 00 F0 2A - can1 200 [8] 00 00 00 00 00 00 EF F9 - can1 201 [8] 00 00 00 00 00 00 EF FA - can1 202 [8] 00 00 00 00 00 00 EF FB - can1 203 [8] 00 00 00 00 00 00 EF FC - can1 141 [8] 00 00 00 02 05 00 EF 40 - can1 151 [8] 01 00 00 EF 00 3C F0 76 - can1 131 [8] 00 00 00 00 00 00 F1 2B - can1 200 [8] 00 00 00 00 00 00 F0 FA - can1 201 [8] 00 00 00 00 00 00 F0 FB - can1 202 [8] 00 00 00 00 00 00 F0 FC - can1 203 [8] 00 00 00 00 00 00 F0 FD - can1 141 [8] 00 00 00 02 04 00 F0 40 - can1 151 [8] 01 00 00 EF 00 3C F1 77 - can1 131 [8] 00 00 00 00 00 00 F2 2C - can1 200 [8] 00 00 00 00 00 00 F1 FB - can1 201 [8] 00 00 00 00 00 00 F1 FC - can1 202 [8] 00 00 00 00 00 00 F1 FD - can1 203 [8] 00 00 00 00 00 00 F1 FE - can1 141 [8] 00 00 00 02 03 00 F1 40 - can1 151 [8] 01 00 00 EF 00 3C F2 78 - can1 131 [8] 00 00 00 00 00 00 F3 2D - can1 200 [8] 00 00 00 00 00 00 F2 FC - can1 201 [8] 00 00 00 00 00 00 F2 FD - can1 202 [8] 00 00 00 00 00 00 F2 FE - can1 203 [8] 00 00 00 00 00 00 F2 FF - can1 141 [8] 00 00 00 02 02 00 F2 40 - can1 151 [8] 01 00 00 EF 00 3C F3 79 - can1 131 [8] 00 00 00 00 00 00 F4 2E - can1 200 [8] 00 00 00 00 00 00 F3 FD - can1 201 [8] 00 00 00 00 00 00 F3 FE - can1 202 [8] 00 00 00 00 00 00 F3 FF - can1 203 [8] 00 00 00 00 00 00 F3 00 - can1 141 [8] 00 00 00 02 02 00 F3 41 - can1 151 [8] 01 00 00 EF 00 3C F4 7A - can1 131 [8] 00 00 00 00 00 00 F5 2F - can1 200 [8] 00 00 00 00 00 00 F4 FE - can1 201 [8] 00 00 00 00 00 00 F4 FF - can1 202 [8] 00 00 00 00 00 00 F4 00 - can1 203 [8] 00 00 00 00 00 00 F4 01 - can1 141 [8] 00 00 00 02 01 00 F4 41 - can1 151 [8] 01 00 00 EF 00 3C F5 7B - can1 151 [8] 01 00 00 EF 00 3C F6 7C - can1 131 [8] 00 00 00 00 00 00 F6 30 - can1 200 [8] 00 00 00 00 00 00 F5 FF - can1 201 [8] 00 00 00 00 00 00 F5 00 - can1 202 [8] 00 00 00 00 00 00 F5 01 - can1 203 [8] 00 00 00 00 00 00 F5 02 - can1 141 [8] 00 00 00 02 00 00 F5 41 - can1 131 [8] 00 00 00 00 00 00 F7 31 - can1 200 [8] 00 00 00 00 00 00 F6 00 - can1 201 [8] 00 00 00 00 00 00 F6 01 - can1 202 [8] 00 00 00 00 00 00 F6 02 - can1 203 [8] 00 00 00 00 00 00 F6 03 - can1 141 [8] 00 00 00 02 01 00 F6 43 - can1 151 [8] 01 00 00 EF 00 3C F7 7D - can1 131 [8] 00 00 00 00 00 00 F8 32 - can1 200 [8] 00 00 00 00 00 00 F7 01 - can1 201 [8] 00 00 00 00 00 00 F7 02 - can1 202 [8] 00 00 00 00 00 00 F7 03 - can1 203 [8] 00 00 00 00 00 00 F7 04 - can1 141 [8] 00 00 00 02 02 00 F7 45 - can1 151 [8] 01 00 00 EF 00 3C F8 7E - can1 131 [8] 00 00 00 00 00 00 F9 33 - can1 200 [8] 00 00 00 00 00 00 F8 02 - can1 201 [8] 00 00 00 00 00 00 F8 03 - can1 202 [8] 00 00 00 00 00 00 F8 04 - can1 203 [8] 00 00 00 00 00 00 F8 05 - can1 141 [8] 00 00 00 02 02 00 F8 46 - can1 151 [8] 01 00 00 EF 00 3C F9 7F - can1 131 [8] 00 00 00 00 00 00 FA 34 - can1 200 [8] 00 00 00 00 00 00 F9 03 - can1 201 [8] 00 00 00 00 00 00 F9 04 - can1 202 [8] 00 00 00 00 00 00 F9 05 - can1 203 [8] 00 00 00 00 00 00 F9 06 - can1 141 [8] 00 00 00 02 03 00 F9 48 - can1 151 [8] 01 00 00 EF 00 3C FA 80 - can1 131 [8] 00 00 00 00 00 00 FB 35 - can1 200 [8] 00 00 00 00 00 00 FA 04 - can1 201 [8] 00 00 00 00 00 00 FA 05 - can1 202 [8] 00 00 00 00 00 00 FA 06 - can1 203 [8] 00 00 00 00 00 00 FA 07 - can1 141 [8] 00 00 00 02 04 00 FA 4A - can1 151 [8] 01 00 00 EF 00 3C FB 81 - can1 131 [8] 00 00 00 00 00 00 FC 36 - can1 200 [8] 00 00 00 00 00 00 FB 05 - can1 201 [8] 00 00 00 00 00 00 FB 06 - can1 202 [8] 00 00 00 00 00 00 FB 07 - can1 203 [8] 00 00 00 00 00 00 FB 08 - can1 141 [8] 00 00 00 02 05 00 FB 4C - can1 151 [8] 01 00 00 EF 00 3C FC 82 - can1 131 [8] 00 00 00 00 00 00 FD 37 - can1 200 [8] 00 00 00 00 00 00 FC 06 - can1 201 [8] 00 00 00 00 00 00 FC 07 - can1 202 [8] 00 00 00 00 00 00 FC 08 - can1 203 [8] 00 00 00 00 00 00 FC 09 - can1 141 [8] 00 00 00 02 06 00 FC 4E - can1 151 [8] 01 00 00 EF 00 3C FD 83 - can1 131 [8] 00 00 00 00 00 00 FE 38 - can1 200 [8] 00 00 00 00 00 00 FD 07 - can1 201 [8] 00 00 00 00 00 00 FD 08 - can1 202 [8] 00 00 00 00 00 00 FD 09 - can1 203 [8] 00 00 00 00 00 00 FD 0A - can1 141 [8] 00 00 00 02 07 00 FD 50 - can1 151 [8] 01 00 00 EF 00 3C FE 84 - can1 131 [8] 00 00 00 00 00 00 FF 39 - can1 200 [8] 00 00 00 00 00 00 FE 08 - can1 201 [8] 00 00 00 00 00 00 FE 09 - can1 202 [8] 00 00 00 00 00 00 FE 0A - can1 203 [8] 00 00 00 00 00 00 FE 0B - can1 141 [8] 00 00 00 02 07 00 FE 51 - can1 151 [8] 01 00 00 EF 00 3C FF 85 - can1 131 [8] 00 00 00 00 00 00 00 3A - can1 200 [8] 00 00 00 00 00 00 FF 09 - can1 201 [8] 00 00 00 00 00 00 FF 0A - can1 202 [8] 00 00 00 00 00 00 FF 0B - can1 203 [8] 00 00 00 00 00 00 FF 0C - can1 141 [8] 00 00 00 02 08 00 FF 53 - can1 151 [8] 01 00 00 EF 00 3C 00 86 - can1 131 [8] 00 00 00 00 00 00 01 3B - can1 200 [8] 00 00 00 00 00 00 00 0A - can1 201 [8] 00 00 00 00 00 00 00 0B - can1 202 [8] 00 00 00 00 00 00 00 0C - can1 203 [8] 00 00 00 00 00 00 00 0D - can1 141 [8] 00 00 00 02 09 00 00 55 - can1 151 [8] 01 00 00 EF 00 3C 01 87 - can1 131 [8] 00 00 00 00 00 00 02 3C - can1 200 [8] 00 00 00 00 00 00 01 0B - can1 201 [8] 00 00 00 00 00 00 01 0C - can1 202 [8] 00 00 00 00 00 00 01 0D - can1 203 [8] 00 00 00 00 00 00 01 0E - can1 141 [8] 00 00 00 02 0A 00 01 57 - can1 151 [8] 01 00 00 EF 00 3C 02 88 - can1 131 [8] 00 00 00 00 00 00 03 3D - can1 200 [8] 00 00 00 00 00 00 02 0C - can1 201 [8] 00 00 00 00 00 00 02 0D - can1 202 [8] 00 00 00 00 00 00 02 0E - can1 203 [8] 00 00 00 00 00 00 02 0F - can1 141 [8] 00 00 00 02 0B 00 02 59 - can1 151 [8] 01 00 00 EF 00 3C 03 89 - can1 131 [8] 00 00 00 00 00 00 04 3E - can1 200 [8] 00 00 00 00 00 00 03 0D - can1 201 [8] 00 00 00 00 00 00 03 0E - can1 202 [8] 00 00 00 00 00 00 03 0F - can1 203 [8] 00 00 00 00 00 00 03 10 - can1 141 [8] 00 00 00 02 0B 00 03 5A - can1 151 [8] 01 00 00 EF 00 3C 04 8A - can1 131 [8] 00 00 00 00 00 00 05 3F - can1 200 [8] 00 00 00 00 00 00 04 0E - can1 201 [8] 00 00 00 00 00 00 04 0F - can1 202 [8] 00 00 00 00 00 00 04 10 - can1 203 [8] 00 00 00 00 00 00 04 11 - can1 141 [8] 00 00 00 02 0C 00 04 5C - can1 151 [8] 01 00 00 EF 00 3C 05 8B - can1 131 [8] 00 00 00 00 00 00 06 40 - can1 200 [8] 00 00 00 00 00 00 05 0F - can1 201 [8] 00 00 00 00 00 00 05 10 - can1 202 [8] 00 00 00 00 00 00 05 11 - can1 203 [8] 00 00 00 00 00 00 05 12 - can1 141 [8] 00 00 00 02 0D 00 05 5E - can1 151 [8] 01 00 00 EF 00 3C 06 8C - can1 131 [8] 00 00 00 00 00 00 07 41 - can1 200 [8] 00 00 00 00 00 00 06 10 - can1 201 [8] 00 00 00 00 00 00 06 11 - can1 202 [8] 00 00 00 00 00 00 06 12 - can1 203 [8] 00 00 00 00 00 00 06 13 - can1 141 [8] 00 00 00 02 0E 00 06 60 - can1 151 [8] 01 00 00 EF 00 3C 07 8D - can1 131 [8] 00 00 00 00 00 00 08 42 - can1 200 [8] 00 00 00 00 00 00 07 11 - can1 201 [8] 00 00 00 00 00 00 07 12 - can1 202 [8] 00 00 00 00 00 00 07 13 - can1 203 [8] 00 00 00 00 00 00 07 14 - can1 141 [8] 00 00 00 02 0F 00 07 62 - can1 151 [8] 01 00 00 EF 00 3C 08 8E - can1 131 [8] 00 00 00 00 00 00 09 43 - can1 200 [8] 00 00 00 00 00 00 08 12 - can1 201 [8] 00 00 00 00 00 00 08 13 - can1 202 [8] 00 00 00 00 00 00 08 14 - can1 203 [8] 00 00 00 00 00 00 08 15 - can1 141 [8] 00 00 00 02 0F 00 08 63 - can1 151 [8] 01 00 00 EF 00 3C 09 8F - can1 151 [8] 01 00 00 EF 00 3C 0A 90 - can1 131 [8] 00 00 00 00 00 00 0A 44 - can1 200 [8] 00 00 00 00 00 00 09 13 - can1 201 [8] 00 00 00 00 00 00 09 14 - can1 202 [8] 00 00 00 00 00 00 09 15 - can1 203 [8] 00 00 00 00 00 00 09 16 - can1 141 [8] 00 00 00 02 10 00 09 65 - can1 131 [8] 00 00 00 00 00 00 0B 45 - can1 200 [8] 00 00 00 00 00 00 0A 14 - can1 201 [8] 00 00 00 00 00 00 0A 15 - can1 202 [8] 00 00 00 00 00 00 0A 16 - can1 203 [8] 00 00 00 00 00 00 0A 17 - can1 141 [8] 00 00 00 02 11 00 0A 67 - can1 151 [8] 01 00 00 EF 00 3C 0B 91 - can1 131 [8] 00 00 00 00 00 00 0C 46 - can1 200 [8] 00 00 00 00 00 00 0B 15 - can1 201 [8] 00 00 00 00 00 00 0B 16 - can1 202 [8] 00 00 00 00 00 00 0B 17 - can1 203 [8] 00 00 00 00 00 00 0B 18 - can1 141 [8] 00 00 00 02 12 00 0B 69 - can1 151 [8] 01 00 00 EF 00 3C 0C 92 - can1 131 [8] 00 00 00 00 00 00 0D 47 - can1 200 [8] 00 00 00 00 00 00 0C 16 - can1 201 [8] 00 00 00 00 00 00 0C 17 - can1 202 [8] 00 00 00 00 00 00 0C 18 - can1 203 [8] 00 00 00 00 00 00 0C 19 - can1 141 [8] 00 00 00 02 13 00 0C 6B - can1 151 [8] 01 00 00 EF 00 3C 0D 93 - can1 131 [8] 00 00 00 00 00 00 0E 48 - can1 200 [8] 00 00 00 00 00 00 0D 17 - can1 201 [8] 00 00 00 00 00 00 0D 18 - can1 202 [8] 00 00 00 00 00 00 0D 19 - can1 203 [8] 00 00 00 00 00 00 0D 1A - can1 141 [8] 00 00 00 02 13 00 0D 6C - can1 151 [8] 01 00 00 EF 00 3C 0E 94 - can1 131 [8] 00 00 00 00 00 00 0F 49 - can1 200 [8] 00 00 00 00 00 00 0E 18 - can1 201 [8] 00 00 00 00 00 00 0E 19 - can1 202 [8] 00 00 00 00 00 00 0E 1A - can1 203 [8] 00 00 00 00 00 00 0E 1B - can1 141 [8] 00 00 00 02 14 00 0E 6E - can1 151 [8] 01 00 00 EF 00 3C 0F 95 - can1 131 [8] 00 00 00 00 00 00 10 4A - can1 200 [8] 00 00 00 00 00 00 0F 19 - can1 201 [8] 00 00 00 00 00 00 0F 1A - can1 202 [8] 00 00 00 00 00 00 0F 1B - can1 203 [8] 00 00 00 00 00 00 0F 1C - can1 141 [8] 00 00 00 02 15 00 0F 70 - can1 151 [8] 01 00 00 EF 00 3C 10 96 - can1 131 [8] 00 00 00 00 00 00 11 4B - can1 200 [8] 00 00 00 00 00 00 10 1A - can1 201 [8] 00 00 00 00 00 00 10 1B - can1 202 [8] 00 00 00 00 00 00 10 1C - can1 203 [8] 00 00 00 00 00 00 10 1D - can1 141 [8] 00 00 00 02 16 00 10 72 - can1 151 [8] 01 00 00 EF 00 3C 11 97 - can1 131 [8] 00 00 00 00 00 00 12 4C - can1 200 [8] 00 00 00 00 00 00 11 1B - can1 201 [8] 00 00 00 00 00 00 11 1C - can1 202 [8] 00 00 00 00 00 00 11 1D - can1 203 [8] 00 00 00 00 00 00 11 1E - can1 141 [8] 00 00 00 02 17 00 11 74 - can1 151 [8] 01 00 00 EF 00 3C 12 98 - can1 131 [8] 00 00 00 00 00 00 13 4D - can1 200 [8] 00 00 00 00 00 00 12 1C - can1 201 [8] 00 00 00 00 00 00 12 1D - can1 202 [8] 00 00 00 00 00 00 12 1E - can1 203 [8] 00 00 00 00 00 00 12 1F - can1 141 [8] 00 00 00 02 17 00 12 75 - can1 151 [8] 01 00 00 EF 00 3C 13 99 - can1 131 [8] 00 00 00 00 00 00 14 4E - can1 200 [8] 00 00 00 00 00 00 13 1D - can1 201 [8] 00 00 00 00 00 00 13 1E - can1 202 [8] 00 00 00 00 00 00 13 1F - can1 203 [8] 00 00 00 00 00 00 13 20 - can1 141 [8] 00 00 00 02 18 00 13 77 - can1 151 [8] 01 00 00 EF 00 3C 14 9A - can1 131 [8] 00 00 00 00 00 00 15 4F - can1 200 [8] 00 00 00 00 00 00 14 1E - can1 201 [8] 00 00 00 00 00 00 14 1F - can1 202 [8] 00 00 00 00 00 00 14 20 - can1 203 [8] 00 00 00 00 00 00 14 21 - can1 141 [8] 00 00 00 02 19 00 14 79 - can1 151 [8] 01 00 00 EF 00 3C 15 9B - can1 131 [8] 00 00 00 00 00 00 16 50 - can1 200 [8] 00 00 00 00 00 00 15 1F - can1 201 [8] 00 00 00 00 00 00 15 20 - can1 202 [8] 00 00 00 00 00 00 15 21 - can1 203 [8] 00 00 00 00 00 00 15 22 - can1 141 [8] 00 00 00 02 1A 00 15 7B - can1 151 [8] 01 00 00 EF 00 3C 16 9C - can1 131 [8] 00 00 00 00 00 00 17 51 - can1 200 [8] 00 00 00 00 00 00 16 20 - can1 201 [8] 00 00 00 00 00 00 16 21 - can1 202 [8] 00 00 00 00 00 00 16 22 - can1 203 [8] 00 00 00 00 00 00 16 23 - can1 141 [8] 00 00 00 02 1B 00 16 7D - can1 151 [8] 01 00 00 EF 00 3C 17 9D - can1 131 [8] 00 00 00 00 00 00 18 52 - can1 200 [8] 00 00 00 00 00 00 17 21 - can1 201 [8] 00 00 00 00 00 00 17 22 - can1 202 [8] 00 00 00 00 00 00 17 23 - can1 203 [8] 00 00 00 00 00 00 17 24 - can1 141 [8] 00 00 00 02 1C 00 17 7F - can1 151 [8] 01 00 00 EF 00 3C 18 9E - can1 131 [8] 00 00 00 00 00 00 19 53 - can1 200 [8] 00 00 00 00 00 00 18 22 - can1 201 [8] 00 00 00 00 00 00 18 23 - can1 202 [8] 00 00 00 00 00 00 18 24 - can1 203 [8] 00 00 00 00 00 00 18 25 - can1 141 [8] 00 00 00 02 1C 00 18 80 - can1 151 [8] 01 00 00 EF 00 3C 19 9F - can1 131 [8] 00 00 00 00 00 00 1A 54 - can1 200 [8] 00 00 00 00 00 00 19 23 - can1 201 [8] 00 00 00 00 00 00 19 24 - can1 202 [8] 00 00 00 00 00 00 19 25 - can1 203 [8] 00 00 00 00 00 00 19 26 - can1 141 [8] 00 00 00 02 1D 00 19 82 - can1 151 [8] 01 00 00 EF 00 3C 1A A0 - can1 131 [8] 00 00 00 00 00 00 1B 55 - can1 200 [8] 00 00 00 00 00 00 1A 24 - can1 201 [8] 00 00 00 00 00 00 1A 25 - can1 202 [8] 00 00 00 00 00 00 1A 26 - can1 203 [8] 00 00 00 00 00 00 1A 27 - can1 141 [8] 00 00 00 02 1E 00 1A 84 - can1 151 [8] 01 00 00 EF 00 3C 1B A1 - can1 131 [8] 00 00 00 00 00 00 1C 56 - can1 200 [8] 00 00 00 00 00 00 1B 25 - can1 201 [8] 00 00 00 00 00 00 1B 26 - can1 202 [8] 00 00 00 00 00 00 1B 27 - can1 203 [8] 00 00 00 00 00 00 1B 28 - can1 141 [8] 00 00 00 02 1F 00 1B 86 - can1 151 [8] 01 00 00 EF 00 3C 1C A2 - can1 131 [8] 00 00 00 00 00 00 1D 57 - can1 200 [8] 00 00 00 00 00 00 1C 26 - can1 201 [8] 00 00 00 00 00 00 1C 27 - can1 202 [8] 00 00 00 00 00 00 1C 28 - can1 203 [8] 00 00 00 00 00 00 1C 29 - can1 141 [8] 00 00 00 02 20 00 1C 88 - can1 151 [8] 01 00 00 EF 00 3C 1D A3 - can1 151 [8] 01 00 00 EF 00 3C 1E A4 - can1 131 [8] 00 00 00 00 00 00 1E 58 - can1 200 [8] 00 00 00 00 00 00 1D 27 - can1 201 [8] 00 00 00 00 00 00 1D 28 - can1 202 [8] 00 00 00 00 00 00 1D 29 - can1 203 [8] 00 00 00 00 00 00 1D 2A - can1 141 [8] 00 00 00 02 20 00 1D 89 - can1 131 [8] 00 00 00 00 00 00 1F 59 - can1 200 [8] 00 00 00 00 00 00 1E 28 - can1 201 [8] 00 00 00 00 00 00 1E 29 - can1 202 [8] 00 00 00 00 00 00 1E 2A - can1 203 [8] 00 00 00 00 00 00 1E 2B - can1 141 [8] 00 00 00 02 21 00 1E 8B - can1 151 [8] 01 00 00 EF 00 3C 1F A5 - can1 131 [8] 00 00 00 00 00 00 20 5A - can1 200 [8] 00 00 00 00 00 00 1F 29 - can1 201 [8] 00 00 00 00 00 00 1F 2A - can1 202 [8] 00 00 00 00 00 00 1F 2B - can1 203 [8] 00 00 00 00 00 00 1F 2C - can1 141 [8] 00 00 00 02 22 00 1F 8D - can1 151 [8] 01 00 00 EF 00 3C 20 A6 - can1 131 [8] 00 00 00 00 00 00 21 5B - can1 200 [8] 00 00 00 00 00 00 20 2A - can1 201 [8] 00 00 00 00 00 00 20 2B - can1 202 [8] 00 00 00 00 00 00 20 2C - can1 203 [8] 00 00 00 00 00 00 20 2D - can1 141 [8] 00 00 00 02 23 00 20 8F - can1 151 [8] 01 00 00 EF 00 3C 21 A7 - can1 131 [8] 00 00 00 00 00 00 22 5C - can1 200 [8] 00 00 00 00 00 00 21 2B - can1 201 [8] 00 00 00 00 00 00 21 2C - can1 202 [8] 00 00 00 00 00 00 21 2D - can1 203 [8] 00 00 00 00 00 00 21 2E - can1 141 [8] 00 00 00 02 24 00 21 91 - can1 151 [8] 01 00 00 EF 00 3C 22 A8 - can1 131 [8] 00 00 00 00 00 00 23 5D - can1 200 [8] 00 00 00 00 00 00 22 2C - can1 201 [8] 00 00 00 00 00 00 22 2D - can1 202 [8] 00 00 00 00 00 00 22 2E - can1 203 [8] 00 00 00 00 00 00 22 2F - can1 141 [8] 00 00 00 02 24 00 22 92 - can1 151 [8] 01 00 00 EF 00 3C 23 A9 - can1 131 [8] 00 00 00 00 00 00 24 5E - can1 200 [8] 00 00 00 00 00 00 23 2D - can1 201 [8] 00 00 00 00 00 00 23 2E - can1 202 [8] 00 00 00 00 00 00 23 2F - can1 203 [8] 00 00 00 00 00 00 23 30 - can1 141 [8] 00 00 00 02 25 00 23 94 - can1 151 [8] 01 00 00 EF 00 3C 24 AA - can1 131 [8] 00 00 00 00 00 00 25 5F - can1 200 [8] 00 00 00 00 00 00 24 2E - can1 201 [8] 00 00 00 00 00 00 24 2F - can1 202 [8] 00 00 00 00 00 00 24 30 - can1 203 [8] 00 00 00 00 00 00 24 31 - can1 141 [8] 00 00 00 02 26 00 24 96 - can1 151 [8] 01 00 00 EF 00 3C 25 AB - can1 131 [8] 00 00 00 00 00 00 26 60 - can1 200 [8] 00 00 00 00 00 00 25 2F - can1 201 [8] 00 00 00 00 00 00 25 30 - can1 202 [8] 00 00 00 00 00 00 25 31 - can1 203 [8] 00 00 00 00 00 00 25 32 - can1 141 [8] 00 00 00 02 27 00 25 98 - can1 151 [8] 01 00 00 EF 00 3C 26 AC - can1 131 [8] 00 00 00 00 00 00 27 61 - can1 200 [8] 00 00 00 00 00 00 26 30 - can1 201 [8] 00 00 00 00 00 00 26 31 - can1 202 [8] 00 00 00 00 00 00 26 32 - can1 203 [8] 00 00 00 00 00 00 26 33 - can1 141 [8] 00 00 00 02 28 00 26 9A - can1 151 [8] 01 00 00 EF 00 3C 27 AD - can1 151 [8] 01 00 00 EF 00 3C 28 AE - can1 131 [8] 00 00 00 00 00 00 28 62 - can1 200 [8] 00 00 00 00 00 00 27 31 - can1 201 [8] 00 00 00 00 00 00 27 32 - can1 202 [8] 00 00 00 00 00 00 27 33 - can1 203 [8] 00 00 00 00 00 00 27 34 - can1 141 [8] 00 00 00 02 28 00 27 9B - can1 131 [8] 00 00 00 00 00 00 29 63 - can1 200 [8] 00 00 00 00 00 00 28 32 - can1 201 [8] 00 00 00 00 00 00 28 33 - can1 202 [8] 00 00 00 00 00 00 28 34 - can1 203 [8] 00 00 00 00 00 00 28 35 - can1 141 [8] 00 00 00 02 29 00 28 9D - can1 151 [8] 01 00 00 EF 00 3C 29 AF - can1 131 [8] 00 00 00 00 00 00 2A 64 - can1 200 [8] 00 00 00 00 00 00 29 33 - can1 201 [8] 00 00 00 00 00 00 29 34 - can1 202 [8] 00 00 00 00 00 00 29 35 - can1 203 [8] 00 00 00 00 00 00 29 36 - can1 141 [8] 00 00 00 02 2A 00 29 9F - can1 151 [8] 01 00 00 EF 00 3C 2A B0 - can1 131 [8] 00 00 00 00 00 00 2B 65 - can1 200 [8] 00 00 00 00 00 00 2A 34 - can1 201 [8] 00 00 00 00 00 00 2A 35 - can1 202 [8] 00 00 00 00 00 00 2A 36 - can1 203 [8] 00 00 00 00 00 00 2A 37 - can1 141 [8] 00 00 00 02 2B 00 2A A1 - can1 151 [8] 01 00 00 EF 00 3C 2B B1 - can1 131 [8] 00 00 00 00 00 00 2C 66 - can1 200 [8] 00 00 00 00 00 00 2B 35 - can1 201 [8] 00 00 00 00 00 00 2B 36 - can1 202 [8] 00 00 00 00 00 00 2B 37 - can1 203 [8] 00 00 00 00 00 00 2B 38 - can1 141 [8] 00 00 00 02 2C 00 2B A3 - can1 151 [8] 01 00 00 EF 00 3C 2C B2 - can1 131 [8] 00 00 00 00 00 00 2D 67 - can1 200 [8] 00 00 00 00 00 00 2C 36 - can1 201 [8] 00 00 00 00 00 00 2C 37 - can1 202 [8] 00 00 00 00 00 00 2C 38 - can1 203 [8] 00 00 00 00 00 00 2C 39 - can1 141 [8] 00 00 00 02 2C 00 2C A4 - can1 151 [8] 01 00 00 EF 00 3C 2D B3 - can1 131 [8] 00 00 00 00 00 00 2E 68 - can1 200 [8] 00 00 00 00 00 00 2D 37 - can1 201 [8] 00 00 00 00 00 00 2D 38 - can1 202 [8] 00 00 00 00 00 00 2D 39 - can1 203 [8] 00 00 00 00 00 00 2D 3A - can1 141 [8] 00 00 00 02 2D 00 2D A6 - can1 151 [8] 01 00 00 EF 00 3C 2E B4 - can1 131 [8] 00 00 00 00 00 00 2F 69 - can1 200 [8] 00 00 00 00 00 00 2E 38 - can1 201 [8] 00 00 00 00 00 00 2E 39 - can1 202 [8] 00 00 00 00 00 00 2E 3A - can1 203 [8] 00 00 00 00 00 00 2E 3B - can1 141 [8] 00 00 00 02 2E 00 2E A8 - can1 151 [8] 01 00 00 EF 00 3C 2F B5 - can1 131 [8] 00 00 00 00 00 00 30 6A - can1 200 [8] 00 00 00 00 00 00 2F 39 - can1 201 [8] 00 00 00 00 00 00 2F 3A - can1 202 [8] 00 00 00 00 00 00 2F 3B - can1 203 [8] 00 00 00 00 00 00 2F 3C - can1 141 [8] 00 00 00 02 2F 00 2F AA - can1 151 [8] 01 00 00 EF 00 3C 30 B6 - can1 131 [8] 00 00 00 00 00 00 31 6B - can1 200 [8] 00 00 00 00 00 00 30 3A - can1 201 [8] 00 00 00 00 00 00 30 3B - can1 202 [8] 00 00 00 00 00 00 30 3C - can1 203 [8] 00 00 00 00 00 00 30 3D - can1 141 [8] 00 00 00 02 30 00 30 AC - can1 151 [8] 01 00 00 EF 00 3C 31 B7 - can1 131 [8] 00 00 00 00 00 00 32 6C - can1 200 [8] 00 00 00 00 00 00 31 3B - can1 201 [8] 00 00 00 00 00 00 31 3C - can1 202 [8] 00 00 00 00 00 00 31 3D - can1 203 [8] 00 00 00 00 00 00 31 3E - can1 141 [8] 00 00 00 02 31 00 31 AE - can1 151 [8] 01 00 00 EF 00 3C 32 B8 - can1 131 [8] 00 00 00 00 00 00 33 6D - can1 200 [8] 00 00 00 00 00 00 32 3C - can1 201 [8] 00 00 00 00 00 00 32 3D - can1 202 [8] 00 00 00 00 00 00 32 3E - can1 203 [8] 00 00 00 00 00 00 32 3F - can1 141 [8] 00 00 00 02 31 00 32 AF - can1 151 [8] 01 00 00 EF 00 3C 33 B9 - can1 131 [8] 00 00 00 00 00 00 34 6E - can1 200 [8] 00 00 00 00 00 00 33 3D - can1 201 [8] 00 00 00 00 00 00 33 3E - can1 202 [8] 00 00 00 00 00 00 33 3F - can1 203 [8] 00 00 00 00 00 00 33 40 - can1 141 [8] 00 00 00 02 32 00 33 B1 - can1 151 [8] 01 00 00 EF 00 3C 34 BA - can1 131 [8] 00 00 00 00 00 00 35 6F - can1 200 [8] 00 00 00 00 00 00 34 3E - can1 201 [8] 00 00 00 00 00 00 34 3F - can1 202 [8] 00 00 00 00 00 00 34 40 - can1 203 [8] 00 00 00 00 00 00 34 41 - can1 141 [8] 00 00 00 02 33 00 34 B3 - can1 151 [8] 01 00 00 EF 00 3C 35 BB - can1 131 [8] 00 00 00 00 00 00 36 70 - can1 200 [8] 00 00 00 00 00 00 35 3F - can1 201 [8] 00 00 00 00 00 00 35 40 - can1 202 [8] 00 00 00 00 00 00 35 41 - can1 203 [8] 00 00 00 00 00 00 35 42 - can1 141 [8] 00 00 00 02 34 00 35 B5 - can1 151 [8] 01 00 00 EF 00 3C 36 BC - can1 131 [8] 00 00 00 00 00 00 37 71 - can1 200 [8] 00 00 00 00 00 00 36 40 - can1 201 [8] 00 00 00 00 00 00 36 41 - can1 202 [8] 00 00 00 00 00 00 36 42 - can1 203 [8] 00 00 00 00 00 00 36 43 - can1 141 [8] 00 00 00 02 35 00 36 B7 - can1 151 [8] 01 00 00 EF 00 3C 37 BD - can1 131 [8] 00 00 00 00 00 00 38 72 - can1 200 [8] 00 00 00 00 00 00 37 41 - can1 201 [8] 00 00 00 00 00 00 37 42 - can1 202 [8] 00 00 00 00 00 00 37 43 - can1 203 [8] 00 00 00 00 00 00 37 44 - can1 141 [8] 00 00 00 02 35 00 37 B8 - can1 151 [8] 01 00 00 EF 00 3C 38 BE - can1 131 [8] 00 00 00 00 00 00 39 73 - can1 200 [8] 00 00 00 00 00 00 38 42 - can1 201 [8] 00 00 00 00 00 00 38 43 - can1 202 [8] 00 00 00 00 00 00 38 44 - can1 203 [8] 00 00 00 00 00 00 38 45 - can1 141 [8] 00 00 00 02 36 00 38 BA - can1 151 [8] 01 00 00 EF 00 3C 39 BF - can1 131 [8] 00 00 00 00 00 00 3A 74 - can1 200 [8] 00 00 00 00 00 00 39 43 - can1 201 [8] 00 00 00 00 00 00 39 44 - can1 202 [8] 00 00 00 00 00 00 39 45 - can1 203 [8] 00 00 00 00 00 00 39 46 - can1 141 [8] 00 00 00 02 37 00 39 BC - can1 151 [8] 01 00 00 EF 00 3C 3A C0 - can1 131 [8] 00 00 00 00 00 00 3B 75 - can1 200 [8] 00 00 00 00 00 00 3A 44 - can1 201 [8] 00 00 00 00 00 00 3A 45 - can1 202 [8] 00 00 00 00 00 00 3A 46 - can1 203 [8] 00 00 00 00 00 00 3A 47 - can1 141 [8] 00 00 00 02 38 00 3A BE - can1 151 [8] 01 00 00 EF 00 3C 3B C1 - can1 131 [8] 00 00 00 00 00 00 3C 76 - can1 200 [8] 00 00 00 00 00 00 3B 45 - can1 201 [8] 00 00 00 00 00 00 3B 46 - can1 202 [8] 00 00 00 00 00 00 3B 47 - can1 203 [8] 00 00 00 00 00 00 3B 48 - can1 141 [8] 00 00 00 02 39 00 3B C0 - can1 151 [8] 01 00 00 EF 00 3C 3C C2 - can1 131 [8] 00 00 00 00 00 00 3D 77 - can1 200 [8] 00 00 00 00 00 00 3C 46 - can1 201 [8] 00 00 00 00 00 00 3C 47 - can1 202 [8] 00 00 00 00 00 00 3C 48 - can1 203 [8] 00 00 00 00 00 00 3C 49 - can1 141 [8] 00 00 00 02 39 00 3C C1 - can1 151 [8] 01 00 00 EF 00 3C 3D C3 - can1 131 [8] 00 00 00 00 00 00 3E 78 - can1 200 [8] 00 00 00 00 00 00 3D 47 - can1 201 [8] 00 00 00 00 00 00 3D 48 - can1 202 [8] 00 00 00 00 00 00 3D 49 - can1 203 [8] 00 00 00 00 00 00 3D 4A - can1 141 [8] 00 00 00 02 3A 00 3D C3 - can1 151 [8] 01 00 00 EF 00 3C 3E C4 - can1 131 [8] 00 00 00 00 00 00 3F 79 - can1 200 [8] 00 00 00 00 00 00 3E 48 - can1 201 [8] 00 00 00 00 00 00 3E 49 - can1 202 [8] 00 00 00 00 00 00 3E 4A - can1 203 [8] 00 00 00 00 00 00 3E 4B - can1 141 [8] 00 00 00 02 3B 00 3E C5 - can1 151 [8] 01 00 00 EF 00 3C 3F C5 - can1 131 [8] 00 00 00 00 00 00 40 7A - can1 200 [8] 00 00 00 00 00 00 3F 49 - can1 201 [8] 00 00 00 00 00 00 3F 4A - can1 202 [8] 00 00 00 00 00 00 3F 4B - can1 203 [8] 00 00 00 00 00 00 3F 4C - can1 141 [8] 00 00 00 02 3C 00 3F C7 - can1 151 [8] 01 00 00 EF 00 3C 40 C6 - can1 131 [8] 00 00 00 00 00 00 41 7B - can1 200 [8] 00 00 00 00 00 00 40 4A - can1 201 [8] 00 00 00 00 00 00 40 4B - can1 202 [8] 00 00 00 00 00 00 40 4C - can1 203 [8] 00 00 00 00 00 00 40 4D - can1 141 [8] 00 00 00 02 3D 00 40 C9 - can1 151 [8] 01 00 00 EF 00 3C 41 C7 - can1 131 [8] 00 00 00 00 00 00 42 7C - can1 200 [8] 00 00 00 00 00 00 41 4B - can1 201 [8] 00 00 00 00 00 00 41 4C - can1 202 [8] 00 00 00 00 00 00 41 4D - can1 203 [8] 00 00 00 00 00 00 41 4E - can1 141 [8] 00 00 00 02 3D 00 41 CA - can1 151 [8] 01 00 00 EF 00 3C 42 C8 - can1 131 [8] 00 00 00 00 00 00 43 7D - can1 200 [8] 00 00 00 00 00 00 42 4C - can1 201 [8] 00 00 00 00 00 00 42 4D - can1 202 [8] 00 00 00 00 00 00 42 4E - can1 203 [8] 00 00 00 00 00 00 42 4F - can1 141 [8] 00 00 00 02 3E 00 42 CC - can1 151 [8] 01 00 00 EF 00 3C 43 C9 - can1 131 [8] 00 00 00 00 00 00 44 7E - can1 200 [8] 00 00 00 00 00 00 43 4D - can1 201 [8] 00 00 00 00 00 00 43 4E - can1 202 [8] 00 00 00 00 00 00 43 4F - can1 203 [8] 00 00 00 00 00 00 43 50 - can1 141 [8] 00 00 00 02 3F 00 43 CE - can1 151 [8] 01 00 00 EF 00 3C 44 CA - can1 131 [8] 00 00 00 00 00 00 45 7F - can1 200 [8] 00 00 00 00 00 00 44 4E - can1 201 [8] 00 00 00 00 00 00 44 4F - can1 202 [8] 00 00 00 00 00 00 44 50 - can1 203 [8] 00 00 00 00 00 00 44 51 - can1 141 [8] 00 00 00 02 40 00 44 D0 - can1 151 [8] 01 00 00 EF 00 3C 45 CB - can1 151 [8] 01 00 00 EF 00 3C 46 CC - can1 131 [8] 00 00 00 00 00 00 46 80 - can1 200 [8] 00 00 00 00 00 00 45 4F - can1 201 [8] 00 00 00 00 00 00 45 50 - can1 202 [8] 00 00 00 00 00 00 45 51 - can1 203 [8] 00 00 00 00 00 00 45 52 - can1 141 [8] 00 00 00 02 41 00 45 D2 - can1 131 [8] 00 00 00 00 00 00 47 81 - can1 200 [8] 00 00 00 00 00 00 46 50 - can1 201 [8] 00 00 00 00 00 00 46 51 - can1 202 [8] 00 00 00 00 00 00 46 52 - can1 203 [8] 00 00 00 00 00 00 46 53 - can1 141 [8] 00 00 00 02 41 00 46 D3 - can1 151 [8] 01 00 00 EF 00 3C 47 CD - can1 131 [8] 00 00 00 00 00 00 48 82 - can1 200 [8] 00 00 00 00 00 00 47 51 - can1 201 [8] 00 00 00 00 00 00 47 52 - can1 202 [8] 00 00 00 00 00 00 47 53 - can1 203 [8] 00 00 00 00 00 00 47 54 - can1 141 [8] 00 00 00 02 42 00 47 D5 - can1 151 [8] 01 00 00 EF 00 3C 48 CE - can1 131 [8] 00 00 00 00 00 00 49 83 - can1 200 [8] 00 00 00 00 00 00 48 52 - can1 201 [8] 00 00 00 00 00 00 48 53 - can1 202 [8] 00 00 00 00 00 00 48 54 - can1 203 [8] 00 00 00 00 00 00 48 55 - can1 141 [8] 00 00 00 02 43 00 48 D7 - can1 151 [8] 01 00 00 EF 00 3C 49 CF - can1 131 [8] 00 00 00 00 00 00 4A 84 - can1 200 [8] 00 00 00 00 00 00 49 53 - can1 201 [8] 00 00 00 00 00 00 49 54 - can1 202 [8] 00 00 00 00 00 00 49 55 - can1 203 [8] 00 00 00 00 00 00 49 56 - can1 141 [8] 00 00 00 02 44 00 49 D9 - can1 151 [8] 01 00 00 EF 00 3C 4A D0 - can1 131 [8] 00 00 00 00 00 00 4B 85 - can1 200 [8] 00 00 00 00 00 00 4A 54 - can1 201 [8] 00 00 00 00 00 00 4A 55 - can1 202 [8] 00 00 00 00 00 00 4A 56 - can1 203 [8] 00 00 00 00 00 00 4A 57 - can1 141 [8] 00 00 00 02 45 00 4A DB - can1 151 [8] 01 00 00 EF 00 3C 4B D1 - can1 131 [8] 00 00 00 00 00 00 4C 86 - can1 200 [8] 00 00 00 00 00 00 4B 55 - can1 201 [8] 00 00 00 00 00 00 4B 56 - can1 202 [8] 00 00 00 00 00 00 4B 57 - can1 203 [8] 00 00 00 00 00 00 4B 58 - can1 141 [8] 00 00 00 02 46 00 4B DD - can1 151 [8] 01 00 00 EF 00 3C 4C D2 - can1 131 [8] 00 00 00 00 00 00 4D 87 - can1 200 [8] 00 00 00 00 00 00 4C 56 - can1 201 [8] 00 00 00 00 00 00 4C 57 - can1 202 [8] 00 00 00 00 00 00 4C 58 - can1 203 [8] 00 00 00 00 00 00 4C 59 - can1 141 [8] 00 00 00 02 46 00 4C DE - can1 151 [8] 01 00 00 EF 00 3C 4D D3 - can1 131 [8] 00 00 00 00 00 00 4E 88 - can1 200 [8] 00 00 00 00 00 00 4D 57 - can1 201 [8] 00 00 00 00 00 00 4D 58 - can1 202 [8] 00 00 00 00 00 00 4D 59 - can1 203 [8] 00 00 00 00 00 00 4D 5A - can1 141 [8] 00 00 00 02 47 00 4D E0 - can1 151 [8] 01 00 00 EF 00 3C 4E D4 - can1 131 [8] 00 00 00 00 00 00 4F 89 - can1 200 [8] 00 00 00 00 00 00 4E 58 - can1 201 [8] 00 00 00 00 00 00 4E 59 - can1 202 [8] 00 00 00 00 00 00 4E 5A - can1 203 [8] 00 00 00 00 00 00 4E 5B - can1 141 [8] 00 00 00 02 48 00 4E E2 - can1 151 [8] 01 00 00 EF 00 3C 4F D5 - can1 131 [8] 00 00 00 00 00 00 50 8A - can1 200 [8] 00 00 00 00 00 00 4F 59 - can1 201 [8] 00 00 00 00 00 00 4F 5A - can1 202 [8] 00 00 00 00 00 00 4F 5B - can1 203 [8] 00 00 00 00 00 00 4F 5C - can1 141 [8] 00 00 00 02 49 00 4F E4 - can1 151 [8] 01 00 00 EF 00 3C 50 D6 - can1 131 [8] 00 00 00 00 00 00 51 8B - can1 200 [8] 00 00 00 00 00 00 50 5A - can1 201 [8] 00 00 00 00 00 00 50 5B - can1 202 [8] 00 00 00 00 00 00 50 5C - can1 203 [8] 00 00 00 00 00 00 50 5D - can1 141 [8] 00 00 00 02 4A 00 50 E6 - can1 151 [8] 01 00 00 EF 00 3C 51 D7 - can1 131 [8] 00 00 00 00 00 00 52 8C - can1 200 [8] 00 00 00 00 00 00 51 5B - can1 201 [8] 00 00 00 00 00 00 51 5C - can1 202 [8] 00 00 00 00 00 00 51 5D - can1 203 [8] 00 00 00 00 00 00 51 5E - can1 141 [8] 00 00 00 02 4A 00 51 E7 - can1 151 [8] 01 00 00 EF 00 3C 52 D8 - can1 131 [8] 00 00 00 00 00 00 53 8D - can1 200 [8] 00 00 00 00 00 00 52 5C - can1 201 [8] 00 00 00 00 00 00 52 5D - can1 202 [8] 00 00 00 00 00 00 52 5E - can1 203 [8] 00 00 00 00 00 00 52 5F - can1 141 [8] 00 00 00 02 4B 00 52 E9 - can1 151 [8] 01 00 00 EF 00 3C 53 D9 - can1 131 [8] 00 00 00 00 00 00 54 8E - can1 200 [8] 00 00 00 00 00 00 53 5D - can1 201 [8] 00 00 00 00 00 00 53 5E - can1 202 [8] 00 00 00 00 00 00 53 5F - can1 203 [8] 00 00 00 00 00 00 53 60 - can1 141 [8] 00 00 00 02 4C 00 53 EB - can1 151 [8] 01 00 00 EF 00 3C 54 DA - can1 131 [8] 00 00 00 00 00 00 55 8F - can1 200 [8] 00 00 00 00 00 00 54 5E - can1 201 [8] 00 00 00 00 00 00 54 5F - can1 202 [8] 00 00 00 00 00 00 54 60 - can1 203 [8] 00 00 00 00 00 00 54 61 - can1 141 [8] 00 00 00 02 4D 00 54 ED - can1 151 [8] 01 00 00 EF 00 3C 55 DB - can1 151 [8] 01 00 00 EF 00 3C 56 DC - can1 131 [8] 00 00 00 00 00 00 56 90 - can1 200 [8] 00 00 00 00 00 00 55 5F - can1 201 [8] 00 00 00 00 00 00 55 60 - can1 202 [8] 00 00 00 00 00 00 55 61 - can1 203 [8] 00 00 00 00 00 00 55 62 - can1 141 [8] 00 00 00 02 4E 00 55 EF - can1 131 [8] 00 00 00 00 00 00 57 91 - can1 200 [8] 00 00 00 00 00 00 56 60 - can1 201 [8] 00 00 00 00 00 00 56 61 - can1 202 [8] 00 00 00 00 00 00 56 62 - can1 203 [8] 00 00 00 00 00 00 56 63 - can1 141 [8] 00 00 00 02 4E 00 56 F0 - can1 151 [8] 01 00 00 EF 00 3C 57 DD - can1 131 [8] 00 00 00 00 00 00 58 92 - can1 200 [8] 00 00 00 00 00 00 57 61 - can1 201 [8] 00 00 00 00 00 00 57 62 - can1 202 [8] 00 00 00 00 00 00 57 63 - can1 203 [8] 00 00 00 00 00 00 57 64 - can1 141 [8] 00 00 00 02 4F 00 57 F2 - can1 151 [8] 01 00 00 EF 00 3C 58 DE - can1 131 [8] 00 00 00 00 00 00 59 93 - can1 200 [8] 00 00 00 00 00 00 58 62 - can1 201 [8] 00 00 00 00 00 00 58 63 - can1 202 [8] 00 00 00 00 00 00 58 64 - can1 203 [8] 00 00 00 00 00 00 58 65 - can1 141 [8] 00 00 00 02 50 00 58 F4 - can1 151 [8] 01 00 00 EF 00 3C 59 DF - can1 131 [8] 00 00 00 00 00 00 5A 94 - can1 200 [8] 00 00 00 00 00 00 59 63 - can1 201 [8] 00 00 00 00 00 00 59 64 - can1 202 [8] 00 00 00 00 00 00 59 65 - can1 203 [8] 00 00 00 00 00 00 59 66 - can1 141 [8] 00 00 00 02 51 00 59 F6 - can1 151 [8] 01 00 00 EF 00 3C 5A E0 - can1 131 [8] 00 00 00 00 00 00 5B 95 - can1 200 [8] 00 00 00 00 00 00 5A 64 - can1 201 [8] 00 00 00 00 00 00 5A 65 - can1 202 [8] 00 00 00 00 00 00 5A 66 - can1 203 [8] 00 00 00 00 00 00 5A 67 - can1 141 [8] 00 00 00 02 52 00 5A F8 - can1 151 [8] 01 00 00 EF 00 3C 5B E1 - can1 131 [8] 00 00 00 00 00 00 5C 96 - can1 200 [8] 00 00 00 00 00 00 5B 65 - can1 201 [8] 00 00 00 00 00 00 5B 66 - can1 202 [8] 00 00 00 00 00 00 5B 67 - can1 203 [8] 00 00 00 00 00 00 5B 68 - can1 141 [8] 00 00 00 02 52 00 5B F9 - can1 151 [8] 01 00 00 EF 00 3C 5C E2 - can1 131 [8] 00 00 00 00 00 00 5D 97 - can1 200 [8] 00 00 00 00 00 00 5C 66 - can1 201 [8] 00 00 00 00 00 00 5C 67 - can1 202 [8] 00 00 00 00 00 00 5C 68 - can1 203 [8] 00 00 00 00 00 00 5C 69 - can1 141 [8] 00 00 00 02 53 00 5C FB - can1 151 [8] 01 00 00 EF 00 3C 5D E3 - can1 131 [8] 00 00 00 00 00 00 5E 98 - can1 200 [8] 00 00 00 00 00 00 5D 67 - can1 201 [8] 00 00 00 00 00 00 5D 68 - can1 202 [8] 00 00 00 00 00 00 5D 69 - can1 203 [8] 00 00 00 00 00 00 5D 6A - can1 141 [8] 00 00 00 02 54 00 5D FD - can1 151 [8] 01 00 00 EF 00 3C 5E E4 - can1 131 [8] 00 00 00 00 00 00 5F 99 - can1 200 [8] 00 00 00 00 00 00 5E 68 - can1 201 [8] 00 00 00 00 00 00 5E 69 - can1 202 [8] 00 00 00 00 00 00 5E 6A - can1 203 [8] 00 00 00 00 00 00 5E 6B - can1 141 [8] 00 00 00 02 55 00 5E FF - can1 151 [8] 01 00 00 EF 00 3C 5F E5 - can1 131 [8] 00 00 00 00 00 00 60 9A - can1 200 [8] 00 00 00 00 00 00 5F 69 - can1 201 [8] 00 00 00 00 00 00 5F 6A - can1 202 [8] 00 00 00 00 00 00 5F 6B - can1 203 [8] 00 00 00 00 00 00 5F 6C - can1 141 [8] 00 00 00 02 56 00 5F 01 - can1 151 [8] 01 00 00 EF 00 3C 60 E6 - can1 131 [8] 00 00 00 00 00 00 61 9B - can1 200 [8] 00 00 00 00 00 00 60 6A - can1 201 [8] 00 00 00 00 00 00 60 6B - can1 202 [8] 00 00 00 00 00 00 60 6C - can1 203 [8] 00 00 00 00 00 00 60 6D - can1 141 [8] 00 00 00 02 56 00 60 02 - can1 151 [8] 01 00 00 EF 00 3C 61 E7 - can1 131 [8] 00 00 00 00 00 00 62 9C - can1 200 [8] 00 00 00 00 00 00 61 6B - can1 201 [8] 00 00 00 00 00 00 61 6C - can1 202 [8] 00 00 00 00 00 00 61 6D - can1 203 [8] 00 00 00 00 00 00 61 6E - can1 141 [8] 00 00 00 02 57 00 61 04 - can1 151 [8] 01 00 00 EF 00 3C 62 E8 - can1 151 [8] 01 00 00 EF 00 3C 63 E9 - can1 131 [8] 00 00 00 00 00 00 63 9D - can1 200 [8] 00 00 00 00 00 00 62 6C - can1 201 [8] 00 00 00 00 00 00 62 6D - can1 202 [8] 00 00 00 00 00 00 62 6E - can1 203 [8] 00 00 00 00 00 00 62 6F - can1 141 [8] 00 00 00 02 58 00 62 06 - can1 131 [8] 00 00 00 00 00 00 64 9E - can1 200 [8] 00 00 00 00 00 00 63 6D - can1 201 [8] 00 00 00 00 00 00 63 6E - can1 202 [8] 00 00 00 00 00 00 63 6F - can1 203 [8] 00 00 00 00 00 00 63 70 - can1 141 [8] 00 00 00 02 59 00 63 08 - can1 151 [8] 01 00 00 EF 00 3C 64 EA - can1 131 [8] 00 00 00 00 00 00 65 9F - can1 200 [8] 00 00 00 00 00 00 64 6E - can1 201 [8] 00 00 00 00 00 00 64 6F - can1 202 [8] 00 00 00 00 00 00 64 70 - can1 203 [8] 00 00 00 00 00 00 64 71 - can1 141 [8] 00 00 00 02 5A 00 64 0A - can1 151 [8] 01 00 00 EF 00 3C 65 EB - can1 131 [8] 00 00 00 00 00 00 66 A0 - can1 200 [8] 00 00 00 00 00 00 65 6F - can1 201 [8] 00 00 00 00 00 00 65 70 - can1 202 [8] 00 00 00 00 00 00 65 71 - can1 203 [8] 00 00 00 00 00 00 65 72 - can1 141 [8] 00 00 00 02 5B 00 65 0C - can1 151 [8] 01 00 00 EF 00 3C 66 EC - can1 131 [8] 00 00 00 00 00 00 67 A1 - can1 200 [8] 00 00 00 00 00 00 66 70 - can1 201 [8] 00 00 00 00 00 00 66 71 - can1 202 [8] 00 00 00 00 00 00 66 72 - can1 203 [8] 00 00 00 00 00 00 66 73 - can1 141 [8] 00 00 00 02 5B 00 66 0D - can1 151 [8] 01 00 00 EF 00 3C 67 ED - can1 131 [8] 00 00 00 00 00 00 68 A2 - can1 200 [8] 00 00 00 00 00 00 67 71 - can1 201 [8] 00 00 00 00 00 00 67 72 - can1 202 [8] 00 00 00 00 00 00 67 73 - can1 203 [8] 00 00 00 00 00 00 67 74 - can1 141 [8] 00 00 00 02 5C 00 67 0F - can1 151 [8] 01 00 00 EF 00 3C 68 EE - can1 131 [8] 00 00 00 00 00 00 69 A3 - can1 200 [8] 00 00 00 00 00 00 68 72 - can1 201 [8] 00 00 00 00 00 00 68 73 - can1 202 [8] 00 00 00 00 00 00 68 74 - can1 203 [8] 00 00 00 00 00 00 68 75 - can1 141 [8] 00 00 00 02 5D 00 68 11 - can1 151 [8] 01 00 00 EF 00 3C 69 EF - can1 131 [8] 00 00 00 00 00 00 6A A4 - can1 200 [8] 00 00 00 00 00 00 69 73 - can1 201 [8] 00 00 00 00 00 00 69 74 - can1 202 [8] 00 00 00 00 00 00 69 75 - can1 203 [8] 00 00 00 00 00 00 69 76 - can1 141 [8] 00 00 00 02 5E 00 69 13 - can1 151 [8] 01 00 00 EF 00 3C 6A F0 - can1 131 [8] 00 00 00 00 00 00 6B A5 - can1 200 [8] 00 00 00 00 00 00 6A 74 - can1 201 [8] 00 00 00 00 00 00 6A 75 - can1 202 [8] 00 00 00 00 00 00 6A 76 - can1 203 [8] 00 00 00 00 00 00 6A 77 - can1 141 [8] 00 00 00 02 5F 00 6A 15 - can1 151 [8] 01 00 00 EF 00 3C 6B F1 - can1 131 [8] 00 00 00 00 00 00 6C A6 - can1 200 [8] 00 00 00 00 00 00 6B 75 - can1 201 [8] 00 00 00 00 00 00 6B 76 - can1 202 [8] 00 00 00 00 00 00 6B 77 - can1 203 [8] 00 00 00 00 00 00 6B 78 - can1 141 [8] 00 00 00 02 5F 00 6B 16 - can1 151 [8] 01 00 00 EF 00 3C 6C F2 - can1 151 [8] 01 00 00 EF 00 3C 6D F3 - can1 131 [8] 00 00 00 00 00 00 6D A7 - can1 200 [8] 00 00 00 00 00 00 6C 76 - can1 201 [8] 00 00 00 00 00 00 6C 77 - can1 202 [8] 00 00 00 00 00 00 6C 78 - can1 203 [8] 00 00 00 00 00 00 6C 79 - can1 141 [8] 00 00 00 02 60 00 6C 18 - can1 131 [8] 00 00 00 00 00 00 6E A8 - can1 200 [8] 00 00 00 00 00 00 6D 77 - can1 201 [8] 00 00 00 00 00 00 6D 78 - can1 202 [8] 00 00 00 00 00 00 6D 79 - can1 203 [8] 00 00 00 00 00 00 6D 7A - can1 141 [8] 00 00 00 02 61 00 6D 1A - can1 151 [8] 01 00 00 EF 00 3C 6E F4 - can1 131 [8] 00 00 00 00 00 00 6F A9 - can1 200 [8] 00 00 00 00 00 00 6E 78 - can1 201 [8] 00 00 00 00 00 00 6E 79 - can1 202 [8] 00 00 00 00 00 00 6E 7A - can1 203 [8] 00 00 00 00 00 00 6E 7B - can1 141 [8] 00 00 00 02 62 00 6E 1C - can1 151 [8] 01 00 00 EF 00 3C 6F F5 - can1 131 [8] 00 00 00 00 00 00 70 AA - can1 200 [8] 00 00 00 00 00 00 6F 79 - can1 201 [8] 00 00 00 00 00 00 6F 7A - can1 202 [8] 00 00 00 00 00 00 6F 7B - can1 203 [8] 00 00 00 00 00 00 6F 7C - can1 141 [8] 00 00 00 02 63 00 6F 1E - can1 151 [8] 01 00 00 EF 00 3C 70 F6 - can1 131 [8] 00 00 00 00 00 00 71 AB - can1 200 [8] 00 00 00 00 00 00 70 7A - can1 201 [8] 00 00 00 00 00 00 70 7B - can1 202 [8] 00 00 00 00 00 00 70 7C - can1 203 [8] 00 00 00 00 00 00 70 7D - can1 141 [8] 00 00 00 02 63 00 70 1F - can1 151 [8] 01 00 00 EF 00 3C 71 F7 - can1 131 [8] 00 00 00 00 00 00 72 AC - can1 200 [8] 00 00 00 00 00 00 71 7B - can1 201 [8] 00 00 00 00 00 00 71 7C - can1 202 [8] 00 00 00 00 00 00 71 7D - can1 203 [8] 00 00 00 00 00 00 71 7E - can1 141 [8] 00 00 00 02 64 00 71 21 - can1 151 [8] 01 00 00 EF 00 3C 72 F8 - can1 131 [8] 00 00 00 00 00 00 73 AD - can1 200 [8] 00 00 00 00 00 00 72 7C - can1 201 [8] 00 00 00 00 00 00 72 7D - can1 202 [8] 00 00 00 00 00 00 72 7E - can1 203 [8] 00 00 00 00 00 00 72 7F - can1 141 [8] 00 00 00 02 64 00 72 22 - can1 151 [8] 01 00 00 EF 00 3C 73 F9 - can1 131 [8] 00 00 00 00 00 00 74 AE - can1 200 [8] 00 00 00 00 00 00 73 7D - can1 201 [8] 00 00 00 00 00 00 73 7E - can1 202 [8] 00 00 00 00 00 00 73 7F - can1 203 [8] 00 00 00 00 00 00 73 80 - can1 141 [8] 00 00 00 02 63 00 73 22 - can1 151 [8] 01 00 00 EF 00 3C 74 FA - can1 131 [8] 00 00 00 00 00 00 75 AF - can1 200 [8] 00 00 00 00 00 00 74 7E - can1 201 [8] 00 00 00 00 00 00 74 7F - can1 202 [8] 00 00 00 00 00 00 74 80 - can1 203 [8] 00 00 00 00 00 00 74 81 - can1 141 [8] 00 00 00 02 62 00 74 22 - can1 151 [8] 01 00 00 EF 00 3C 75 FB - can1 131 [8] 00 00 00 00 00 00 76 B0 - can1 200 [8] 00 00 00 00 00 00 75 7F - can1 201 [8] 00 00 00 00 00 00 75 80 - can1 202 [8] 00 00 00 00 00 00 75 81 - can1 203 [8] 00 00 00 00 00 00 75 82 - can1 141 [8] 00 00 00 02 62 00 75 23 - can1 151 [8] 01 00 00 EF 00 3C 76 FC - can1 131 [8] 00 00 00 00 00 00 77 B1 - can1 200 [8] 00 00 00 00 00 00 76 80 - can1 201 [8] 00 00 00 00 00 00 76 81 - can1 202 [8] 00 00 00 00 00 00 76 82 - can1 203 [8] 00 00 00 00 00 00 76 83 - can1 141 [8] 00 00 00 02 61 00 76 23 - can1 151 [8] 01 00 00 EF 00 3C 77 FD - can1 151 [8] 01 00 00 EF 00 3C 78 FE - can1 131 [8] 00 00 00 00 00 00 78 B2 - can1 200 [8] 00 00 00 00 00 00 77 81 - can1 201 [8] 00 00 00 00 00 00 77 82 - can1 202 [8] 00 00 00 00 00 00 77 83 - can1 203 [8] 00 00 00 00 00 00 77 84 - can1 141 [8] 00 00 00 02 60 00 77 23 - can1 131 [8] 00 00 00 00 00 00 79 B3 - can1 200 [8] 00 00 00 00 00 00 78 82 - can1 201 [8] 00 00 00 00 00 00 78 83 - can1 202 [8] 00 00 00 00 00 00 78 84 - can1 203 [8] 00 00 00 00 00 00 78 85 - can1 141 [8] 00 00 00 02 5F 00 78 23 - can1 151 [8] 01 00 00 EF 00 3C 79 FF - can1 131 [8] 00 00 00 00 00 00 7A B4 - can1 200 [8] 00 00 00 00 00 00 79 83 - can1 201 [8] 00 00 00 00 00 00 79 84 - can1 202 [8] 00 00 00 00 00 00 79 85 - can1 203 [8] 00 00 00 00 00 00 79 86 - can1 141 [8] 00 00 00 02 5E 00 79 23 - can1 151 [8] 01 00 00 EF 00 3C 7A 00 - can1 131 [8] 00 00 00 00 00 00 7B B5 - can1 200 [8] 00 00 00 00 00 00 7A 84 - can1 201 [8] 00 00 00 00 00 00 7A 85 - can1 202 [8] 00 00 00 00 00 00 7A 86 - can1 203 [8] 00 00 00 00 00 00 7A 87 - can1 141 [8] 00 00 00 02 5E 00 7A 24 - can1 151 [8] 01 00 00 EF 00 3C 7B 01 - can1 131 [8] 00 00 00 00 00 00 7C B6 - can1 200 [8] 00 00 00 00 00 00 7B 85 - can1 201 [8] 00 00 00 00 00 00 7B 86 - can1 202 [8] 00 00 00 00 00 00 7B 87 - can1 203 [8] 00 00 00 00 00 00 7B 88 - can1 141 [8] 00 00 00 02 5D 00 7B 24 - can1 151 [8] 01 00 00 EF 00 3C 7C 02 - can1 131 [8] 00 00 00 00 00 00 7D B7 - can1 200 [8] 00 00 00 00 00 00 7C 86 - can1 201 [8] 00 00 00 00 00 00 7C 87 - can1 202 [8] 00 00 00 00 00 00 7C 88 - can1 203 [8] 00 00 00 00 00 00 7C 89 - can1 141 [8] 00 00 00 02 5C 00 7C 24 - can1 151 [8] 01 00 00 EF 00 3C 7D 03 - can1 131 [8] 00 00 00 00 00 00 7E B8 - can1 200 [8] 00 00 00 00 00 00 7D 87 - can1 201 [8] 00 00 00 00 00 00 7D 88 - can1 202 [8] 00 00 00 00 00 00 7D 89 - can1 203 [8] 00 00 00 00 00 00 7D 8A - can1 141 [8] 00 00 00 02 5B 00 7D 24 - can1 151 [8] 01 00 00 EF 00 3C 7E 04 - can1 131 [8] 00 00 00 00 00 00 7F B9 - can1 200 [8] 00 00 00 00 00 00 7E 88 - can1 201 [8] 00 00 00 00 00 00 7E 89 - can1 202 [8] 00 00 00 00 00 00 7E 8A - can1 203 [8] 00 00 00 00 00 00 7E 8B - can1 141 [8] 00 00 00 02 5A 00 7E 24 - can1 151 [8] 01 00 00 EF 00 3C 7F 05 - can1 131 [8] 00 00 00 00 00 00 80 BA - can1 200 [8] 00 00 00 00 00 00 7F 89 - can1 201 [8] 00 00 00 00 00 00 7F 8A - can1 202 [8] 00 00 00 00 00 00 7F 8B - can1 203 [8] 00 00 00 00 00 00 7F 8C - can1 141 [8] 00 00 00 02 59 00 7F 24 - can1 151 [8] 01 00 00 EF 00 3C 80 06 - can1 131 [8] 00 00 00 00 00 00 81 BB - can1 200 [8] 00 00 00 00 00 00 80 8A - can1 201 [8] 00 00 00 00 00 00 80 8B - can1 202 [8] 00 00 00 00 00 00 80 8C - can1 203 [8] 00 00 00 00 00 00 80 8D - can1 141 [8] 00 00 00 02 59 00 80 25 - can1 151 [8] 01 00 00 EF 00 3C 81 07 - can1 131 [8] 00 00 00 00 00 00 82 BC - can1 200 [8] 00 00 00 00 00 00 81 8B - can1 201 [8] 00 00 00 00 00 00 81 8C - can1 202 [8] 00 00 00 00 00 00 81 8D - can1 203 [8] 00 00 00 00 00 00 81 8E - can1 141 [8] 00 00 00 02 58 00 81 25 - can1 151 [8] 01 00 00 EF 00 3C 82 08 - can1 131 [8] 00 00 00 00 00 00 83 BD - can1 200 [8] 00 00 00 00 00 00 82 8C - can1 201 [8] 00 00 00 00 00 00 82 8D - can1 202 [8] 00 00 00 00 00 00 82 8E - can1 203 [8] 00 00 00 00 00 00 82 8F - can1 141 [8] 00 00 00 02 57 00 82 25 - can1 151 [8] 01 00 00 EF 00 3C 83 09 - can1 131 [8] 00 00 00 00 00 00 84 BE - can1 200 [8] 00 00 00 00 00 00 83 8D - can1 201 [8] 00 00 00 00 00 00 83 8E - can1 202 [8] 00 00 00 00 00 00 83 8F - can1 203 [8] 00 00 00 00 00 00 83 90 - can1 141 [8] 00 00 00 02 56 00 83 25 - can1 151 [8] 01 00 00 EF 00 3C 84 0A - can1 131 [8] 00 00 00 00 00 00 85 BF - can1 200 [8] 00 00 00 00 00 00 84 8E - can1 201 [8] 00 00 00 00 00 00 84 8F - can1 202 [8] 00 00 00 00 00 00 84 90 - can1 203 [8] 00 00 00 00 00 00 84 91 - can1 141 [8] 00 00 00 02 55 00 84 25 - can1 151 [8] 01 00 00 EF 00 3C 85 0B - can1 131 [8] 00 00 00 00 00 00 86 C0 - can1 200 [8] 00 00 00 00 00 00 85 8F - can1 201 [8] 00 00 00 00 00 00 85 90 - can1 202 [8] 00 00 00 00 00 00 85 91 - can1 203 [8] 00 00 00 00 00 00 85 92 - can1 141 [8] 00 00 00 02 55 00 85 26 - can1 151 [8] 01 00 00 EF 00 3C 86 0C - can1 131 [8] 00 00 00 00 00 00 87 C1 - can1 200 [8] 00 00 00 00 00 00 86 90 - can1 201 [8] 00 00 00 00 00 00 86 91 - can1 202 [8] 00 00 00 00 00 00 86 92 - can1 203 [8] 00 00 00 00 00 00 86 93 - can1 141 [8] 00 00 00 02 54 00 86 26 - can1 151 [8] 01 00 00 EF 00 3C 87 0D - can1 131 [8] 00 00 00 00 00 00 88 C2 - can1 200 [8] 00 00 00 00 00 00 87 91 - can1 201 [8] 00 00 00 00 00 00 87 92 - can1 202 [8] 00 00 00 00 00 00 87 93 - can1 203 [8] 00 00 00 00 00 00 87 94 - can1 141 [8] 00 00 00 02 53 00 87 26 - can1 151 [8] 01 00 00 EF 00 3C 88 0E - can1 131 [8] 00 00 00 00 00 00 89 C3 - can1 200 [8] 00 00 00 00 00 00 88 92 - can1 201 [8] 00 00 00 00 00 00 88 93 - can1 202 [8] 00 00 00 00 00 00 88 94 - can1 203 [8] 00 00 00 00 00 00 88 95 - can1 141 [8] 00 00 00 02 52 00 88 26 - can1 151 [8] 01 00 00 EF 00 3C 89 0F - can1 131 [8] 00 00 00 00 00 00 8A C4 - can1 200 [8] 00 00 00 00 00 00 89 93 - can1 201 [8] 00 00 00 00 00 00 89 94 - can1 202 [8] 00 00 00 00 00 00 89 95 - can1 203 [8] 00 00 00 00 00 00 89 96 - can1 141 [8] 00 00 00 02 51 00 89 26 - can1 151 [8] 01 00 00 EF 00 3C 8A 10 - can1 131 [8] 00 00 00 00 00 00 8B C5 - can1 200 [8] 00 00 00 00 00 00 8A 94 - can1 201 [8] 00 00 00 00 00 00 8A 95 - can1 202 [8] 00 00 00 00 00 00 8A 96 - can1 203 [8] 00 00 00 00 00 00 8A 97 - can1 141 [8] 00 00 00 02 51 00 8A 27 - can1 151 [8] 01 00 00 EF 00 3C 8B 11 - can1 151 [8] 01 00 00 EF 00 3C 8C 12 - can1 131 [8] 00 00 00 00 00 00 8C C6 - can1 200 [8] 00 00 00 00 00 00 8B 95 - can1 201 [8] 00 00 00 00 00 00 8B 96 - can1 202 [8] 00 00 00 00 00 00 8B 97 - can1 203 [8] 00 00 00 00 00 00 8B 98 - can1 141 [8] 00 00 00 02 50 00 8B 27 - can1 151 [8] 01 00 00 EF 00 3C 8D 13 - can1 131 [8] 00 00 00 00 00 00 8D C7 - can1 200 [8] 00 00 00 00 00 00 8C 96 - can1 201 [8] 00 00 00 00 00 00 8C 97 - can1 202 [8] 00 00 00 00 00 00 8C 98 - can1 203 [8] 00 00 00 00 00 00 8C 99 - can1 141 [8] 00 00 00 02 4F 00 8C 27 - can1 131 [8] 00 00 00 00 00 00 8E C8 - can1 200 [8] 00 00 00 00 00 00 8D 97 - can1 201 [8] 00 00 00 00 00 00 8D 98 - can1 202 [8] 00 00 00 00 00 00 8D 99 - can1 203 [8] 00 00 00 00 00 00 8D 9A - can1 141 [8] 00 00 00 02 4E 00 8D 27 - can1 151 [8] 01 00 00 EF 00 3C 8E 14 - can1 131 [8] 00 00 00 00 00 00 8F C9 - can1 200 [8] 00 00 00 00 00 00 8E 98 - can1 201 [8] 00 00 00 00 00 00 8E 99 - can1 202 [8] 00 00 00 00 00 00 8E 9A - can1 203 [8] 00 00 00 00 00 00 8E 9B - can1 141 [8] 00 00 00 02 4D 00 8E 27 - can1 151 [8] 01 00 00 EF 00 3C 8F 15 - can1 131 [8] 00 00 00 00 00 00 90 CA - can1 200 [8] 00 00 00 00 00 00 8F 99 - can1 201 [8] 00 00 00 00 00 00 8F 9A - can1 202 [8] 00 00 00 00 00 00 8F 9B - can1 203 [8] 00 00 00 00 00 00 8F 9C - can1 141 [8] 00 00 00 02 4D 00 8F 28 - can1 151 [8] 01 00 00 EF 00 3C 90 16 - can1 131 [8] 00 00 00 00 00 00 91 CB - can1 200 [8] 00 00 00 00 00 00 90 9A - can1 201 [8] 00 00 00 00 00 00 90 9B - can1 202 [8] 00 00 00 00 00 00 90 9C - can1 203 [8] 00 00 00 00 00 00 90 9D - can1 141 [8] 00 00 00 02 4C 00 90 28 - can1 151 [8] 01 00 00 EF 00 3C 91 17 - can1 131 [8] 00 00 00 00 00 00 92 CC - can1 200 [8] 00 00 00 00 00 00 91 9B - can1 201 [8] 00 00 00 00 00 00 91 9C - can1 202 [8] 00 00 00 00 00 00 91 9D - can1 203 [8] 00 00 00 00 00 00 91 9E - can1 141 [8] 00 00 00 02 4B 00 91 28 - can1 151 [8] 01 00 00 EF 00 3C 92 18 - can1 131 [8] 00 00 00 00 00 00 93 CD - can1 200 [8] 00 00 00 00 00 00 92 9C - can1 201 [8] 00 00 00 00 00 00 92 9D - can1 202 [8] 00 00 00 00 00 00 92 9E - can1 203 [8] 00 00 00 00 00 00 92 9F - can1 141 [8] 00 00 00 02 4A 00 92 28 - can1 151 [8] 01 00 00 EF 00 3C 93 19 - can1 131 [8] 00 00 00 00 00 00 94 CE - can1 200 [8] 00 00 00 00 00 00 93 9D - can1 201 [8] 00 00 00 00 00 00 93 9E - can1 202 [8] 00 00 00 00 00 00 93 9F - can1 203 [8] 00 00 00 00 00 00 93 A0 - can1 141 [8] 00 00 00 02 49 00 93 28 - can1 151 [8] 01 00 00 EF 00 3C 94 1A - can1 131 [8] 00 00 00 00 00 00 95 CF - can1 200 [8] 00 00 00 00 00 00 94 9E - can1 201 [8] 00 00 00 00 00 00 94 9F - can1 202 [8] 00 00 00 00 00 00 94 A0 - can1 203 [8] 00 00 00 00 00 00 94 A1 - can1 141 [8] 00 00 00 02 49 00 94 29 - can1 151 [8] 01 00 00 EF 00 3C 95 1B - can1 151 [8] 01 00 00 EF 00 3C 96 1C - can1 131 [8] 00 00 00 00 00 00 96 D0 - can1 200 [8] 00 00 00 00 00 00 95 9F - can1 201 [8] 00 00 00 00 00 00 95 A0 - can1 202 [8] 00 00 00 00 00 00 95 A1 - can1 203 [8] 00 00 00 00 00 00 95 A2 - can1 141 [8] 00 00 00 02 48 00 95 29 - can1 131 [8] 00 00 00 00 00 00 97 D1 - can1 200 [8] 00 00 00 00 00 00 96 A0 - can1 201 [8] 00 00 00 00 00 00 96 A1 - can1 202 [8] 00 00 00 00 00 00 96 A2 - can1 203 [8] 00 00 00 00 00 00 96 A3 - can1 141 [8] 00 00 00 02 47 00 96 29 - can1 151 [8] 01 00 00 EF 00 3C 97 1D - can1 131 [8] 00 00 00 00 00 00 98 D2 - can1 200 [8] 00 00 00 00 00 00 97 A1 - can1 201 [8] 00 00 00 00 00 00 97 A2 - can1 202 [8] 00 00 00 00 00 00 97 A3 - can1 203 [8] 00 00 00 00 00 00 97 A4 - can1 141 [8] 00 00 00 02 46 00 97 29 - can1 151 [8] 01 00 00 EF 00 3C 98 1E - can1 131 [8] 00 00 00 00 00 00 99 D3 - can1 200 [8] 00 00 00 00 00 00 98 A2 - can1 201 [8] 00 00 00 00 00 00 98 A3 - can1 202 [8] 00 00 00 00 00 00 98 A4 - can1 203 [8] 00 00 00 00 00 00 98 A5 - can1 141 [8] 00 00 00 02 45 00 98 29 - can1 151 [8] 01 00 00 EF 00 3C 99 1F - can1 131 [8] 00 00 00 00 00 00 9A D4 - can1 200 [8] 00 00 00 00 00 00 99 A3 - can1 201 [8] 00 00 00 00 00 00 99 A4 - can1 202 [8] 00 00 00 00 00 00 99 A5 - can1 203 [8] 00 00 00 00 00 00 99 A6 - can1 141 [8] 00 00 00 02 44 00 99 29 - can1 151 [8] 01 00 00 EF 00 3C 9A 20 - can1 131 [8] 00 00 00 00 00 00 9B D5 - can1 200 [8] 00 00 00 00 00 00 9A A4 - can1 201 [8] 00 00 00 00 00 00 9A A5 - can1 202 [8] 00 00 00 00 00 00 9A A6 - can1 203 [8] 00 00 00 00 00 00 9A A7 - can1 141 [8] 00 00 00 02 44 00 9A 2A - can1 151 [8] 01 00 00 EF 00 3C 9B 21 - can1 131 [8] 00 00 00 00 00 00 9C D6 - can1 200 [8] 00 00 00 00 00 00 9B A5 - can1 201 [8] 00 00 00 00 00 00 9B A6 - can1 202 [8] 00 00 00 00 00 00 9B A7 - can1 203 [8] 00 00 00 00 00 00 9B A8 - can1 141 [8] 00 00 00 02 43 00 9B 2A - can1 151 [8] 01 00 00 EF 00 3C 9C 22 - can1 131 [8] 00 00 00 00 00 00 9D D7 - can1 200 [8] 00 00 00 00 00 00 9C A6 - can1 201 [8] 00 00 00 00 00 00 9C A7 - can1 202 [8] 00 00 00 00 00 00 9C A8 - can1 203 [8] 00 00 00 00 00 00 9C A9 - can1 141 [8] 00 00 00 02 42 00 9C 2A - can1 151 [8] 01 00 00 EF 00 3C 9D 23 - can1 131 [8] 00 00 00 00 00 00 9E D8 - can1 200 [8] 00 00 00 00 00 00 9D A7 - can1 201 [8] 00 00 00 00 00 00 9D A8 - can1 202 [8] 00 00 00 00 00 00 9D A9 - can1 203 [8] 00 00 00 00 00 00 9D AA - can1 141 [8] 00 00 00 02 41 00 9D 2A - can1 151 [8] 01 00 00 EF 00 3C 9E 24 - can1 131 [8] 00 00 00 00 00 00 9F D9 - can1 200 [8] 00 00 00 00 00 00 9E A8 - can1 201 [8] 00 00 00 00 00 00 9E A9 - can1 202 [8] 00 00 00 00 00 00 9E AA - can1 203 [8] 00 00 00 00 00 00 9E AB - can1 141 [8] 00 00 00 02 40 00 9E 2A - can1 151 [8] 01 00 00 EF 00 3C 9F 25 - can1 151 [8] 01 00 00 EF 00 3C A0 26 - can1 131 [8] 00 00 00 00 00 00 A0 DA - can1 200 [8] 00 00 00 00 00 00 9F A9 - can1 201 [8] 00 00 00 00 00 00 9F AA - can1 202 [8] 00 00 00 00 00 00 9F AB - can1 203 [8] 00 00 00 00 00 00 9F AC - can1 141 [8] 00 00 00 02 40 00 9F 2B - can1 131 [8] 00 00 00 00 00 00 A1 DB - can1 200 [8] 00 00 00 00 00 00 A0 AA - can1 201 [8] 00 00 00 00 00 00 A0 AB - can1 202 [8] 00 00 00 00 00 00 A0 AC - can1 203 [8] 00 00 00 00 00 00 A0 AD - can1 141 [8] 00 00 00 02 3F 00 A0 2B - can1 151 [8] 01 00 00 EF 00 3C A1 27 - can1 131 [8] 00 00 00 00 00 00 A2 DC - can1 200 [8] 00 00 00 00 00 00 A1 AB - can1 201 [8] 00 00 00 00 00 00 A1 AC - can1 202 [8] 00 00 00 00 00 00 A1 AD - can1 203 [8] 00 00 00 00 00 00 A1 AE - can1 141 [8] 00 00 00 02 3E 00 A1 2B - can1 151 [8] 01 00 00 EF 00 3C A2 28 - can1 131 [8] 00 00 00 00 00 00 A3 DD - can1 200 [8] 00 00 00 00 00 00 A2 AC - can1 201 [8] 00 00 00 00 00 00 A2 AD - can1 202 [8] 00 00 00 00 00 00 A2 AE - can1 203 [8] 00 00 00 00 00 00 A2 AF - can1 141 [8] 00 00 00 02 3D 00 A2 2B - can1 151 [8] 01 00 00 EF 00 3C A3 29 - can1 131 [8] 00 00 00 00 00 00 A4 DE - can1 200 [8] 00 00 00 00 00 00 A3 AD - can1 201 [8] 00 00 00 00 00 00 A3 AE - can1 202 [8] 00 00 00 00 00 00 A3 AF - can1 203 [8] 00 00 00 00 00 00 A3 B0 - can1 141 [8] 00 00 00 02 3C 00 A3 2B - can1 151 [8] 01 00 00 EF 00 3C A4 2A - can1 131 [8] 00 00 00 00 00 00 A5 DF - can1 200 [8] 00 00 00 00 00 00 A4 AE - can1 201 [8] 00 00 00 00 00 00 A4 AF - can1 202 [8] 00 00 00 00 00 00 A4 B0 - can1 203 [8] 00 00 00 00 00 00 A4 B1 - can1 141 [8] 00 00 00 02 3C 00 A4 2C - can1 151 [8] 01 00 00 EF 00 3C A5 2B - can1 131 [8] 00 00 00 00 00 00 A6 E0 - can1 200 [8] 00 00 00 00 00 00 A5 AF - can1 201 [8] 00 00 00 00 00 00 A5 B0 - can1 202 [8] 00 00 00 00 00 00 A5 B1 - can1 203 [8] 00 00 00 00 00 00 A5 B2 - can1 141 [8] 00 00 00 02 3B 00 A5 2C - can1 151 [8] 01 00 00 EF 00 3C A6 2C - can1 131 [8] 00 00 00 00 00 00 A7 E1 - can1 200 [8] 00 00 00 00 00 00 A6 B0 - can1 201 [8] 00 00 00 00 00 00 A6 B1 - can1 202 [8] 00 00 00 00 00 00 A6 B2 - can1 203 [8] 00 00 00 00 00 00 A6 B3 - can1 141 [8] 00 00 00 02 3A 00 A6 2C - can1 151 [8] 01 00 00 EF 00 3C A7 2D - can1 131 [8] 00 00 00 00 00 00 A8 E2 - can1 200 [8] 00 00 00 00 00 00 A7 B1 - can1 201 [8] 00 00 00 00 00 00 A7 B2 - can1 202 [8] 00 00 00 00 00 00 A7 B3 - can1 203 [8] 00 00 00 00 00 00 A7 B4 - can1 141 [8] 00 00 00 02 39 00 A7 2C - can1 151 [8] 01 00 00 EF 00 3C A8 2E - can1 151 [8] 01 00 00 EF 00 3C A9 2F - can1 131 [8] 00 00 00 00 00 00 A9 E3 - can1 200 [8] 00 00 00 00 00 00 A8 B2 - can1 201 [8] 00 00 00 00 00 00 A8 B3 - can1 202 [8] 00 00 00 00 00 00 A8 B4 - can1 203 [8] 00 00 00 00 00 00 A8 B5 - can1 141 [8] 00 00 00 02 38 00 A8 2C - can1 151 [8] 01 00 00 EF 00 3C AA 30 - can1 131 [8] 00 00 00 00 00 00 AA E4 - can1 200 [8] 00 00 00 00 00 00 A9 B3 - can1 201 [8] 00 00 00 00 00 00 A9 B4 - can1 202 [8] 00 00 00 00 00 00 A9 B5 - can1 203 [8] 00 00 00 00 00 00 A9 B6 - can1 141 [8] 00 00 00 02 38 00 A9 2D - can1 131 [8] 00 00 00 00 00 00 AB E5 - can1 200 [8] 00 00 00 00 00 00 AA B4 - can1 201 [8] 00 00 00 00 00 00 AA B5 - can1 202 [8] 00 00 00 00 00 00 AA B6 - can1 203 [8] 00 00 00 00 00 00 AA B7 - can1 141 [8] 00 00 00 02 37 00 AA 2D - can1 151 [8] 01 00 00 EF 00 3C AB 31 - can1 131 [8] 00 00 00 00 00 00 AC E6 - can1 200 [8] 00 00 00 00 00 00 AB B5 - can1 201 [8] 00 00 00 00 00 00 AB B6 - can1 202 [8] 00 00 00 00 00 00 AB B7 - can1 203 [8] 00 00 00 00 00 00 AB B8 - can1 141 [8] 00 00 00 02 36 00 AB 2D - can1 151 [8] 01 00 00 EF 00 3C AC 32 - can1 131 [8] 00 00 00 00 00 00 AD E7 - can1 200 [8] 00 00 00 00 00 00 AC B6 - can1 201 [8] 00 00 00 00 00 00 AC B7 - can1 202 [8] 00 00 00 00 00 00 AC B8 - can1 203 [8] 00 00 00 00 00 00 AC B9 - can1 141 [8] 00 00 00 02 35 00 AC 2D - can1 151 [8] 01 00 00 EF 00 3C AD 33 - can1 131 [8] 00 00 00 00 00 00 AE E8 - can1 200 [8] 00 00 00 00 00 00 AD B7 - can1 201 [8] 00 00 00 00 00 00 AD B8 - can1 202 [8] 00 00 00 00 00 00 AD B9 - can1 203 [8] 00 00 00 00 00 00 AD BA - can1 141 [8] 00 00 00 02 34 00 AD 2D - can1 151 [8] 01 00 00 EF 00 3C AE 34 - can1 131 [8] 00 00 00 00 00 00 AF E9 - can1 200 [8] 00 00 00 00 00 00 AE B8 - can1 201 [8] 00 00 00 00 00 00 AE B9 - can1 202 [8] 00 00 00 00 00 00 AE BA - can1 203 [8] 00 00 00 00 00 00 AE BB - can1 141 [8] 00 00 00 02 33 00 AE 2D - can1 151 [8] 01 00 00 EF 00 3C AF 35 - can1 131 [8] 00 00 00 00 00 00 B0 EA - can1 200 [8] 00 00 00 00 00 00 AF B9 - can1 201 [8] 00 00 00 00 00 00 AF BA - can1 202 [8] 00 00 00 00 00 00 AF BB - can1 203 [8] 00 00 00 00 00 00 AF BC - can1 141 [8] 00 00 00 02 33 00 AF 2E - can1 151 [8] 01 00 00 EF 00 3C B0 36 - can1 131 [8] 00 00 00 00 00 00 B1 EB - can1 200 [8] 00 00 00 00 00 00 B0 BA - can1 201 [8] 00 00 00 00 00 00 B0 BB - can1 202 [8] 00 00 00 00 00 00 B0 BC - can1 203 [8] 00 00 00 00 00 00 B0 BD - can1 141 [8] 00 00 00 02 32 00 B0 2E - can1 151 [8] 01 00 00 EF 00 3C B1 37 - can1 131 [8] 00 00 00 00 00 00 B2 EC - can1 200 [8] 00 00 00 00 00 00 B1 BB - can1 201 [8] 00 00 00 00 00 00 B1 BC - can1 202 [8] 00 00 00 00 00 00 B1 BD - can1 203 [8] 00 00 00 00 00 00 B1 BE - can1 141 [8] 00 00 00 02 31 00 B1 2E - can1 151 [8] 01 00 00 EF 00 3C B2 38 - can1 131 [8] 00 00 00 00 00 00 B3 ED - can1 200 [8] 00 00 00 00 00 00 B2 BC - can1 201 [8] 00 00 00 00 00 00 B2 BD - can1 202 [8] 00 00 00 00 00 00 B2 BE - can1 203 [8] 00 00 00 00 00 00 B2 BF - can1 141 [8] 00 00 00 02 30 00 B2 2E - can1 151 [8] 01 00 00 EF 00 3C B3 39 - can1 131 [8] 00 00 00 00 00 00 B4 EE - can1 200 [8] 00 00 00 00 00 00 B3 BD - can1 201 [8] 00 00 00 00 00 00 B3 BE - can1 202 [8] 00 00 00 00 00 00 B3 BF - can1 203 [8] 00 00 00 00 00 00 B3 C0 - can1 141 [8] 00 00 00 02 2F 00 B3 2E - can1 151 [8] 01 00 00 EF 00 3C B4 3A - can1 131 [8] 00 00 00 00 00 00 B5 EF - can1 200 [8] 00 00 00 00 00 00 B4 BE - can1 201 [8] 00 00 00 00 00 00 B4 BF - can1 202 [8] 00 00 00 00 00 00 B4 C0 - can1 203 [8] 00 00 00 00 00 00 B4 C1 - can1 141 [8] 00 00 00 02 2F 00 B4 2F - can1 151 [8] 01 00 00 EF 00 3C B5 3B - can1 131 [8] 00 00 00 00 00 00 B6 F0 - can1 200 [8] 00 00 00 00 00 00 B5 BF - can1 201 [8] 00 00 00 00 00 00 B5 C0 - can1 202 [8] 00 00 00 00 00 00 B5 C1 - can1 203 [8] 00 00 00 00 00 00 B5 C2 - can1 141 [8] 00 00 00 02 2E 00 B5 2F - can1 151 [8] 01 00 00 EF 00 3C B6 3C - can1 131 [8] 00 00 00 00 00 00 B7 F1 - can1 200 [8] 00 00 00 00 00 00 B6 C0 - can1 201 [8] 00 00 00 00 00 00 B6 C1 - can1 202 [8] 00 00 00 00 00 00 B6 C2 - can1 203 [8] 00 00 00 00 00 00 B6 C3 - can1 141 [8] 00 00 00 02 2D 00 B6 2F - can1 151 [8] 01 00 00 EF 00 3C B7 3D - can1 131 [8] 00 00 00 00 00 00 B8 F2 - can1 200 [8] 00 00 00 00 00 00 B7 C1 - can1 201 [8] 00 00 00 00 00 00 B7 C2 - can1 202 [8] 00 00 00 00 00 00 B7 C3 - can1 203 [8] 00 00 00 00 00 00 B7 C4 - can1 141 [8] 00 00 00 02 2C 00 B7 2F - can1 151 [8] 01 00 00 EF 00 3C B8 3E - can1 131 [8] 00 00 00 00 00 00 B9 F3 - can1 200 [8] 00 00 00 00 00 00 B8 C2 - can1 201 [8] 00 00 00 00 00 00 B8 C3 - can1 202 [8] 00 00 00 00 00 00 B8 C4 - can1 203 [8] 00 00 00 00 00 00 B8 C5 - can1 141 [8] 00 00 00 02 2B 00 B8 2F - can1 151 [8] 01 00 00 EF 00 3C B9 3F - can1 131 [8] 00 00 00 00 00 00 BA F4 - can1 200 [8] 00 00 00 00 00 00 B9 C3 - can1 201 [8] 00 00 00 00 00 00 B9 C4 - can1 202 [8] 00 00 00 00 00 00 B9 C5 - can1 203 [8] 00 00 00 00 00 00 B9 C6 - can1 141 [8] 00 00 00 02 2B 00 B9 30 - can1 151 [8] 01 00 00 EF 00 3C BA 40 - can1 131 [8] 00 00 00 00 00 00 BB F5 - can1 200 [8] 00 00 00 00 00 00 BA C4 - can1 201 [8] 00 00 00 00 00 00 BA C5 - can1 202 [8] 00 00 00 00 00 00 BA C6 - can1 203 [8] 00 00 00 00 00 00 BA C7 - can1 141 [8] 00 00 00 02 2A 00 BA 30 - can1 151 [8] 01 00 00 EF 00 3C BB 41 - can1 131 [8] 00 00 00 00 00 00 BC F6 - can1 200 [8] 00 00 00 00 00 00 BB C5 - can1 201 [8] 00 00 00 00 00 00 BB C6 - can1 202 [8] 00 00 00 00 00 00 BB C7 - can1 203 [8] 00 00 00 00 00 00 BB C8 - can1 141 [8] 00 00 00 02 29 00 BB 30 - can1 151 [8] 01 00 00 EF 00 3C BC 42 - can1 131 [8] 00 00 00 00 00 00 BD F7 - can1 200 [8] 00 00 00 00 00 00 BC C6 - can1 201 [8] 00 00 00 00 00 00 BC C7 - can1 202 [8] 00 00 00 00 00 00 BC C8 - can1 203 [8] 00 00 00 00 00 00 BC C9 - can1 141 [8] 00 00 00 02 28 00 BC 30 - can1 151 [8] 01 00 00 EF 00 3C BD 43 - can1 131 [8] 00 00 00 00 00 00 BE F8 - can1 200 [8] 00 00 00 00 00 00 BD C7 - can1 201 [8] 00 00 00 00 00 00 BD C8 - can1 202 [8] 00 00 00 00 00 00 BD C9 - can1 203 [8] 00 00 00 00 00 00 BD CA - can1 141 [8] 00 00 00 02 27 00 BD 30 - can1 151 [8] 01 00 00 EF 00 3C BE 44 - can1 131 [8] 00 00 00 00 00 00 BF F9 - can1 200 [8] 00 00 00 00 00 00 BE C8 - can1 201 [8] 00 00 00 00 00 00 BE C9 - can1 202 [8] 00 00 00 00 00 00 BE CA - can1 203 [8] 00 00 00 00 00 00 BE CB - can1 141 [8] 00 00 00 02 27 00 BE 31 - can1 151 [8] 01 00 00 EF 00 3C BF 45 - can1 131 [8] 00 00 00 00 00 00 C0 FA - can1 200 [8] 00 00 00 00 00 00 BF C9 - can1 201 [8] 00 00 00 00 00 00 BF CA - can1 202 [8] 00 00 00 00 00 00 BF CB - can1 203 [8] 00 00 00 00 00 00 BF CC - can1 141 [8] 00 00 00 02 26 00 BF 31 - can1 151 [8] 01 00 00 EF 00 3C C0 46 - can1 131 [8] 00 00 00 00 00 00 C1 FB - can1 200 [8] 00 00 00 00 00 00 C0 CA - can1 201 [8] 00 00 00 00 00 00 C0 CB - can1 202 [8] 00 00 00 00 00 00 C0 CC - can1 203 [8] 00 00 00 00 00 00 C0 CD - can1 141 [8] 00 00 00 02 25 00 C0 31 - can1 151 [8] 01 00 00 EF 00 3C C1 47 - can1 131 [8] 00 00 00 00 00 00 C2 FC - can1 200 [8] 00 00 00 00 00 00 C1 CB - can1 201 [8] 00 00 00 00 00 00 C1 CC - can1 202 [8] 00 00 00 00 00 00 C1 CD - can1 203 [8] 00 00 00 00 00 00 C1 CE - can1 141 [8] 00 00 00 02 24 00 C1 31 - can1 151 [8] 01 00 00 EF 00 3C C2 48 - can1 131 [8] 00 00 00 00 00 00 C3 FD - can1 200 [8] 00 00 00 00 00 00 C2 CC - can1 201 [8] 00 00 00 00 00 00 C2 CD - can1 202 [8] 00 00 00 00 00 00 C2 CE - can1 203 [8] 00 00 00 00 00 00 C2 CF - can1 141 [8] 00 00 00 02 23 00 C2 31 - can1 151 [8] 01 00 00 EF 00 3C C3 49 - can1 131 [8] 00 00 00 00 00 00 C4 FE - can1 200 [8] 00 00 00 00 00 00 C3 CD - can1 201 [8] 00 00 00 00 00 00 C3 CE - can1 202 [8] 00 00 00 00 00 00 C3 CF - can1 203 [8] 00 00 00 00 00 00 C3 D0 - can1 141 [8] 00 00 00 02 23 00 C3 32 - can1 151 [8] 01 00 00 EF 00 3C C4 4A - can1 131 [8] 00 00 00 00 00 00 C5 FF - can1 200 [8] 00 00 00 00 00 00 C4 CE - can1 201 [8] 00 00 00 00 00 00 C4 CF - can1 202 [8] 00 00 00 00 00 00 C4 D0 - can1 203 [8] 00 00 00 00 00 00 C4 D1 - can1 141 [8] 00 00 00 02 22 00 C4 32 - can1 151 [8] 01 00 00 EF 00 3C C5 4B - can1 131 [8] 00 00 00 00 00 00 C6 00 - can1 200 [8] 00 00 00 00 00 00 C5 CF - can1 201 [8] 00 00 00 00 00 00 C5 D0 - can1 202 [8] 00 00 00 00 00 00 C5 D1 - can1 203 [8] 00 00 00 00 00 00 C5 D2 - can1 141 [8] 00 00 00 02 21 00 C5 32 - can1 151 [8] 01 00 00 EF 00 3C C6 4C - can1 131 [8] 00 00 00 00 00 00 C7 01 - can1 200 [8] 00 00 00 00 00 00 C6 D0 - can1 201 [8] 00 00 00 00 00 00 C6 D1 - can1 202 [8] 00 00 00 00 00 00 C6 D2 - can1 203 [8] 00 00 00 00 00 00 C6 D3 - can1 141 [8] 00 00 00 02 20 00 C6 32 - can1 151 [8] 01 00 00 EF 00 3C C7 4D - can1 131 [8] 00 00 00 00 00 00 C8 02 - can1 200 [8] 00 00 00 00 00 00 C7 D1 - can1 201 [8] 00 00 00 00 00 00 C7 D2 - can1 202 [8] 00 00 00 00 00 00 C7 D3 - can1 203 [8] 00 00 00 00 00 00 C7 D4 - can1 141 [8] 00 00 00 02 1F 00 C7 32 - can1 151 [8] 01 00 00 EF 00 3C C8 4E - can1 131 [8] 00 00 00 00 00 00 C9 03 - can1 200 [8] 00 00 00 00 00 00 C8 D2 - can1 201 [8] 00 00 00 00 00 00 C8 D3 - can1 202 [8] 00 00 00 00 00 00 C8 D4 - can1 203 [8] 00 00 00 00 00 00 C8 D5 - can1 141 [8] 00 00 00 02 1F 00 C8 33 - can1 151 [8] 01 00 00 EF 00 3C C9 4F - can1 131 [8] 00 00 00 00 00 00 CA 04 - can1 200 [8] 00 00 00 00 00 00 C9 D3 - can1 201 [8] 00 00 00 00 00 00 C9 D4 - can1 202 [8] 00 00 00 00 00 00 C9 D5 - can1 203 [8] 00 00 00 00 00 00 C9 D6 - can1 141 [8] 00 00 00 02 1E 00 C9 33 - can1 151 [8] 01 00 00 EF 00 3C CA 50 - can1 131 [8] 00 00 00 00 00 00 CB 05 - can1 200 [8] 00 00 00 00 00 00 CA D4 - can1 201 [8] 00 00 00 00 00 00 CA D5 - can1 202 [8] 00 00 00 00 00 00 CA D6 - can1 203 [8] 00 00 00 00 00 00 CA D7 - can1 141 [8] 00 00 00 02 1D 00 CA 33 - can1 151 [8] 01 00 00 EF 00 3C CB 51 - can1 131 [8] 00 00 00 00 00 00 CC 06 - can1 200 [8] 00 00 00 00 00 00 CB D5 - can1 201 [8] 00 00 00 00 00 00 CB D6 - can1 202 [8] 00 00 00 00 00 00 CB D7 - can1 203 [8] 00 00 00 00 00 00 CB D8 - can1 141 [8] 00 00 00 02 1C 00 CB 33 - can1 151 [8] 01 00 00 EF 00 3C CC 52 - can1 131 [8] 00 00 00 00 00 00 CD 07 - can1 200 [8] 00 00 00 00 00 00 CC D6 - can1 201 [8] 00 00 00 00 00 00 CC D7 - can1 202 [8] 00 00 00 00 00 00 CC D8 - can1 203 [8] 00 00 00 00 00 00 CC D9 - can1 141 [8] 00 00 00 02 1B 00 CC 33 - can1 151 [8] 01 00 00 EF 00 3C CD 53 - can1 131 [8] 00 00 00 00 00 00 CE 08 - can1 200 [8] 00 00 00 00 00 00 CD D7 - can1 201 [8] 00 00 00 00 00 00 CD D8 - can1 202 [8] 00 00 00 00 00 00 CD D9 - can1 203 [8] 00 00 00 00 00 00 CD DA - can1 141 [8] 00 00 00 02 1A 00 CD 33 - can1 151 [8] 01 00 00 EF 00 3C CE 54 - can1 131 [8] 00 00 00 00 00 00 CF 09 - can1 200 [8] 00 00 00 00 00 00 CE D8 - can1 201 [8] 00 00 00 00 00 00 CE D9 - can1 202 [8] 00 00 00 00 00 00 CE DA - can1 203 [8] 00 00 00 00 00 00 CE DB - can1 141 [8] 00 00 00 02 1A 00 CE 34 - can1 151 [8] 01 00 00 EF 00 3C CF 55 - can1 131 [8] 00 00 00 00 00 00 D0 0A - can1 200 [8] 00 00 00 00 00 00 CF D9 - can1 201 [8] 00 00 00 00 00 00 CF DA - can1 202 [8] 00 00 00 00 00 00 CF DB - can1 203 [8] 00 00 00 00 00 00 CF DC - can1 141 [8] 00 00 00 02 19 00 CF 34 - can1 151 [8] 01 00 00 EF 00 3C D0 56 - can1 151 [8] 01 00 00 EF 00 3C D1 57 - can1 131 [8] 00 00 00 00 00 00 D1 0B - can1 200 [8] 00 00 00 00 00 00 D0 DA - can1 201 [8] 00 00 00 00 00 00 D0 DB - can1 202 [8] 00 00 00 00 00 00 D0 DC - can1 203 [8] 00 00 00 00 00 00 D0 DD - can1 141 [8] 00 00 00 02 18 00 D0 34 - can1 131 [8] 00 00 00 00 00 00 D2 0C - can1 200 [8] 00 00 00 00 00 00 D1 DB - can1 201 [8] 00 00 00 00 00 00 D1 DC - can1 202 [8] 00 00 00 00 00 00 D1 DD - can1 203 [8] 00 00 00 00 00 00 D1 DE - can1 141 [8] 00 00 00 02 17 00 D1 34 - can1 151 [8] 01 00 00 EF 00 3C D2 58 - can1 131 [8] 00 00 00 00 00 00 D3 0D - can1 200 [8] 00 00 00 00 00 00 D2 DC - can1 201 [8] 00 00 00 00 00 00 D2 DD - can1 202 [8] 00 00 00 00 00 00 D2 DE - can1 203 [8] 00 00 00 00 00 00 D2 DF - can1 141 [8] 00 00 00 02 16 00 D2 34 - can1 151 [8] 01 00 00 EF 00 3C D3 59 - can1 131 [8] 00 00 00 00 00 00 D4 0E - can1 200 [8] 00 00 00 00 00 00 D3 DD - can1 201 [8] 00 00 00 00 00 00 D3 DE - can1 202 [8] 00 00 00 00 00 00 D3 DF - can1 203 [8] 00 00 00 00 00 00 D3 E0 - can1 141 [8] 00 00 00 02 16 00 D3 35 - can1 151 [8] 01 00 00 EF 00 3C D4 5A - can1 131 [8] 00 00 00 00 00 00 D5 0F - can1 200 [8] 00 00 00 00 00 00 D4 DE - can1 201 [8] 00 00 00 00 00 00 D4 DF - can1 202 [8] 00 00 00 00 00 00 D4 E0 - can1 203 [8] 00 00 00 00 00 00 D4 E1 - can1 141 [8] 00 00 00 02 15 00 D4 35 - can1 151 [8] 01 00 00 EF 00 3C D5 5B - can1 131 [8] 00 00 00 00 00 00 D6 10 - can1 200 [8] 00 00 00 00 00 00 D5 DF - can1 201 [8] 00 00 00 00 00 00 D5 E0 - can1 202 [8] 00 00 00 00 00 00 D5 E1 - can1 203 [8] 00 00 00 00 00 00 D5 E2 - can1 141 [8] 00 00 00 02 14 00 D5 35 - can1 151 [8] 01 00 00 EF 00 3C D6 5C - can1 131 [8] 00 00 00 00 00 00 D7 11 - can1 200 [8] 00 00 00 00 00 00 D6 E0 - can1 201 [8] 00 00 00 00 00 00 D6 E1 - can1 202 [8] 00 00 00 00 00 00 D6 E2 - can1 203 [8] 00 00 00 00 00 00 D6 E3 - can1 141 [8] 00 00 00 02 13 00 D6 35 - can1 151 [8] 01 00 00 EF 00 3C D7 5D - can1 131 [8] 00 00 00 00 00 00 D8 12 - can1 200 [8] 00 00 00 00 00 00 D7 E1 - can1 201 [8] 00 00 00 00 00 00 D7 E2 - can1 202 [8] 00 00 00 00 00 00 D7 E3 - can1 203 [8] 00 00 00 00 00 00 D7 E4 - can1 141 [8] 00 00 00 02 12 00 D7 35 - can1 151 [8] 01 00 00 EF 00 3C D8 5E - can1 131 [8] 00 00 00 00 00 00 D9 13 - can1 200 [8] 00 00 00 00 00 00 D8 E2 - can1 201 [8] 00 00 00 00 00 00 D8 E3 - can1 202 [8] 00 00 00 00 00 00 D8 E4 - can1 203 [8] 00 00 00 00 00 00 D8 E5 - can1 141 [8] 00 00 00 02 12 00 D8 36 - can1 151 [8] 01 00 00 EF 00 3C D9 5F - can1 131 [8] 00 00 00 00 00 00 DA 14 - can1 200 [8] 00 00 00 00 00 00 D9 E3 - can1 201 [8] 00 00 00 00 00 00 D9 E4 - can1 202 [8] 00 00 00 00 00 00 D9 E5 - can1 203 [8] 00 00 00 00 00 00 D9 E6 - can1 141 [8] 00 00 00 02 11 00 D9 36 - can1 151 [8] 01 00 00 EF 00 3C DA 60 - can1 151 [8] 01 00 00 EF 00 3C DB 61 - can1 131 [8] 00 00 00 00 00 00 DB 15 - can1 200 [8] 00 00 00 00 00 00 DA E4 - can1 201 [8] 00 00 00 00 00 00 DA E5 - can1 202 [8] 00 00 00 00 00 00 DA E6 - can1 203 [8] 00 00 00 00 00 00 DA E7 - can1 141 [8] 00 00 00 02 10 00 DA 36 - can1 131 [8] 00 00 00 00 00 00 DC 16 - can1 200 [8] 00 00 00 00 00 00 DB E5 - can1 201 [8] 00 00 00 00 00 00 DB E6 - can1 202 [8] 00 00 00 00 00 00 DB E7 - can1 203 [8] 00 00 00 00 00 00 DB E8 - can1 141 [8] 00 00 00 02 0F 00 DB 36 - can1 151 [8] 01 00 00 EF 00 3C DC 62 - can1 131 [8] 00 00 00 00 00 00 DD 17 - can1 200 [8] 00 00 00 00 00 00 DC E6 - can1 201 [8] 00 00 00 00 00 00 DC E7 - can1 202 [8] 00 00 00 00 00 00 DC E8 - can1 203 [8] 00 00 00 00 00 00 DC E9 - can1 141 [8] 00 00 00 02 0E 00 DC 36 - can1 151 [8] 01 00 00 EF 00 3C DD 63 - can1 131 [8] 00 00 00 00 00 00 DE 18 - can1 200 [8] 00 00 00 00 00 00 DD E7 - can1 201 [8] 00 00 00 00 00 00 DD E8 - can1 202 [8] 00 00 00 00 00 00 DD E9 - can1 203 [8] 00 00 00 00 00 00 DD EA - can1 141 [8] 00 00 00 02 0E 00 DD 37 - can1 151 [8] 01 00 00 EF 00 3C DE 64 - can1 131 [8] 00 00 00 00 00 00 DF 19 - can1 200 [8] 00 00 00 00 00 00 DE E8 - can1 201 [8] 00 00 00 00 00 00 DE E9 - can1 202 [8] 00 00 00 00 00 00 DE EA - can1 203 [8] 00 00 00 00 00 00 DE EB - can1 141 [8] 00 00 00 02 0D 00 DE 37 - can1 151 [8] 01 00 00 EF 00 3C DF 65 - can1 131 [8] 00 00 00 00 00 00 E0 1A - can1 200 [8] 00 00 00 00 00 00 DF E9 - can1 201 [8] 00 00 00 00 00 00 DF EA - can1 202 [8] 00 00 00 00 00 00 DF EB - can1 203 [8] 00 00 00 00 00 00 DF EC - can1 141 [8] 00 00 00 02 0C 00 DF 37 - can1 151 [8] 01 00 00 EF 00 3C E0 66 - can1 131 [8] 00 00 00 00 00 00 E1 1B - can1 200 [8] 00 00 00 00 00 00 E0 EA - can1 201 [8] 00 00 00 00 00 00 E0 EB - can1 202 [8] 00 00 00 00 00 00 E0 EC - can1 203 [8] 00 00 00 00 00 00 E0 ED - can1 141 [8] 00 00 00 02 0B 00 E0 37 - can1 151 [8] 01 00 00 EF 00 3C E1 67 - can1 151 [8] 01 00 00 EF 00 3C E2 68 - can1 131 [8] 00 00 00 00 00 00 E2 1C - can1 200 [8] 00 00 00 00 00 00 E1 EB - can1 201 [8] 00 00 00 00 00 00 E1 EC - can1 202 [8] 00 00 00 00 00 00 E1 ED - can1 203 [8] 00 00 00 00 00 00 E1 EE - can1 141 [8] 00 00 00 02 0A 00 E1 37 - can1 131 [8] 00 00 00 00 00 00 E3 1D - can1 200 [8] 00 00 00 00 00 00 E2 EC - can1 201 [8] 00 00 00 00 00 00 E2 ED - can1 202 [8] 00 00 00 00 00 00 E2 EE - can1 203 [8] 00 00 00 00 00 00 E2 EF - can1 141 [8] 00 00 00 02 0A 00 E2 38 - can1 151 [8] 01 00 00 EF 00 3C E3 69 - can1 131 [8] 00 00 00 00 00 00 E4 1E - can1 200 [8] 00 00 00 00 00 00 E3 ED - can1 201 [8] 00 00 00 00 00 00 E3 EE - can1 202 [8] 00 00 00 00 00 00 E3 EF - can1 203 [8] 00 00 00 00 00 00 E3 F0 - can1 141 [8] 00 00 00 02 09 00 E3 38 - can1 151 [8] 01 00 00 EF 00 3C E4 6A - can1 131 [8] 00 00 00 00 00 00 E5 1F - can1 200 [8] 00 00 00 00 00 00 E4 EE - can1 201 [8] 00 00 00 00 00 00 E4 EF - can1 202 [8] 00 00 00 00 00 00 E4 F0 - can1 203 [8] 00 00 00 00 00 00 E4 F1 - can1 141 [8] 00 00 00 02 08 00 E4 38 - can1 151 [8] 01 00 00 EF 00 3C E5 6B - can1 151 [8] 01 00 00 EF 00 3C E6 6C - can1 131 [8] 00 00 00 00 00 00 E6 20 - can1 200 [8] 00 00 00 00 00 00 E5 EF - can1 201 [8] 00 00 00 00 00 00 E5 F0 - can1 202 [8] 00 00 00 00 00 00 E5 F1 - can1 203 [8] 00 00 00 00 00 00 E5 F2 - can1 141 [8] 00 00 00 02 07 00 E5 38 - can1 151 [8] 01 00 00 EF 00 3C E7 6D - can1 131 [8] 00 00 00 00 00 00 E7 21 - can1 200 [8] 00 00 00 00 00 00 E6 F0 - can1 201 [8] 00 00 00 00 00 00 E6 F1 - can1 202 [8] 00 00 00 00 00 00 E6 F2 - can1 203 [8] 00 00 00 00 00 00 E6 F3 - can1 141 [8] 00 00 00 02 06 00 E6 38 - can1 131 [8] 00 00 00 00 00 00 E8 22 - can1 200 [8] 00 00 00 00 00 00 E7 F1 - can1 201 [8] 00 00 00 00 00 00 E7 F2 - can1 202 [8] 00 00 00 00 00 00 E7 F3 - can1 203 [8] 00 00 00 00 00 00 E7 F4 - can1 141 [8] 00 00 00 02 05 00 E7 38 - can1 151 [8] 01 00 00 EF 00 3C E8 6E - can1 131 [8] 00 00 00 00 00 00 E9 23 - can1 200 [8] 00 00 00 00 00 00 E8 F2 - can1 201 [8] 00 00 00 00 00 00 E8 F3 - can1 202 [8] 00 00 00 00 00 00 E8 F4 - can1 203 [8] 00 00 00 00 00 00 E8 F5 - can1 141 [8] 00 00 00 02 05 00 E8 39 - can1 151 [8] 01 00 00 EF 00 3C E9 6F - can1 131 [8] 00 00 00 00 00 00 EA 24 - can1 200 [8] 00 00 00 00 00 00 E9 F3 - can1 201 [8] 00 00 00 00 00 00 E9 F4 - can1 202 [8] 00 00 00 00 00 00 E9 F5 - can1 203 [8] 00 00 00 00 00 00 E9 F6 - can1 141 [8] 00 00 00 02 04 00 E9 39 - can1 151 [8] 01 00 00 EF 00 3C EA 70 - can1 131 [8] 00 00 00 00 00 00 EB 25 - can1 200 [8] 00 00 00 00 00 00 EA F4 - can1 201 [8] 00 00 00 00 00 00 EA F5 - can1 202 [8] 00 00 00 00 00 00 EA F6 - can1 203 [8] 00 00 00 00 00 00 EA F7 - can1 141 [8] 00 00 00 02 03 00 EA 39 - can1 151 [8] 01 00 00 EF 00 3C EB 71 - can1 131 [8] 00 00 00 00 00 00 EC 26 - can1 200 [8] 00 00 00 00 00 00 EB F5 - can1 201 [8] 00 00 00 00 00 00 EB F6 - can1 202 [8] 00 00 00 00 00 00 EB F7 - can1 203 [8] 00 00 00 00 00 00 EB F8 - can1 141 [8] 00 00 00 02 02 00 EB 39 - can1 151 [8] 01 00 00 EF 00 3C EC 72 - can1 131 [8] 00 00 00 00 00 00 ED 27 - can1 200 [8] 00 00 00 00 00 00 EC F6 - can1 201 [8] 00 00 00 00 00 00 EC F7 - can1 202 [8] 00 00 00 00 00 00 EC F8 - can1 203 [8] 00 00 00 00 00 00 EC F9 - can1 141 [8] 00 00 00 02 01 00 EC 39 - can1 151 [8] 01 00 00 EF 00 3C ED 73 - can1 131 [8] 00 00 00 00 00 00 EE 28 - can1 200 [8] 00 00 00 00 00 00 ED F7 - can1 201 [8] 00 00 00 00 00 00 ED F8 - can1 202 [8] 00 00 00 00 00 00 ED F9 - can1 203 [8] 00 00 00 00 00 00 ED FA - can1 141 [8] 00 00 00 02 01 00 ED 3A - can1 151 [8] 01 00 00 EF 00 3C EE 74 - can1 131 [8] 00 00 00 00 00 00 EF 29 - can1 200 [8] 00 00 00 00 00 00 EE F8 - can1 201 [8] 00 00 00 00 00 00 EE F9 - can1 202 [8] 00 00 00 00 00 00 EE FA - can1 203 [8] 00 00 00 00 00 00 EE FB - can1 141 [8] 00 00 00 02 00 00 EE 3A - can1 151 [8] 01 00 00 EF 00 3C EF 75 - can1 131 [8] 00 00 00 00 00 00 F0 2A - can1 200 [8] 00 00 00 00 00 00 EF F9 - can1 201 [8] 00 00 00 00 00 00 EF FA - can1 202 [8] 00 00 00 00 00 00 EF FB - can1 203 [8] 00 00 00 00 00 00 EF FC - can1 141 [8] 00 00 00 02 01 00 EF 3C - can1 151 [8] 01 00 00 EF 00 3C F0 76 - can1 131 [8] 00 00 00 00 00 00 F1 2B - can1 200 [8] 00 00 00 00 00 00 F0 FA - can1 201 [8] 00 00 00 00 00 00 F0 FB - can1 202 [8] 00 00 00 00 00 00 F0 FC - can1 203 [8] 00 00 00 00 00 00 F0 FD - can1 141 [8] 00 00 00 02 02 00 F0 3E - can1 151 [8] 01 00 00 EF 00 3C F1 77 - can1 131 [8] 00 00 00 00 00 00 F2 2C - can1 200 [8] 00 00 00 00 00 00 F1 FB - can1 201 [8] 00 00 00 00 00 00 F1 FC - can1 202 [8] 00 00 00 00 00 00 F1 FD - can1 203 [8] 00 00 00 00 00 00 F1 FE - can1 141 [8] 00 00 00 02 03 00 F1 40 - can1 151 [8] 01 00 00 EF 00 3C F2 78 - can1 131 [8] 00 00 00 00 00 00 F3 2D - can1 200 [8] 00 00 00 00 00 00 F2 FC - can1 201 [8] 00 00 00 00 00 00 F2 FD - can1 202 [8] 00 00 00 00 00 00 F2 FE - can1 203 [8] 00 00 00 00 00 00 F2 FF - can1 141 [8] 00 00 00 02 03 00 F2 41 - can1 151 [8] 01 00 00 EF 00 3C F3 79 - can1 131 [8] 00 00 00 00 00 00 F4 2E - can1 200 [8] 00 00 00 00 00 00 F3 FD - can1 201 [8] 00 00 00 00 00 00 F3 FE - can1 202 [8] 00 00 00 00 00 00 F3 FF - can1 203 [8] 00 00 00 00 00 00 F3 00 - can1 141 [8] 00 00 00 02 04 00 F3 43 - can1 151 [8] 01 00 00 EF 00 3C F4 7A - can1 131 [8] 00 00 00 00 00 00 F5 2F - can1 200 [8] 00 00 00 00 00 00 F4 FE - can1 201 [8] 00 00 00 00 00 00 F4 FF - can1 202 [8] 00 00 00 00 00 00 F4 00 - can1 203 [8] 00 00 00 00 00 00 F4 01 - can1 141 [8] 00 00 00 02 05 00 F4 45 - can1 151 [8] 01 00 00 EF 00 3C F5 7B - can1 131 [8] 00 00 00 00 00 00 F6 30 - can1 200 [8] 00 00 00 00 00 00 F5 FF - can1 201 [8] 00 00 00 00 00 00 F5 00 - can1 202 [8] 00 00 00 00 00 00 F5 01 - can1 203 [8] 00 00 00 00 00 00 F5 02 - can1 141 [8] 00 00 00 02 06 00 F5 47 - can1 151 [8] 01 00 00 EF 00 3C F6 7C - can1 131 [8] 00 00 00 00 00 00 F7 31 - can1 200 [8] 00 00 00 00 00 00 F6 00 - can1 201 [8] 00 00 00 00 00 00 F6 01 - can1 202 [8] 00 00 00 00 00 00 F6 02 - can1 203 [8] 00 00 00 00 00 00 F6 03 - can1 141 [8] 00 00 00 02 07 00 F6 49 - can1 151 [8] 01 00 00 EF 00 3C F7 7D - can1 131 [8] 00 00 00 00 00 00 F8 32 - can1 200 [8] 00 00 00 00 00 00 F7 01 - can1 201 [8] 00 00 00 00 00 00 F7 02 - can1 202 [8] 00 00 00 00 00 00 F7 03 - can1 203 [8] 00 00 00 00 00 00 F7 04 - can1 141 [8] 00 00 00 02 07 00 F7 4A - can1 151 [8] 01 00 00 EF 00 3C F8 7E - can1 131 [8] 00 00 00 00 00 00 F9 33 - can1 200 [8] 00 00 00 00 00 00 F8 02 - can1 201 [8] 00 00 00 00 00 00 F8 03 - can1 202 [8] 00 00 00 00 00 00 F8 04 - can1 203 [8] 00 00 00 00 00 00 F8 05 - can1 141 [8] 00 00 00 02 08 00 F8 4C - can1 151 [8] 01 00 00 EF 00 3C F9 7F - can1 131 [8] 00 00 00 00 00 00 FA 34 - can1 200 [8] 00 00 00 00 00 00 F9 03 - can1 201 [8] 00 00 00 00 00 00 F9 04 - can1 202 [8] 00 00 00 00 00 00 F9 05 - can1 203 [8] 00 00 00 00 00 00 F9 06 - can1 141 [8] 00 00 00 02 09 00 F9 4E - can1 151 [8] 01 00 00 EF 00 3C FA 80 - can1 131 [8] 00 00 00 00 00 00 FB 35 - can1 200 [8] 00 00 00 00 00 00 FA 04 - can1 201 [8] 00 00 00 00 00 00 FA 05 - can1 202 [8] 00 00 00 00 00 00 FA 06 - can1 203 [8] 00 00 00 00 00 00 FA 07 - can1 141 [8] 00 00 00 02 0A 00 FA 50 - can1 151 [8] 01 00 00 EF 00 3C FB 81 - can1 131 [8] 00 00 00 00 00 00 FC 36 - can1 200 [8] 00 00 00 00 00 00 FB 05 - can1 201 [8] 00 00 00 00 00 00 FB 06 - can1 202 [8] 00 00 00 00 00 00 FB 07 - can1 203 [8] 00 00 00 00 00 00 FB 08 - can1 141 [8] 00 00 00 02 0B 00 FB 52 - can1 151 [8] 01 00 00 EF 00 3C FC 82 - can1 131 [8] 00 00 00 00 00 00 FD 37 - can1 200 [8] 00 00 00 00 00 00 FC 06 - can1 201 [8] 00 00 00 00 00 00 FC 07 - can1 202 [8] 00 00 00 00 00 00 FC 08 - can1 203 [8] 00 00 00 00 00 00 FC 09 - can1 141 [8] 00 00 00 02 0B 00 FC 53 - can1 151 [8] 01 00 00 EF 00 3C FD 83 - can1 131 [8] 00 00 00 00 00 00 FE 38 - can1 200 [8] 00 00 00 00 00 00 FD 07 - can1 201 [8] 00 00 00 00 00 00 FD 08 - can1 202 [8] 00 00 00 00 00 00 FD 09 - can1 203 [8] 00 00 00 00 00 00 FD 0A - can1 141 [8] 00 00 00 02 0C 00 FD 55 - can1 151 [8] 01 00 00 EF 00 3C FE 84 - can1 131 [8] 00 00 00 00 00 00 FF 39 - can1 200 [8] 00 00 00 00 00 00 FE 08 - can1 201 [8] 00 00 00 00 00 00 FE 09 - can1 202 [8] 00 00 00 00 00 00 FE 0A - can1 203 [8] 00 00 00 00 00 00 FE 0B - can1 141 [8] 00 00 00 02 0D 00 FE 57 - can1 151 [8] 01 00 00 EF 00 3C FF 85 - can1 131 [8] 00 00 00 00 00 00 00 3A - can1 200 [8] 00 00 00 00 00 00 FF 09 - can1 201 [8] 00 00 00 00 00 00 FF 0A - can1 202 [8] 00 00 00 00 00 00 FF 0B - can1 203 [8] 00 00 00 00 00 00 FF 0C - can1 141 [8] 00 00 00 02 0E 00 FF 59 - can1 151 [8] 01 00 00 EF 00 3C 00 86 - can1 131 [8] 00 00 00 00 00 00 01 3B - can1 200 [8] 00 00 00 00 00 00 00 0A - can1 201 [8] 00 00 00 00 00 00 00 0B - can1 202 [8] 00 00 00 00 00 00 00 0C - can1 203 [8] 00 00 00 00 00 00 00 0D - can1 141 [8] 00 00 00 02 0F 00 00 5B - can1 151 [8] 01 00 00 EF 00 3C 01 87 - can1 131 [8] 00 00 00 00 00 00 02 3C - can1 200 [8] 00 00 00 00 00 00 01 0B - can1 201 [8] 00 00 00 00 00 00 01 0C - can1 202 [8] 00 00 00 00 00 00 01 0D - can1 203 [8] 00 00 00 00 00 00 01 0E - can1 141 [8] 00 00 00 02 10 00 01 5D - can1 151 [8] 01 00 00 EF 00 3C 02 88 - can1 131 [8] 00 00 00 00 00 00 03 3D - can1 200 [8] 00 00 00 00 00 00 02 0C - can1 201 [8] 00 00 00 00 00 00 02 0D - can1 202 [8] 00 00 00 00 00 00 02 0E - can1 203 [8] 00 00 00 00 00 00 02 0F - can1 141 [8] 00 00 00 02 10 00 02 5E - can1 151 [8] 01 00 00 EF 00 3C 03 89 - can1 131 [8] 00 00 00 00 00 00 04 3E - can1 200 [8] 00 00 00 00 00 00 03 0D - can1 201 [8] 00 00 00 00 00 00 03 0E - can1 202 [8] 00 00 00 00 00 00 03 0F - can1 203 [8] 00 00 00 00 00 00 03 10 - can1 141 [8] 00 00 00 02 11 00 03 60 - can1 151 [8] 01 00 00 EF 00 3C 04 8A - can1 131 [8] 00 00 00 00 00 00 05 3F - can1 200 [8] 00 00 00 00 00 00 04 0E - can1 201 [8] 00 00 00 00 00 00 04 0F - can1 202 [8] 00 00 00 00 00 00 04 10 - can1 203 [8] 00 00 00 00 00 00 04 11 - can1 141 [8] 00 00 00 02 12 00 04 62 - can1 151 [8] 01 00 00 EF 00 3C 05 8B - can1 131 [8] 00 00 00 00 00 00 06 40 - can1 200 [8] 00 00 00 00 00 00 05 0F - can1 201 [8] 00 00 00 00 00 00 05 10 - can1 202 [8] 00 00 00 00 00 00 05 11 - can1 203 [8] 00 00 00 00 00 00 05 12 - can1 141 [8] 00 00 00 02 13 00 05 64 - can1 151 [8] 01 00 00 EF 00 3C 06 8C - can1 131 [8] 00 00 00 00 00 00 07 41 - can1 200 [8] 00 00 00 00 00 00 06 10 - can1 201 [8] 00 00 00 00 00 00 06 11 - can1 202 [8] 00 00 00 00 00 00 06 12 - can1 203 [8] 00 00 00 00 00 00 06 13 - can1 141 [8] 00 00 00 02 14 00 06 66 - can1 151 [8] 01 00 00 EF 00 3C 07 8D - can1 131 [8] 00 00 00 00 00 00 08 42 - can1 200 [8] 00 00 00 00 00 00 07 11 - can1 201 [8] 00 00 00 00 00 00 07 12 - can1 202 [8] 00 00 00 00 00 00 07 13 - can1 203 [8] 00 00 00 00 00 00 07 14 - can1 141 [8] 00 00 00 02 14 00 07 67 - can1 151 [8] 01 00 00 EF 00 3C 08 8E - can1 131 [8] 00 00 00 00 00 00 09 43 - can1 200 [8] 00 00 00 00 00 00 08 12 - can1 201 [8] 00 00 00 00 00 00 08 13 - can1 202 [8] 00 00 00 00 00 00 08 14 - can1 203 [8] 00 00 00 00 00 00 08 15 - can1 141 [8] 00 00 00 02 15 00 08 69 - can1 151 [8] 01 00 00 EF 00 3C 09 8F - can1 131 [8] 00 00 00 00 00 00 0A 44 - can1 200 [8] 00 00 00 00 00 00 09 13 - can1 201 [8] 00 00 00 00 00 00 09 14 - can1 202 [8] 00 00 00 00 00 00 09 15 - can1 203 [8] 00 00 00 00 00 00 09 16 - can1 141 [8] 00 00 00 02 16 00 09 6B - can1 151 [8] 01 00 00 EF 00 3C 0A 90 - can1 131 [8] 00 00 00 00 00 00 0B 45 - can1 200 [8] 00 00 00 00 00 00 0A 14 - can1 201 [8] 00 00 00 00 00 00 0A 15 - can1 202 [8] 00 00 00 00 00 00 0A 16 - can1 203 [8] 00 00 00 00 00 00 0A 17 - can1 141 [8] 00 00 00 02 17 00 0A 6D - can1 151 [8] 01 00 00 EF 00 3C 0B 91 - can1 131 [8] 00 00 00 00 00 00 0C 46 - can1 200 [8] 00 00 00 00 00 00 0B 15 - can1 201 [8] 00 00 00 00 00 00 0B 16 - can1 202 [8] 00 00 00 00 00 00 0B 17 - can1 203 [8] 00 00 00 00 00 00 0B 18 - can1 141 [8] 00 00 00 02 18 00 0B 6F - can1 151 [8] 01 00 00 EF 00 3C 0C 92 - can1 131 [8] 00 00 00 00 00 00 0D 47 - can1 200 [8] 00 00 00 00 00 00 0C 16 - can1 201 [8] 00 00 00 00 00 00 0C 17 - can1 202 [8] 00 00 00 00 00 00 0C 18 - can1 203 [8] 00 00 00 00 00 00 0C 19 - can1 141 [8] 00 00 00 02 18 00 0C 70 - can1 151 [8] 01 00 00 EF 00 3C 0D 93 - can1 151 [8] 01 00 00 EF 00 3C 0E 94 - can1 131 [8] 00 00 00 00 00 00 0E 48 - can1 200 [8] 00 00 00 00 00 00 0D 17 - can1 201 [8] 00 00 00 00 00 00 0D 18 - can1 202 [8] 00 00 00 00 00 00 0D 19 - can1 203 [8] 00 00 00 00 00 00 0D 1A - can1 141 [8] 00 00 00 02 19 00 0D 72 - can1 131 [8] 00 00 00 00 00 00 0F 49 - can1 200 [8] 00 00 00 00 00 00 0E 18 - can1 201 [8] 00 00 00 00 00 00 0E 19 - can1 202 [8] 00 00 00 00 00 00 0E 1A - can1 203 [8] 00 00 00 00 00 00 0E 1B - can1 141 [8] 00 00 00 02 1A 00 0E 74 - can1 151 [8] 01 00 00 EF 00 3C 0F 95 - can1 131 [8] 00 00 00 00 00 00 10 4A - can1 200 [8] 00 00 00 00 00 00 0F 19 - can1 201 [8] 00 00 00 00 00 00 0F 1A - can1 202 [8] 00 00 00 00 00 00 0F 1B - can1 203 [8] 00 00 00 00 00 00 0F 1C - can1 141 [8] 00 00 00 02 1B 00 0F 76 - can1 151 [8] 01 00 00 EF 00 3C 10 96 - can1 131 [8] 00 00 00 00 00 00 11 4B - can1 200 [8] 00 00 00 00 00 00 10 1A - can1 201 [8] 00 00 00 00 00 00 10 1B - can1 202 [8] 00 00 00 00 00 00 10 1C - can1 203 [8] 00 00 00 00 00 00 10 1D - can1 141 [8] 00 00 00 02 1C 00 10 78 - can1 151 [8] 01 00 00 EF 00 3C 11 97 - can1 131 [8] 00 00 00 00 00 00 12 4C - can1 200 [8] 00 00 00 00 00 00 11 1B - can1 201 [8] 00 00 00 00 00 00 11 1C - can1 202 [8] 00 00 00 00 00 00 11 1D - can1 203 [8] 00 00 00 00 00 00 11 1E - can1 141 [8] 00 00 00 02 1C 00 11 79 - can1 151 [8] 01 00 00 EF 00 3C 12 98 - can1 131 [8] 00 00 00 00 00 00 13 4D - can1 200 [8] 00 00 00 00 00 00 12 1C - can1 201 [8] 00 00 00 00 00 00 12 1D - can1 202 [8] 00 00 00 00 00 00 12 1E - can1 203 [8] 00 00 00 00 00 00 12 1F - can1 141 [8] 00 00 00 02 1D 00 12 7B - can1 151 [8] 01 00 00 EF 00 3C 13 99 - can1 131 [8] 00 00 00 00 00 00 14 4E - can1 200 [8] 00 00 00 00 00 00 13 1D - can1 201 [8] 00 00 00 00 00 00 13 1E - can1 202 [8] 00 00 00 00 00 00 13 1F - can1 203 [8] 00 00 00 00 00 00 13 20 - can1 141 [8] 00 00 00 02 1E 00 13 7D - can1 151 [8] 01 00 00 EF 00 3C 14 9A - can1 131 [8] 00 00 00 00 00 00 15 4F - can1 200 [8] 00 00 00 00 00 00 14 1E - can1 201 [8] 00 00 00 00 00 00 14 1F - can1 202 [8] 00 00 00 00 00 00 14 20 - can1 203 [8] 00 00 00 00 00 00 14 21 - can1 141 [8] 00 00 00 02 1F 00 14 7F - can1 151 [8] 01 00 00 EF 00 3C 15 9B - can1 131 [8] 00 00 00 00 00 00 16 50 - can1 200 [8] 00 00 00 00 00 00 15 1F - can1 201 [8] 00 00 00 00 00 00 15 20 - can1 202 [8] 00 00 00 00 00 00 15 21 - can1 203 [8] 00 00 00 00 00 00 15 22 - can1 141 [8] 00 00 00 02 20 00 15 81 - can1 151 [8] 01 00 00 EF 00 3C 16 9C - can1 131 [8] 00 00 00 00 00 00 17 51 - can1 200 [8] 00 00 00 00 00 00 16 20 - can1 201 [8] 00 00 00 00 00 00 16 21 - can1 202 [8] 00 00 00 00 00 00 16 22 - can1 203 [8] 00 00 00 00 00 00 16 23 - can1 141 [8] 00 00 00 02 21 00 16 83 - can1 151 [8] 01 00 00 EF 00 3C 17 9D - can1 151 [8] 01 00 00 EF 00 3C 18 9E - can1 131 [8] 00 00 00 00 00 00 18 52 - can1 200 [8] 00 00 00 00 00 00 17 21 - can1 201 [8] 00 00 00 00 00 00 17 22 - can1 202 [8] 00 00 00 00 00 00 17 23 - can1 203 [8] 00 00 00 00 00 00 17 24 - can1 141 [8] 00 00 00 02 21 00 17 84 - can1 131 [8] 00 00 00 00 00 00 19 53 - can1 200 [8] 00 00 00 00 00 00 18 22 - can1 201 [8] 00 00 00 00 00 00 18 23 - can1 202 [8] 00 00 00 00 00 00 18 24 - can1 203 [8] 00 00 00 00 00 00 18 25 - can1 141 [8] 00 00 00 02 22 00 18 86 - can1 151 [8] 01 00 00 EF 00 3C 19 9F - can1 131 [8] 00 00 00 00 00 00 1A 54 - can1 200 [8] 00 00 00 00 00 00 19 23 - can1 201 [8] 00 00 00 00 00 00 19 24 - can1 202 [8] 00 00 00 00 00 00 19 25 - can1 203 [8] 00 00 00 00 00 00 19 26 - can1 141 [8] 00 00 00 02 23 00 19 88 - can1 151 [8] 01 00 00 EF 00 3C 1A A0 - can1 131 [8] 00 00 00 00 00 00 1B 55 - can1 200 [8] 00 00 00 00 00 00 1A 24 - can1 201 [8] 00 00 00 00 00 00 1A 25 - can1 202 [8] 00 00 00 00 00 00 1A 26 - can1 203 [8] 00 00 00 00 00 00 1A 27 - can1 141 [8] 00 00 00 02 24 00 1A 8A - can1 151 [8] 01 00 00 EF 00 3C 1B A1 - can1 131 [8] 00 00 00 00 00 00 1C 56 - can1 200 [8] 00 00 00 00 00 00 1B 25 - can1 201 [8] 00 00 00 00 00 00 1B 26 - can1 202 [8] 00 00 00 00 00 00 1B 27 - can1 203 [8] 00 00 00 00 00 00 1B 28 - can1 141 [8] 00 00 00 02 25 00 1B 8C - can1 151 [8] 01 00 00 EF 00 3C 1C A2 - can1 131 [8] 00 00 00 00 00 00 1D 57 - can1 200 [8] 00 00 00 00 00 00 1C 26 - can1 201 [8] 00 00 00 00 00 00 1C 27 - can1 202 [8] 00 00 00 00 00 00 1C 28 - can1 203 [8] 00 00 00 00 00 00 1C 29 - can1 141 [8] 00 00 00 02 25 00 1C 8D - can1 151 [8] 01 00 00 EF 00 3C 1D A3 - can1 131 [8] 00 00 00 00 00 00 1E 58 - can1 200 [8] 00 00 00 00 00 00 1D 27 - can1 201 [8] 00 00 00 00 00 00 1D 28 - can1 202 [8] 00 00 00 00 00 00 1D 29 - can1 203 [8] 00 00 00 00 00 00 1D 2A - can1 141 [8] 00 00 00 02 26 00 1D 8F - can1 151 [8] 01 00 00 EF 00 3C 1E A4 - can1 131 [8] 00 00 00 00 00 00 1F 59 - can1 200 [8] 00 00 00 00 00 00 1E 28 - can1 201 [8] 00 00 00 00 00 00 1E 29 - can1 202 [8] 00 00 00 00 00 00 1E 2A - can1 203 [8] 00 00 00 00 00 00 1E 2B - can1 141 [8] 00 00 00 02 27 00 1E 91 - can1 151 [8] 01 00 00 EF 00 3C 1F A5 - can1 131 [8] 00 00 00 00 00 00 20 5A - can1 200 [8] 00 00 00 00 00 00 1F 29 - can1 201 [8] 00 00 00 00 00 00 1F 2A - can1 202 [8] 00 00 00 00 00 00 1F 2B - can1 203 [8] 00 00 00 00 00 00 1F 2C - can1 141 [8] 00 00 00 02 28 00 1F 93 - can1 151 [8] 01 00 00 EF 00 3C 20 A6 - can1 131 [8] 00 00 00 00 00 00 21 5B - can1 200 [8] 00 00 00 00 00 00 20 2A - can1 201 [8] 00 00 00 00 00 00 20 2B - can1 202 [8] 00 00 00 00 00 00 20 2C - can1 203 [8] 00 00 00 00 00 00 20 2D - can1 141 [8] 00 00 00 02 29 00 20 95 - can1 151 [8] 01 00 00 EF 00 3C 21 A7 - can1 151 [8] 01 00 00 EF 00 3C 22 A8 - can1 131 [8] 00 00 00 00 00 00 22 5C - can1 200 [8] 00 00 00 00 00 00 21 2B - can1 201 [8] 00 00 00 00 00 00 21 2C - can1 202 [8] 00 00 00 00 00 00 21 2D - can1 203 [8] 00 00 00 00 00 00 21 2E - can1 141 [8] 00 00 00 02 29 00 21 96 - can1 131 [8] 00 00 00 00 00 00 23 5D - can1 200 [8] 00 00 00 00 00 00 22 2C - can1 201 [8] 00 00 00 00 00 00 22 2D - can1 202 [8] 00 00 00 00 00 00 22 2E - can1 203 [8] 00 00 00 00 00 00 22 2F - can1 141 [8] 00 00 00 02 2A 00 22 98 - can1 151 [8] 01 00 00 EF 00 3C 23 A9 - can1 131 [8] 00 00 00 00 00 00 24 5E - can1 200 [8] 00 00 00 00 00 00 23 2D - can1 201 [8] 00 00 00 00 00 00 23 2E - can1 202 [8] 00 00 00 00 00 00 23 2F - can1 203 [8] 00 00 00 00 00 00 23 30 - can1 141 [8] 00 00 00 02 2B 00 23 9A diff --git a/docs/misc/check_endianness.md b/docs/misc/check_endianness.md deleted file mode 100644 index 7f8545b..0000000 --- a/docs/misc/check_endianness.md +++ /dev/null @@ -1,36 +0,0 @@ -On a Big Endian-System (Solaris on SPARC) - -``` -$ echo -n I | od -to2 | head -n1 | cut -f2 -d" " | cut -c6 -0 -``` -On a little endian system (Linux on x86) -``` -$ echo -n I | od -to2 | head -n1 | cut -f2 -d" " | cut -c6 -1 -``` -The solution above is clever and works great for Linux *86 and Solaris Sparc. - -I needed a shell-only (no Perl) solution that also worked on AIX/Power and HPUX/Itanium. Unfortunately the last two don't play nice: AIX reports "6" and HPUX gives an empty line. - -Using your solution, I was able to craft something that worked on all these Unix systems: -``` -$ echo I | tr -d [:space:] | od -to2 | head -n1 | awk '{print $2}' | cut -c6 -``` -Regarding the Python solution someone posted, it does not work in Jython because the JVM treats everything as Big. If anyone can get it to work in Jython, please post! - -Also, I found this, which explains the endianness of various platforms. Some hardware can operate in either mode depending on what the O/S selects: http://labs.hoffmanlabs.com/node/544 - -If you're going to use awk this line can be simplified to: -``` -echo -n I | od -to2 | awk '{ print substr($2,6,1); exit}' -``` -For small Linux boxes that don't have 'od' (say OpenWrt) then try 'hexdump': -``` -echo -n I | hexdump -o | awk '{ print substr($2,6,1); exit}' -``` - -Reference: - -* [1] https://serverfault.com/questions/163487/how-to-tell-if-a-linux-system-is-big-endian-or-little-endian -* [2] https://wiki.rdu.im/_pages/Knowledge-Base/Computing/Computing.html \ No newline at end of file diff --git a/docs/misc/commands.md b/docs/misc/commands.md deleted file mode 100644 index 42620c3..0000000 --- a/docs/misc/commands.md +++ /dev/null @@ -1,55 +0,0 @@ -# Commands - -## Create gif animation using "imagemagick" - -``` -$ convert -delay 120 -loop 0 *.png animated.gif -``` - -## Get statistics of the code base - -``` -$ sudo apt install cloc -$ cd ~/Workspace/librav/src -$ cloc --exclude-dir=cmake,lcmtypes,third_party . -``` - -## Create a pair of VSP’s - -``` -$ socat -d -d pty,raw,echo=0 pty,raw,echo=0 -``` - -``` -$ cat nmea_test.txt > /dev/pts/6 -``` - -## git subtree - -Adding the sub-project as a remote -``` -$ git remote add -f [remote-name] [remote-url] -$ git subtree add --prefix [sub-project-name] [remote-name] [branch-name] --squash -``` - -Update the sub-project -``` -$ git fetch [remote-name] [branch-name] -$ git subtree pull --prefix [sub-project-name] [remote-name] [branch-name] --squash -``` - -Push to remote -``` -$ git subtree push --prefix=[sub-project-name] [remote-name] [branch-name] -``` - -Firmware branch update -``` -$ git fetch fw_origin pios_pixcar -$ git subtree pull --prefix firmware fw_origin pios_pixcar --squash -``` - -## Reference - -* [Git subtree: the alternative to Git submodule](https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtree) -* [Virtual serial port: socat](https://justcheckingonall.wordpress.com/2009/06/09/howto-vsp-socat/) \ No newline at end of file diff --git a/docs/misc/jetson_tx2_can.md b/docs/misc/jetson_tx2_can.md deleted file mode 100644 index 96b9c1d..0000000 --- a/docs/misc/jetson_tx2_can.md +++ /dev/null @@ -1,12 +0,0 @@ -# Enable CAN on Jetson TX2 - -``` -$ sudo modprobe can -$ sudo modprobe mttcan -$ sudo ip link set can0 type can bitrate 500000 -$ sudo ip link set up can0 -``` - -Reference: - -* https://devtalk.nvidia.com/default/topic/1006762/jetson-tx2/how-can-i-use-can-bus-in-tx2-/post/5166583/#5166583 diff --git a/docs/misc/release_checklist.md b/docs/misc/release_checklist.md deleted file mode 100644 index eb1f841..0000000 --- a/docs/misc/release_checklist.md +++ /dev/null @@ -1 +0,0 @@ -* Disable tests to keep minimal dependency by default \ No newline at end of file diff --git a/docs/misc/scout_interface.png b/docs/misc/scout_interface.png deleted file mode 100755 index 4c23fc4..0000000 Binary files a/docs/misc/scout_interface.png and /dev/null differ diff --git a/docs/misc/scout_monitor_tool.gif b/docs/misc/scout_monitor_tool.gif deleted file mode 100644 index 886aab3..0000000 Binary files a/docs/misc/scout_monitor_tool.gif and /dev/null differ diff --git a/docs/misc/test_can_msg.txt b/docs/misc/test_can_msg.txt deleted file mode 100644 index 1287944..0000000 --- a/docs/misc/test_can_msg.txt +++ /dev/null @@ -1,7 +0,0 @@ - can1 131 [8] 00 00 00 00 00 00 E4 1E - can1 141 [8] 00 00 00 02 0E 00 E3 3D - can1 151 [8] 01 00 00 EF 00 3C E5 6B - can1 200 [8] 00 00 00 00 00 00 EA F4 - can1 201 [8] 00 00 00 00 00 00 EA F5 - can1 202 [8] 00 00 00 00 00 00 EA F6 - can1 203 [8] 00 00 00 00 00 00 EA F7 \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 72d4c8d..e98dce6 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,6 @@ # Add source directories add_subdirectory(apps) add_subdirectory(common) -add_subdirectory(hunter_sdk) add_subdirectory(scout_sdk) +add_subdirectory(hunter_sdk) +add_subdirectory(tracer_sdk) diff --git a/src/apps/CMakeLists.txt b/src/apps/CMakeLists.txt index 45b4def..5c79ed0 100755 --- a/src/apps/CMakeLists.txt +++ b/src/apps/CMakeLists.txt @@ -11,6 +11,9 @@ target_link_libraries(app_scout_demo scoutbase) add_executable(app_hunter_demo hunter_demo/hunter_demo.cpp) target_link_libraries(app_hunter_demo hunterbase) +add_executable(app_tracer_demo tracer_demo/tracer_demo.cpp) +target_link_libraries(app_tracer_demo tracerbase) + if(BUILD_MONITOR) add_subdirectory(scout_monitor) endif() \ No newline at end of file diff --git a/src/apps/tracer_demo/tracer_demo.cpp b/src/apps/tracer_demo/tracer_demo.cpp new file mode 100644 index 0000000..30e3548 --- /dev/null +++ b/src/apps/tracer_demo/tracer_demo.cpp @@ -0,0 +1,108 @@ +/* + * demo_tracer_can.cpp + * + * Created on: Jun 12, 2019 05:03 + * Description: + * + * Copyright (c) 2019 Ruixiang Du (rdu) + */ + +#include "tracer_base/tracer_base.hpp" + +using namespace wescore; + +int main(int argc, char **argv) +{ + std::string device_name; + int32_t baud_rate = 0; + + if (argc == 2) + { + device_name = {argv[1]}; + std::cout << "Specified CAN: " << device_name << std::endl; + } + else + { + std::cout << "Usage: app_tracer_demo " << std::endl + << "Example 1: ./app_tracer_demo can0" << std::endl; + return -1; + } + + TracerBase tracer; + tracer.Connect(device_name); + + // light control + std::cout << "Light: const off" << std::endl; + tracer.SetLightCommand({TracerLightCmd::LightMode::CONST_OFF, 0, TracerLightCmd::LightMode::CONST_OFF, 0}); + sleep(3); + std::cout << "Light: const on" << std::endl; + tracer.SetLightCommand({TracerLightCmd::LightMode::CONST_ON, 0, TracerLightCmd::LightMode::CONST_ON, 0}); + sleep(3); + std::cout << "Light: breath" << std::endl; + tracer.SetLightCommand({TracerLightCmd::LightMode::BREATH, 0, TracerLightCmd::LightMode::BREATH, 0}); + sleep(3); + std::cout << "Light: custom 90-80" << std::endl; + tracer.SetLightCommand({TracerLightCmd::LightMode::CUSTOM, 90, TracerLightCmd::LightMode::CUSTOM, 80}); + sleep(3); + std::cout << "Light: diabled cmd control" << std::endl; + tracer.DisableLightCmdControl(); + + int count = 0; + while (true) + { + // motion control + if (count < 5) + { + std::cout << "Motor: 0.2, 0.0" << std::endl; + tracer.SetMotionCommand(0.2, 0.0); + } + else if (count < 10) + { + std::cout << "Motor: 0.8, 0.3" << std::endl; + tracer.SetMotionCommand(0.8, 0.3); + } + else if (count < 15) + { + std::cout << "Motor: 1.5, 0.5" << std::endl; + tracer.SetMotionCommand(1.5, 0.5); + } + else if (count < 20) + { + std::cout << "Motor: 1.0, 0.3" << std::endl; + tracer.SetMotionCommand(1.0, 0.3); + } + else if (count < 25) + { + std::cout << "Motor: 0.0, 0.0" << std::endl; + tracer.SetMotionCommand(0.0, 0.0); + } + else if (count < 30) + { + std::cout << "Motor: -0.5, -0.3" << std::endl; + tracer.SetMotionCommand(-0.5, -0.3); + } + else if (count < 35) + { + std::cout << "Motor: -1.0, -0.5" << std::endl; + tracer.SetMotionCommand(-1.0, -0.5); + } + else if (count < 40) + { + std::cout << "Motor: 0.0, 0.0," << std::endl; + tracer.SetMotionCommand(0.0, 0.0); + } + + auto state = tracer.GetTracerState(); + std::cout << "-------------------------------" << std::endl; + std::cout << "count: " << count << std::endl; + std::cout << "control mode: " << static_cast(state.control_mode) << " , base state: " << static_cast(state.base_state) << std::endl; + std::cout << "battery voltage: " << state.battery_voltage << std::endl; + std::cout << "velocity (linear, angular): " << state.linear_velocity << ", " << state.angular_velocity << std::endl; + std::cout << "-------------------------------" << std::endl; + + sleep(1); + ++count; + } + + return 0; +} \ No newline at end of file diff --git a/src/hunter_sdk/hunter_base/CMakeLists.txt b/src/hunter_sdk/hunter_base/CMakeLists.txt index b4786a9..63d58ea 100755 --- a/src/hunter_sdk/hunter_base/CMakeLists.txt +++ b/src/hunter_sdk/hunter_base/CMakeLists.txt @@ -9,7 +9,7 @@ target_include_directories(hunterbase PUBLIC $ PRIVATE src) - ## Add executables -# if(BUILD_TESTS) -# add_subdirectory(tests) -# endif() \ No newline at end of file +## Add executables +if(BUILD_TESTS) + add_subdirectory(tests) +endif() \ No newline at end of file diff --git a/src/hunter_sdk/hunter_base/tests/CMakeLists.txt b/src/hunter_sdk/hunter_base/tests/CMakeLists.txt index 2dd735c..df51975 100644 --- a/src/hunter_sdk/hunter_base/tests/CMakeLists.txt +++ b/src/hunter_sdk/hunter_base/tests/CMakeLists.txt @@ -2,15 +2,5 @@ #find_package(LIBRARY_NAME REQUIRED) # tests -add_executable(test_scout_base test_scout_base.cpp) -target_link_libraries(test_scout_base scoutbase) - -# add_executable(test_scout_serial test_scout_serial.cpp) -# target_link_libraries(test_scout_serial scoutbase) - -# add_executable(test_can_msg test_can_msg.cpp) -# target_link_libraries(test_can_msg scoutbase) - -# add_executable(test_serial_parser test_serial_parser.cpp) -# target_link_libraries(test_serial_parser scoutbase) - +add_executable(test_hunter_base test_hunter_base.cpp) +target_link_libraries(test_hunter_base hunterbase) diff --git a/src/hunter_sdk/hunter_base/tests/test_can_msg.cpp b/src/hunter_sdk/hunter_base/tests/test_can_msg.cpp deleted file mode 100644 index a86648b..0000000 --- a/src/hunter_sdk/hunter_base/tests/test_can_msg.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include - -#include "scout_base/details/scout_can_parser.hpp" - -using namespace wescore; - -void print_msg(uint8_t data[8]) -{ - for (int i = 0; i < 8; ++i) - std::cout << std::hex << static_cast(data[i]) << " "; - std::cout << std::dec << std::endl; -} - -int main() -{ - MotionControlMessage msg; - msg.msg.cmd.control_mode = CTRL_MODE_CMD_CAN; - msg.msg.cmd.fault_clear_flag = FAULT_CLR_NONE; - msg.msg.cmd.linear_velocity_cmd = 10; - msg.msg.cmd.angular_velocity_cmd = 0; - msg.msg.cmd.reserved0 = 0; - msg.msg.cmd.reserved1 = 0; - msg.msg.cmd.count = 0; - msg.msg.cmd.checksum = ScoutCANParser::Agilex_CANMsgChecksum(ScoutCANParser::CAN_MSG_MOTION_CONTROL_CMD_ID, msg.msg.raw, msg.len); - print_msg(msg.msg.raw); - - LightControlMessage msg2; - msg2.msg.cmd.light_ctrl_enable = LIGHT_DISABLE_CTRL; - msg2.msg.cmd.front_light_mode = LIGHT_MODE_CONST_ON; - msg2.msg.cmd.front_light_custom = 0; - msg2.msg.cmd.rear_light_mode = LIGHT_MODE_CONST_ON; - msg2.msg.cmd.rear_light_custom = 0; - msg2.msg.cmd.reserved0 = 0; - msg2.msg.cmd.count = 0; - msg2.msg.cmd.checksum = ScoutCANParser::Agilex_CANMsgChecksum(ScoutCANParser::CAN_MSG_LIGHT_CONTROL_CMD_ID, msg2.msg.raw, msg2.len); - print_msg(msg2.msg.raw); - - return 0; -} \ No newline at end of file diff --git a/src/hunter_sdk/hunter_base/tests/test_hunter_base.cpp b/src/hunter_sdk/hunter_base/tests/test_hunter_base.cpp new file mode 100644 index 0000000..3762e9d --- /dev/null +++ b/src/hunter_sdk/hunter_base/tests/test_hunter_base.cpp @@ -0,0 +1,54 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "scout_base/scout_base.hpp" + +#define TEST_WITHOUT_SERIAL_HARDWARE + +using namespace wescore; + +int main(int argc, char **argv) { + std::string device_name; + int32_t baud_rate = 0; + + if (argc == 2) { + device_name = {argv[1]}; + std::cout << "Specified CAN: " << device_name << std::endl; + } else { + std::cout << "Usage: app_scout_demo " << std::endl + << "Example 1: ./app_scout_demo can0" << std::endl; + return -1; + } + + HunterBase scout; + scout.Connect(device_name); + + int count = 0; + while (true) { + std::cout << "Motor: 0.0, 0.0," << std::endl; + scout.SetMotionCommand(0.0, 0.0); + + auto state = scout.GetHunterState(); + std::cout << "-------------------------------" << std::endl; + std::cout << "count: " << count << std::endl; + std::cout << "control mode: " << static_cast(state.control_mode) + << " , base state: " << static_cast(state.base_state) + << std::endl; + std::cout << "battery voltage: " << state.battery_voltage << std::endl; + std::cout << "velocity (linear, angular): " << state.linear_velocity << ", " + << state.angular_velocity << std::endl; + std::cout << "-------------------------------" << std::endl; + + sleep(1); + ++count; + } + + return 0; +} \ No newline at end of file diff --git a/src/hunter_sdk/hunter_base/tests/test_scout_serial.cpp b/src/hunter_sdk/hunter_base/tests/test_scout_serial.cpp deleted file mode 100644 index bb1441f..0000000 --- a/src/hunter_sdk/hunter_base/tests/test_scout_serial.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include - -#include "scout_base/details/scout_serial_parser.hpp" - -using namespace wescore; - -#include "scout_base/scout_base.hpp" - -#define TEST_WITHOUT_SERIAL_HARDWARE - -using namespace wescore; - -int main(int argc, char **argv) -{ - ScoutBase scout; - // scout.ConfigureCANBus("can1"); - scout.Connect("/dev/ttyUSB0", 115200); - // scout.StartCmdThread(10); - - // scout.SetLightCommand({ScoutLightCmd::LightMode::CONST_ON, 0, ScoutLightCmd::LightMode::CONST_ON, 0}); - - int count = 0; - while (true) - { - // scout.SetMotionCommand(0.5, 0.2); - - // if(count == 10) - // { - // // scout.SetLightCommand({ScoutLightCmd::LightMode::LIGHT_MODE_CONST_OFF, 0, ScoutLightCmd::LightMode::LIGHT_MODE_CONST_OFF, 0}); - // scout.DisableLightCmdControl(); - // } - - auto state = scout.GetScoutState(); - std::cout << "-------------------------------" << std::endl; - std::cout << "control mode: " << static_cast(state.control_mode) << " , base state: " << static_cast(state.base_state) << std::endl; - std::cout << "battery voltage: " << state.battery_voltage << std::endl; - std::cout << "velocity (linear, angular): " << state.linear_velocity << ", " << state.angular_velocity << std::endl; - std::cout << "-------------------------------" << std::endl; - - sleep(1); - ++count; - } - - return 0; -} \ No newline at end of file diff --git a/src/hunter_sdk/hunter_base/tests/test_serial_parser.cpp b/src/hunter_sdk/hunter_base/tests/test_serial_parser.cpp deleted file mode 100644 index 0a97de1..0000000 --- a/src/hunter_sdk/hunter_base/tests/test_serial_parser.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include - -#include "scout_base/details/scout_serial_parser.hpp" - -using namespace wescore; - -void print_msg(uint8_t data[8]) -{ - for (int i = 0; i < 8; ++i) - std::cout << std::hex << static_cast(data[i]) << " "; - std::cout << std::dec << std::endl; -} - -uint8_t calc_checksum(uint8_t *buf, uint8_t len) -{ - uint8_t checksum = 0; - for (int i = 0; i < len; ++i) - checksum ^= buf[i]; - return checksum; -} - -int main() -{ - uint8_t frame_data[16]; - - // SOF - frame_data[0] = 0x5a; - frame_data[1] = 0xa5; - - // Frame len, type, ID - frame_data[2] = 0x0a; - frame_data[3] = 0xaa; - frame_data[4] = 0x01; - - // Frame payload - frame_data[5] = 0; - frame_data[6] = 1; - frame_data[7] = 2; - frame_data[8] = 3; - frame_data[9] = 4; - frame_data[10] = 5; - - // Frame count, checksum - frame_data[11] = 1; - frame_data[12] = calc_checksum(frame_data, 12); - - ScoutSerialParser parser; - parser.ParseBuffer(frame_data, 7 + 6); - - return 0; -} \ No newline at end of file diff --git a/src/tracer_sdk/CMakeLists.txt b/src/tracer_sdk/CMakeLists.txt new file mode 100755 index 0000000..aee5669 --- /dev/null +++ b/src/tracer_sdk/CMakeLists.txt @@ -0,0 +1,3 @@ +# Add source directories +add_subdirectory(tracer_base) +add_subdirectory(tracer_protocol) diff --git a/src/tracer_sdk/tracer_base/CMakeLists.txt b/src/tracer_sdk/tracer_base/CMakeLists.txt new file mode 100755 index 0000000..0f0db9a --- /dev/null +++ b/src/tracer_sdk/tracer_base/CMakeLists.txt @@ -0,0 +1,16 @@ +## Add libraries +set(TRACER_BASE_SRC + src/tracer_base.cpp +) +add_library(tracerbase STATIC ${TRACER_BASE_SRC}) +target_link_libraries(tracerbase asyncio tracer_protocol stopwatch) +target_include_directories(tracerbase PUBLIC + $ + $ + $ + PRIVATE src) + + ## Add executables +if(BUILD_TESTS) + add_subdirectory(tests) +endif() \ No newline at end of file diff --git a/src/tracer_sdk/tracer_base/include/tracer_base/tracer_base.hpp b/src/tracer_sdk/tracer_base/include/tracer_base/tracer_base.hpp new file mode 100644 index 0000000..9da51e6 --- /dev/null +++ b/src/tracer_sdk/tracer_base/include/tracer_base/tracer_base.hpp @@ -0,0 +1,109 @@ +/* + * tracer_base.hpp + * + * Created on: Apr 14, 2020 10:21 + * Description: + * + * Copyright (c) 2020 Ruixiang Du (rdu) + */ + +#ifndef TRACER_BASE_HPP +#define TRACER_BASE_HPP + +#include +#include +#include +#include +#include + +#include "async_io/async_can.hpp" +#include "async_io/async_serial.hpp" + +#include "tracer_protocol/tracer_protocol.h" +#include "tracer_protocol/tracer_can_parser.h" + +#include "tracer_base/tracer_types.hpp" + +namespace wescore +{ +class TracerBase +{ +public: + TracerBase() = default; + ~TracerBase(); + + // do not allow copy + TracerBase(const TracerBase &tracer) = delete; + TracerBase &operator=(const TracerBase &tracer) = delete; + +public: + // connect to roboot from CAN + void Connect(std::string dev_name); + + // disconnect from roboot, only valid for serial port + void Disconnect(); + + // cmd thread runs at 100Hz (10ms) by default + void SetCmdThreadPeriodMs(int32_t period_ms) { cmd_thread_period_ms_ = period_ms; }; + + // motion control + void SetMotionCommand(double linear_vel, double angular_vel, + TracerMotionCmd::FaultClearFlag fault_clr_flag = TracerMotionCmd::FaultClearFlag::NO_FAULT); + + // light control + void SetLightCommand(TracerLightCmd cmd); + void DisableLightCmdControl(); + + // get robot state + TracerState GetTracerState(); + +private: + // hardware communication interface + std::shared_ptr can_if_; + std::shared_ptr serial_if_; + + // CAN priority higher than serial if both connected + bool can_connected_ = false; + bool serial_connected_ = false; + + // serial port related variables + uint8_t tx_cmd_len_; + uint8_t tx_buffer_[TRACER_CMD_BUF_LEN]; + + // cmd/status update related variables + std::thread cmd_thread_; + std::mutex tracer_state_mutex_; + std::mutex motion_cmd_mutex_; + std::mutex light_cmd_mutex_; + + TracerState tracer_state_; + TracerMotionCmd current_motion_cmd_; + TracerLightCmd current_light_cmd_; + + int32_t cmd_thread_period_ms_ = 10; + bool cmd_thread_started_ = false; + + bool light_ctrl_enabled_ = false; + bool light_ctrl_requested_ = false; + + // internal functions + void ConfigureCANBus(const std::string &can_if_name = "can1"); + void ConfigureSerial(const std::string uart_name = "/dev/ttyUSB0", int32_t baud_rate = 115200); + + void StartCmdThread(); + void ControlLoop(int32_t period_ms); + + void SendMotionCmd(uint8_t count); + void SendLightCmd(uint8_t count); + + void ParseCANFrame(can_frame *rx_frame); + void ParseUARTBuffer(uint8_t *buf, const size_t bufsize, size_t bytes_received); + + void NewStatusMsgReceivedCallback(const TracerMessage &msg); + +public: + static void UpdateTracerState(const TracerMessage &status_msg, TracerState &state); +}; +} // namespace wescore + +#endif /* TRACER_BASE_HPP */ diff --git a/src/tracer_sdk/tracer_base/include/tracer_base/tracer_types.hpp b/src/tracer_sdk/tracer_base/include/tracer_base/tracer_types.hpp new file mode 100644 index 0000000..43945a0 --- /dev/null +++ b/src/tracer_sdk/tracer_base/include/tracer_base/tracer_types.hpp @@ -0,0 +1,111 @@ +/* + * tracer_types.hpp + * + * Created on: Apr 14, 2020 10:22 + * Description: + * + * Copyright (c) 2020 Ruixiang Du (rdu) + */ + +#ifndef TRACER_TYPES_HPP +#define TRACER_TYPES_HPP + +#include +#include + +namespace wescore +{ +struct TracerState +{ + enum MotorID + { + FRONT_RIGHT = 0, + FRONT_LEFT = 1, + REAR_LEFT = 2, + REAR_RIGHT = 3 + }; + + struct MotorState + { + double current = 0; // in A + double rpm = 0; + double temperature = 0; + }; + + struct LightState + { + uint8_t mode = 0; + uint8_t custom_value = 0; + }; + + // base state + uint8_t base_state = 0; + uint8_t control_mode = 0; + uint16_t fault_code = 0; + double battery_voltage = 0.0; + + // motor state + MotorState motor_states[4]; + + // light state + bool light_control_enabled = false; + LightState front_light_state; + LightState rear_light_state; + + // motion state + double linear_velocity = 0; + double angular_velocity = 0; +}; + +struct TracerMotionCmd +{ + enum class FaultClearFlag + { + NO_FAULT = 0x00, + BAT_UNDER_VOL = 0x01, + BAT_OVER_VOL = 0x02, + MOTOR1_COMM = 0x03, + MOTOR2_COMM = 0x04, + MOTOR3_COMM = 0x05, + MOTOR4_COMM = 0x06, + MOTOR_DRV_OVERHEAT = 0x07, + MOTOR_OVERCURRENT = 0x08 + }; + + TracerMotionCmd(int8_t linear = 0, int8_t angular = 0, + FaultClearFlag fault_clr_flag = FaultClearFlag::NO_FAULT) + : linear_velocity(linear), angular_velocity(angular), + fault_clear_flag(fault_clr_flag) {} + + int8_t linear_velocity; + int8_t angular_velocity; + FaultClearFlag fault_clear_flag; + + static constexpr double max_linear_velocity = 1.5; // 1.5 m/s + static constexpr double min_linear_velocity = -1.5; // -1.5 m/s + static constexpr double max_angular_velocity = 0.5235; // 0.5235 rad/s + static constexpr double min_angular_velocity = -0.5235; // -0.5235 rad/s +}; + +struct TracerLightCmd +{ + enum class LightMode + { + CONST_OFF = 0x00, + CONST_ON = 0x01, + BREATH = 0x02, + CUSTOM = 0x03 + }; + + TracerLightCmd() = default; + TracerLightCmd(LightMode f_mode, uint8_t f_value, LightMode r_mode, uint8_t r_value) : front_mode(f_mode), front_custom_value(f_value), + rear_mode(r_mode), rear_custom_value(r_value) {} + + LightMode front_mode; + uint8_t front_custom_value; + LightMode rear_mode; + uint8_t rear_custom_value; +}; +} // namespace wescore + +#endif /* TRACER_TYPES_HPP */ diff --git a/src/tracer_sdk/tracer_base/src/tracer_base.cpp b/src/tracer_sdk/tracer_base/src/tracer_base.cpp new file mode 100644 index 0000000..de1680b --- /dev/null +++ b/src/tracer_sdk/tracer_base/src/tracer_base.cpp @@ -0,0 +1,338 @@ +#include "tracer_base/tracer_base.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "stopwatch/stopwatch.h" + +namespace wescore +{ +TracerBase::~TracerBase() +{ + if (serial_connected_) + serial_if_->close(); + + if (cmd_thread_.joinable()) + cmd_thread_.join(); +} + +void TracerBase::Connect(std::string dev_name) +{ + // if (baud_rate == 0) { + ConfigureCANBus(dev_name); + // } else { + // ConfigureSerial(dev_name, baud_rate); + + // if (!serial_connected_) + // std::cerr << "ERROR: Failed to connect to serial port" << std::endl; + // } +} + +void TracerBase::Disconnect() +{ + if (serial_connected_) + { + if (serial_if_->is_open()) + serial_if_->close(); + } +} + +void TracerBase::ConfigureCANBus(const std::string &can_if_name) +{ + can_if_ = std::make_shared(can_if_name); + + can_if_->set_receive_callback(std::bind(&TracerBase::ParseCANFrame, this, std::placeholders::_1)); + + can_connected_ = true; +} + +void TracerBase::ConfigureSerial(const std::string uart_name, int32_t baud_rate) +{ + serial_if_ = std::make_shared(uart_name, baud_rate); + serial_if_->open(); + + if (serial_if_->is_open()) + serial_connected_ = true; + + serial_if_->set_receive_callback(std::bind(&TracerBase::ParseUARTBuffer, this, + std::placeholders::_1, + std::placeholders::_2, + std::placeholders::_3)); +} + +void TracerBase::StartCmdThread() +{ + current_motion_cmd_.linear_velocity = 0; + current_motion_cmd_.angular_velocity = 0; + current_motion_cmd_.fault_clear_flag = TracerMotionCmd::FaultClearFlag::NO_FAULT; + + cmd_thread_ = std::thread(std::bind(&TracerBase::ControlLoop, this, cmd_thread_period_ms_)); + cmd_thread_started_ = true; +} + +void TracerBase::SendMotionCmd(uint8_t count) +{ + // motion control message + TracerMessage m_msg; + m_msg.type = TracerMotionCmdMsg; + + if (can_connected_) + m_msg.body.motion_cmd_msg.data.cmd.control_mode = CTRL_MODE_CMD_CAN; + else if (serial_connected_) + m_msg.body.motion_cmd_msg.data.cmd.control_mode = CTRL_MODE_CMD_UART; + + motion_cmd_mutex_.lock(); + m_msg.body.motion_cmd_msg.data.cmd.fault_clear_flag = static_cast(current_motion_cmd_.fault_clear_flag); + m_msg.body.motion_cmd_msg.data.cmd.linear_velocity_cmd = current_motion_cmd_.linear_velocity; + m_msg.body.motion_cmd_msg.data.cmd.angular_velocity_cmd = current_motion_cmd_.angular_velocity; + motion_cmd_mutex_.unlock(); + + m_msg.body.motion_cmd_msg.data.cmd.reserved0 = 0; + m_msg.body.motion_cmd_msg.data.cmd.reserved1 = 0; + m_msg.body.motion_cmd_msg.data.cmd.count = count; + + if (can_connected_) + m_msg.body.motion_cmd_msg.data.cmd.checksum = CalcTracerCANChecksum(CAN_MSG_MOTION_CMD_ID, m_msg.body.motion_cmd_msg.data.raw, 8); + // serial_connected_: checksum will be calculated later when packed into a complete serial frame + + if (can_connected_) + { + // send to can bus + can_frame m_frame; + EncodeTracerMsgToCAN(&m_msg, &m_frame); + can_if_->send_frame(m_frame); + } + else + { + // TODO + // send to serial port + // EncodeTracerMsgToUART(&m_msg, tx_buffer_, &tx_cmd_len_); + // serial_if_->send_bytes(tx_buffer_, tx_cmd_len_); + } +} + +void TracerBase::SendLightCmd(uint8_t count) +{ + TracerMessage l_msg; + l_msg.type = TracerLightControlMsg; + + light_cmd_mutex_.lock(); + if (light_ctrl_enabled_) + { + l_msg.body.light_control_msg.data.cmd.light_ctrl_enable = LIGHT_ENABLE_CTRL; + + l_msg.body.light_control_msg.data.cmd.front_light_mode = static_cast(current_light_cmd_.front_mode); + l_msg.body.light_control_msg.data.cmd.front_light_custom = current_light_cmd_.front_custom_value; + l_msg.body.light_control_msg.data.cmd.rear_light_mode = static_cast(current_light_cmd_.rear_mode); + l_msg.body.light_control_msg.data.cmd.rear_light_custom = current_light_cmd_.rear_custom_value; + + // std::cout << "cmd: " << l_msg.data.cmd.front_light_mode << " , " << l_msg.data.cmd.front_light_custom << " , " + // << l_msg.data.cmd.rear_light_mode << " , " << l_msg.data.cmd.rear_light_custom << std::endl; + // std::cout << "light cmd generated" << std::endl; + } + else + { + l_msg.body.light_control_msg.data.cmd.light_ctrl_enable = LIGHT_DISABLE_CTRL; + + l_msg.body.light_control_msg.data.cmd.front_light_mode = LIGHT_MODE_CONST_OFF; + l_msg.body.light_control_msg.data.cmd.front_light_custom = 0; + l_msg.body.light_control_msg.data.cmd.rear_light_mode = LIGHT_MODE_CONST_OFF; + l_msg.body.light_control_msg.data.cmd.rear_light_custom = 0; + } + light_ctrl_requested_ = false; + light_cmd_mutex_.unlock(); + + l_msg.body.light_control_msg.data.cmd.reserved0 = 0; + l_msg.body.light_control_msg.data.cmd.count = count; + + if (can_connected_) + l_msg.body.light_control_msg.data.cmd.checksum = CalcTracerCANChecksum(CAN_MSG_LIGHT_CONTROL_CMD_ID, l_msg.body.light_control_msg.data.raw, 8); + // serial_connected_: checksum will be calculated later when packed into a complete serial frame + + if (can_connected_) + { + // send to can bus + can_frame l_frame; + EncodeTracerMsgToCAN(&l_msg, &l_frame); + + can_if_->send_frame(l_frame); + } + // else + // { + // // send to serial port + // EncodeTracerMsgToUART(&l_msg, tx_buffer_, &tx_cmd_len_); + // serial_if_->send_bytes(tx_buffer_, tx_cmd_len_); + // } + + // std::cout << "cmd: " << static_cast(l_msg.data.cmd.front_light_mode) << " , " << static_cast(l_msg.data.cmd.front_light_custom) << " , " + // << static_cast(l_msg.data.cmd.rear_light_mode) << " , " << static_cast(l_msg.data.cmd.rear_light_custom) << std::endl; + // std::cout << "can: "; + // for (int i = 0; i < 8; ++i) + // std::cout << static_cast(l_frame.data[i]) << " "; + // std::cout << "uart: "; + // for (int i = 0; i < tx_cmd_len_; ++i) + // std::cout << static_cast(tx_buffer_[i]) << " "; + // std::cout << std::endl; +} + +void TracerBase::ControlLoop(int32_t period_ms) +{ + StopWatch ctrl_sw; + uint8_t cmd_count = 0; + uint8_t light_cmd_count = 0; + while (true) + { + ctrl_sw.tic(); + + // motion control message + SendMotionCmd(cmd_count++); + + // check if there is request for light control + if (light_ctrl_requested_) + SendLightCmd(light_cmd_count++); + + ctrl_sw.sleep_until_ms(period_ms); + // std::cout << "control loop update frequency: " << 1.0 / ctrl_sw.toc() << std::endl; + } +} + +TracerState TracerBase::GetTracerState() +{ + std::lock_guard guard(tracer_state_mutex_); + return tracer_state_; +} + +void TracerBase::SetMotionCommand(double linear_vel, double angular_vel, TracerMotionCmd::FaultClearFlag fault_clr_flag) +{ + // make sure cmd thread is started before attempting to send commands + if (!cmd_thread_started_) + StartCmdThread(); + + if (linear_vel < TracerMotionCmd::min_linear_velocity) + linear_vel = TracerMotionCmd::min_linear_velocity; + if (linear_vel > TracerMotionCmd::max_linear_velocity) + linear_vel = TracerMotionCmd::max_linear_velocity; + if (angular_vel < TracerMotionCmd::min_angular_velocity) + angular_vel = TracerMotionCmd::min_angular_velocity; + if (angular_vel > TracerMotionCmd::max_angular_velocity) + angular_vel = TracerMotionCmd::max_angular_velocity; + + std::lock_guard guard(motion_cmd_mutex_); + current_motion_cmd_.linear_velocity = static_cast(linear_vel / TracerMotionCmd::max_linear_velocity * 100.0); + current_motion_cmd_.angular_velocity = static_cast(angular_vel / TracerMotionCmd::max_angular_velocity * 100.0); + current_motion_cmd_.fault_clear_flag = fault_clr_flag; +} + +void TracerBase::SetLightCommand(TracerLightCmd cmd) +{ + if (!cmd_thread_started_) + StartCmdThread(); + + std::lock_guard guard(light_cmd_mutex_); + current_light_cmd_ = cmd; + light_ctrl_enabled_ = true; + light_ctrl_requested_ = true; +} + +void TracerBase::DisableLightCmdControl() +{ + std::lock_guard guard(light_cmd_mutex_); + light_ctrl_enabled_ = false; + light_ctrl_requested_ = true; +} + +void TracerBase::ParseCANFrame(can_frame *rx_frame) +{ + // validate checksum, discard frame if fails + if (!rx_frame->data[7] == CalcTracerCANChecksum(rx_frame->can_id, rx_frame->data, rx_frame->can_dlc)) + { + std::cerr << "ERROR: checksum mismatch, discard frame with id " << rx_frame->can_id << std::endl; + return; + } + + // otherwise, update robot state with new frame + TracerMessage status_msg; + DecodeTracerMsgFromCAN(rx_frame, &status_msg); + NewStatusMsgReceivedCallback(status_msg); +} + +void TracerBase::ParseUARTBuffer(uint8_t *buf, const size_t bufsize, size_t bytes_received) +{ + // std::cout << "bytes received from serial: " << bytes_received << std::endl; + // serial_parser_.PrintStatistics(); + // serial_parser_.ParseBuffer(buf, bytes_received); + + // TODO + // TracerMessage status_msg; + // for (int i = 0; i < bytes_received; ++i) + // { + // if (DecodeTracerMsgFromUART(buf[i], &status_msg)) + // NewStatusMsgReceivedCallback(status_msg); + // } +} + +void TracerBase::NewStatusMsgReceivedCallback(const TracerMessage &msg) +{ + // std::cout << "new status msg received" << std::endl; + std::lock_guard guard(tracer_state_mutex_); + UpdateTracerState(msg, tracer_state_); +} + +void TracerBase::UpdateTracerState(const TracerMessage &status_msg, TracerState &state) +{ + switch (status_msg.type) + { + case TracerMotionStatusMsg: + { + // std::cout << "motion control feedback received" << std::endl; + const MotionStatusMessage &msg = status_msg.body.motion_status_msg; + state.linear_velocity = static_cast(static_cast(msg.data.status.linear_velocity.low_byte) | static_cast(msg.data.status.linear_velocity.high_byte) << 8) / 1000.0; + state.angular_velocity = static_cast(static_cast(msg.data.status.angular_velocity.low_byte) | static_cast(msg.data.status.angular_velocity.high_byte) << 8) / 1000.0; + break; + } + case TracerLightStatusMsg: + { + // std::cout << "light control feedback received" << std::endl; + const LightStatusMessage &msg = status_msg.body.light_status_msg; + if (msg.data.status.light_ctrl_enable == LIGHT_DISABLE_CTRL) + state.light_control_enabled = false; + else + state.light_control_enabled = true; + state.front_light_state.mode = msg.data.status.front_light_mode; + state.front_light_state.custom_value = msg.data.status.front_light_custom; + state.rear_light_state.mode = msg.data.status.rear_light_mode; + state.rear_light_state.custom_value = msg.data.status.rear_light_custom; + break; + } + case TracerSystemStatusMsg: + { + // std::cout << "system status feedback received" << std::endl; + const SystemStatusMessage &msg = status_msg.body.system_status_msg; + state.control_mode = msg.data.status.control_mode; + state.base_state = msg.data.status.base_state; + state.battery_voltage = (static_cast(msg.data.status.battery_voltage.low_byte) | static_cast(msg.data.status.battery_voltage.high_byte) << 8) / 10.0; + state.fault_code = (static_cast(msg.data.status.fault_code.low_byte) | static_cast(msg.data.status.fault_code.high_byte) << 8); + break; + } + case TracerMotorDriverStatusMsg: + { + // std::cout << "motor 1 driver feedback received" << std::endl; + const MotorDriverStatusMessage &msg = status_msg.body.motor_driver_status_msg; + for (int i = 0; i < 4; ++i) + { + state.motor_states[status_msg.body.motor_driver_status_msg.motor_id].current = (static_cast(msg.data.status.current.low_byte) | static_cast(msg.data.status.current.high_byte) << 8) / 10.0; + state.motor_states[status_msg.body.motor_driver_status_msg.motor_id].rpm = static_cast(static_cast(msg.data.status.rpm.low_byte) | static_cast(msg.data.status.rpm.high_byte) << 8); + state.motor_states[status_msg.body.motor_driver_status_msg.motor_id].temperature = msg.data.status.temperature; + } + break; + } + } +} +} // namespace wescore diff --git a/src/tracer_sdk/tracer_base/tests/CMakeLists.txt b/src/tracer_sdk/tracer_base/tests/CMakeLists.txt new file mode 100644 index 0000000..2dd735c --- /dev/null +++ b/src/tracer_sdk/tracer_base/tests/CMakeLists.txt @@ -0,0 +1,16 @@ +# Dependency libraries +#find_package(LIBRARY_NAME REQUIRED) + +# tests +add_executable(test_scout_base test_scout_base.cpp) +target_link_libraries(test_scout_base scoutbase) + +# add_executable(test_scout_serial test_scout_serial.cpp) +# target_link_libraries(test_scout_serial scoutbase) + +# add_executable(test_can_msg test_can_msg.cpp) +# target_link_libraries(test_can_msg scoutbase) + +# add_executable(test_serial_parser test_serial_parser.cpp) +# target_link_libraries(test_serial_parser scoutbase) + diff --git a/src/hunter_sdk/hunter_base/tests/test_scout_base.cpp b/src/tracer_sdk/tracer_base/tests/test_tracer_base.cpp similarity index 100% rename from src/hunter_sdk/hunter_base/tests/test_scout_base.cpp rename to src/tracer_sdk/tracer_base/tests/test_tracer_base.cpp diff --git a/src/tracer_sdk/tracer_protocol/CMakeLists.txt b/src/tracer_sdk/tracer_protocol/CMakeLists.txt new file mode 100755 index 0000000..4cd60f3 --- /dev/null +++ b/src/tracer_sdk/tracer_protocol/CMakeLists.txt @@ -0,0 +1,9 @@ +## Add libraries +set(TRACER_PROTOCOL_SRC + src/tracer_can_parser.c +) +add_library(tracer_protocol STATIC ${TRACER_PROTOCOL_SRC}) +target_include_directories(tracer_protocol PUBLIC + $ + $ + PRIVATE src) \ No newline at end of file diff --git a/src/tracer_sdk/tracer_protocol/include/tracer_protocol/tracer_can_parser.h b/src/tracer_sdk/tracer_protocol/include/tracer_protocol/tracer_can_parser.h new file mode 100644 index 0000000..ecc8401 --- /dev/null +++ b/src/tracer_sdk/tracer_protocol/include/tracer_protocol/tracer_can_parser.h @@ -0,0 +1,42 @@ +/* + * tracer_can_parser.h + * + * Created on: Apr 14, 2020 10:52 + * Description: + * + * Copyright (c) 2020 Ruixiang Du (rdu) + */ + +#ifndef TRACER_CAN_PARSER_H +#define TRACER_CAN_PARSER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#include "tracer_protocol/tracer_protocol.h" + +#ifdef __linux__ +#include +#else +struct can_frame +{ + uint32_t can_id; + uint8_t can_dlc; + uint8_t data[8]__attribute__((aligned(8))); +}; +#endif + +bool DecodeTracerMsgFromCAN(const struct can_frame *rx_frame, TracerMessage *msg); +void EncodeTracerMsgToCAN(const TracerMessage *msg, struct can_frame *tx_frame); + +uint8_t CalcTracerCANChecksum(uint16_t id, uint8_t *data, uint8_t dlc); + +#ifdef __cplusplus +} +#endif + +#endif /* TRACER_CAN_PARSER_H */ diff --git a/src/tracer_sdk/tracer_protocol/include/tracer_protocol/tracer_protocol.h b/src/tracer_sdk/tracer_protocol/include/tracer_protocol/tracer_protocol.h new file mode 100644 index 0000000..de5e0bf --- /dev/null +++ b/src/tracer_sdk/tracer_protocol/include/tracer_protocol/tracer_protocol.h @@ -0,0 +1,259 @@ +/* + * tracer_protocol.h + * + * Created on: Apr 14, 2020 10:34 + * Description: + * + * Copyright (c) 2020 Ruixiang Du (rdu) + */ + +#ifndef TRACER_PROTOCOL_H +#define TRACER_PROTOCOL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define TRACER_CMD_BUF_LEN 32 +#define TRACER_STATUS_BUF_LEN 32 +#define TRACER_FRAME_SIZE 13 + +#define TRACER_MOTOR1_ID ((uint8_t)0x00) +#define TRACER_MOTOR2_ID ((uint8_t)0x01) + +// CAN Definitions +#define CAN_MSG_MOTION_CMD_ID ((uint32_t)0x130) +#define CAN_MSG_MOTION_STATUS_ID ((uint32_t)0x131) +#define CAN_MSG_LIGHT_CONTROL_CMD_ID ((uint32_t)0x140) +#define CAN_MSG_LIGHT_CONTROL_STATUS_ID ((uint32_t)0x141) +#define CAN_MSG_SYSTEM_STATUS_STATUS_ID ((uint32_t)0x151) +#define CAN_MSG_MOTOR1_DRIVER_STATUS_ID ((uint32_t)0x201) +#define CAN_MSG_MOTOR2_DRIVER_STATUS_ID ((uint32_t)0x202) + +/*--------------------- Control/State Constants ------------------------*/ + +// Motion Control +#define CTRL_MODE_REMOTE ((uint8_t)0x00) +#define CTRL_MODE_CMD_CAN ((uint8_t)0x01) +#define CTRL_MODE_CMD_UART ((uint8_t)0x02) +#define CTRL_MODE_COMMANDED ((uint8_t)0x03) + +#define FAULT_CLR_NONE ((uint8_t)0x00) +#define FAULT_CLR_BAT_UNDER_VOL ((uint8_t)0x01) +#define FAULT_CLR_BAT_OVER_VOL ((uint8_t)0x02) +#define FAULT_CLR_MOTOR1_COMM ((uint8_t)0x03) +#define FAULT_CLR_MOTOR2_COMM ((uint8_t)0x04) +#define FAULT_CLR_MOTOR3_COMM ((uint8_t)0x05) +#define FAULT_CLR_MOTOR4_COMM ((uint8_t)0x06) +#define FAULT_CLR_MOTOR_DRV_OVERHEAT ((uint8_t)0x07) +#define FAULT_CLR_MOTOR_OVERCURRENT ((uint8_t)0x08) + +// Light Control +#define LIGHT_DISABLE_CTRL ((uint8_t)0x00) +#define LIGHT_ENABLE_CTRL ((uint8_t)0x01) + +#define LIGHT_MODE_CONST_OFF ((uint8_t)0x00) +#define LIGHT_MODE_CONST_ON ((uint8_t)0x01) +#define LIGHT_MODE_BREATH ((uint8_t)0x02) +#define LIGHT_MODE_CUSTOM ((uint8_t)0x03) + +// System Status Feedback +#define BASE_STATE_NORMAL ((uint8_t)0x00) +#define BASE_STATE_ESTOP ((uint8_t)0x01) +#define BASE_STATE_EXCEPTION ((uint8_t)0x02) + +#define FAULT_CAN_CHECKSUM_ERROR ((uint16_t)0x0100) +#define FAULT_FRONT_STEER_ENCODER_F ((uint16_t)0x0200) +#define FAULT_RC_SIGNAL_LOSS ((uint16_t)0x0400) +#define FAULT_HIGH_BYTE_RESERVED1 ((uint16_t)0x0800) +#define FAULT_HIGH_BYTE_RESERVED2 ((uint16_t)0x1000) +#define FAULT_HIGH_BYTE_RESERVED3 ((uint16_t)0x2000) +#define FAULT_HIGH_BYTE_RESERVED4 ((uint16_t)0x4000) +#define FAULT_HIGH_BYTE_RESERVED5 ((uint16_t)0x8000) + +#define FAULT_BAT_UNDER_VOL_F ((uint16_t)0x0001) +#define FAULT_BAT_OVER_VOL_F ((uint16_t)0x0002) +#define FAULT_MOTOR1_COMM_F ((uint16_t)0x0004) +#define FAULT_MOTOR2_COMM_F ((uint16_t)0x0008) +#define FAULT_RESERVED1 ((uint16_t)0x0010) +#define FAULT_RESERVED2 ((uint16_t)0x0020) +#define FAULT_MOTOR_DRV_OVERHEAT_F ((uint16_t)0x0040) +#define FAULT_MOTOR_OVERCURRENT_F ((uint16_t)0x0080) + +/*-------------------- Control/Feedback Messages -----------------------*/ + +/* No padding in the struct */ +// reference: https://stackoverflow.com/questions/3318410/pragma-pack-effect +#pragma pack(push, 1) + +// Note: id could be different for UART and CAN protocol + +// Motion Control +typedef struct { + union + { + struct + { + uint8_t control_mode; + uint8_t fault_clear_flag; + int8_t linear_velocity_cmd; + int8_t angular_velocity_cmd; + uint8_t reserved0; + uint8_t reserved1; + uint8_t count; + uint8_t checksum; + } cmd; + uint8_t raw[8]; + } data; +} MotionCmdMessage; + +typedef struct { + union + { + struct + { + struct + { + uint8_t high_byte; + uint8_t low_byte; + } linear_velocity; + struct + { + uint8_t high_byte; + uint8_t low_byte; + } angular_velocity; + uint8_t reserved0; + uint8_t reserved1; + uint8_t count; + uint8_t checksum; + } status; + uint8_t raw[8]; + } data; +} MotionStatusMessage; + +// System Status Feedback +typedef struct { + union + { + struct + { + uint8_t base_state; + uint8_t control_mode; + struct + { + uint8_t high_byte; + uint8_t low_byte; + } battery_voltage; + struct + { + uint8_t high_byte; + uint8_t low_byte; + } fault_code; + uint8_t count; + uint8_t checksum; + } status; + uint8_t raw[8]; + } data; +} SystemStatusMessage; + +// Light Control +typedef struct { + union + { + struct + { + uint8_t light_ctrl_enable; + uint8_t front_light_mode; + uint8_t front_light_custom; + uint8_t rear_light_mode; + uint8_t rear_light_custom; + uint8_t reserved0; + uint8_t count; + uint8_t checksum; + } cmd; + uint8_t raw[8]; + } data; +} LightControlMessage; + +typedef struct { + union + { + struct + { + uint8_t light_ctrl_enable; + uint8_t front_light_mode; + uint8_t front_light_custom; + uint8_t rear_light_mode; + uint8_t rear_light_custom; + uint8_t reserved0; + uint8_t count; + uint8_t checksum; + } status; + uint8_t raw[8]; + } data; +} LightStatusMessage; + +// Motor Driver Feedback +typedef struct +{ + uint8_t motor_id; + union { + struct + { + struct + { + uint8_t high_byte; + uint8_t low_byte; + } current; + struct + { + uint8_t high_byte; + uint8_t low_byte; + } rpm; + int8_t temperature; + uint8_t reserved0; + uint8_t count; + uint8_t checksum; + } status; + uint8_t raw[8]; + } data; +} MotorDriverStatusMessage; + +// For convenience to access status/control message +typedef enum +{ + TracerMsgNone = 0x00, + // status messages + TracerMotionStatusMsg = 0x01, + TracerLightStatusMsg = 0x02, + TracerSystemStatusMsg = 0x03, + TracerMotorDriverStatusMsg = 0x04, + // control messages + TracerMotionCmdMsg = 0x21, + TracerLightControlMsg = 0x22 +} TracerMsgType; + +typedef struct +{ + TracerMsgType type; + union { + // status messages + MotionStatusMessage motion_status_msg; + LightStatusMessage light_status_msg; + SystemStatusMessage system_status_msg; + MotorDriverStatusMessage motor_driver_status_msg; + // control messages + MotionCmdMessage motion_cmd_msg; + LightControlMessage light_control_msg; + } body; +} TracerMessage; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* TRACER_PROTOCOL_H */ diff --git a/src/tracer_sdk/tracer_protocol/src/tracer_can_parser.c b/src/tracer_sdk/tracer_protocol/src/tracer_can_parser.c new file mode 100644 index 0000000..1f9386f --- /dev/null +++ b/src/tracer_sdk/tracer_protocol/src/tracer_can_parser.c @@ -0,0 +1,118 @@ +/* + * tracer_can_parser.c + * + * Created on: Apr 14, 2020 10:35 + * Description: + * + * Copyright (c) 2020 Ruixiang Du (rdu) + */ + +#include "tracer_protocol/tracer_can_parser.h" + +#include "string.h" + +static void EncodeTracerMotionControlMsgToCAN(const MotionCmdMessage *msg, struct can_frame *tx_frame); + +bool DecodeTracerMsgFromCAN(const struct can_frame *rx_frame, TracerMessage *msg) +{ + msg->type = TracerMsgNone; + + switch (rx_frame->can_id) + { + // in the current implementation, both MsgType and can_frame include 8 * uint8_t + case CAN_MSG_MOTION_STATUS_ID: + { + msg->type = TracerMotionStatusMsg; + memcpy(msg->body.motion_status_msg.data.raw, rx_frame->data, rx_frame->can_dlc * sizeof(uint8_t)); + break; + } + case CAN_MSG_SYSTEM_STATUS_STATUS_ID: + { + msg->type = TracerSystemStatusMsg; + memcpy(msg->body.system_status_msg.data.raw, rx_frame->data, rx_frame->can_dlc * sizeof(uint8_t)); + break; + } + case CAN_MSG_MOTOR1_DRIVER_STATUS_ID: + { + msg->type = TracerMotorDriverStatusMsg; + msg->body.motor_driver_status_msg.motor_id = TRACER_MOTOR1_ID; + memcpy(msg->body.motor_driver_status_msg.data.raw, rx_frame->data, rx_frame->can_dlc * sizeof(uint8_t)); + break; + } + case CAN_MSG_MOTOR2_DRIVER_STATUS_ID: + { + msg->type = TracerMotorDriverStatusMsg; + msg->body.motor_driver_status_msg.motor_id = TRACER_MOTOR2_ID; + memcpy(msg->body.motor_driver_status_msg.data.raw, rx_frame->data, rx_frame->can_dlc * sizeof(uint8_t)); + break; + } + // in the current implementation, both MsgType and can_frame include 8 * uint8_t + case CAN_MSG_MOTION_CMD_ID: + { + msg->type = TracerMotionCmdMsg; + memcpy(msg->body.motion_cmd_msg.data.raw, rx_frame->data, rx_frame->can_dlc * sizeof(uint8_t)); + break; + } + default: + break; + } + + return true; +} + +void EncodeTracerMsgToCAN(const TracerMessage *msg, struct can_frame *tx_frame) +{ + switch (msg->type) + { + // in the current implementation, both MsgType and can_frame include 8 * uint8_t + case TracerMotionStatusMsg: + { + tx_frame->can_id = CAN_MSG_MOTION_STATUS_ID; + tx_frame->can_dlc = 8; + memcpy(tx_frame->data, msg->body.motion_status_msg.data.raw, tx_frame->can_dlc); + break; + } + case TracerSystemStatusMsg: + { + tx_frame->can_id = CAN_MSG_SYSTEM_STATUS_STATUS_ID; + tx_frame->can_dlc = 8; + memcpy(tx_frame->data, msg->body.system_status_msg.data.raw, tx_frame->can_dlc); + break; + } + case TracerMotorDriverStatusMsg: + { + if (msg->body.motor_driver_status_msg.motor_id == TRACER_MOTOR1_ID) + tx_frame->can_id = CAN_MSG_MOTOR1_DRIVER_STATUS_ID; + else if (msg->body.motor_driver_status_msg.motor_id == TRACER_MOTOR2_ID) + tx_frame->can_id = CAN_MSG_MOTOR2_DRIVER_STATUS_ID; + tx_frame->can_dlc = 8; + memcpy(tx_frame->data, msg->body.motor_driver_status_msg.data.raw, tx_frame->can_dlc); + break; + } + case TracerMotionCmdMsg: + { + EncodeTracerMotionControlMsgToCAN(&(msg->body.motion_cmd_msg), tx_frame); + break; + } + default: + break; + } + tx_frame->data[7] = CalcTracerCANChecksum(tx_frame->can_id, tx_frame->data, tx_frame->can_dlc); +} + +void EncodeTracerMotionControlMsgToCAN(const MotionCmdMessage *msg, struct can_frame *tx_frame) +{ + tx_frame->can_id = CAN_MSG_MOTION_CMD_ID; + tx_frame->can_dlc = 8; + memcpy(tx_frame->data, msg->data.raw, tx_frame->can_dlc); + tx_frame->data[7] = CalcTracerCANChecksum(tx_frame->can_id, tx_frame->data, tx_frame->can_dlc); +} + +uint8_t CalcTracerCANChecksum(uint16_t id, uint8_t *data, uint8_t dlc) +{ + uint8_t checksum = 0x00; + checksum = (uint8_t)(id & 0x00ff) + (uint8_t)(id >> 8) + dlc; + for (int i = 0; i < (dlc - 1); ++i) + checksum += data[i]; + return checksum; +} \ No newline at end of file