Ejemplo n.º 1
0
    def test_simple_convert(self):
        c = CanFrameValueExtractor(0, 64)

        v = c.convert_frame(CanFrame("000", "00"))
        self.assertEqual(v, 0)

        v = c.convert_frame(self.deadbeef)
        self.assertEqual(v, 0xdeadbeefdeadbeef)
Ejemplo n.º 2
0
    def test_simple_convert_floats(self):
        c = CanFrameValueExtractor(0, 64, a=1.0)
        v = c.convert_frame(self.deadbeef)
        self.assertTrue(abs(v - float(0xdeadbeefdeadbeef)) < 1e-19)

        c = CanFrameValueExtractor(0, 64, a=10.0)
        v = c.convert_frame(self.deadbeef)
        self.assertTrue(abs((v/float(0xdeadbeefdeadbeef) - 10.0)) < 1e-19)
Ejemplo n.º 3
0
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 2
#
# RacePi is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with RacePi.  If not, see <http://www.gnu.org/licenses/>.

from racepi.can.data import CanFrameValueExtractor, CanFrame
from math import pi

# Focus RS Mk3 CAN converters
focus_rs_steering_angle_converter       = CanFrameValueExtractor(49, 15, a=(pi/0x1000))
focus_rs_steering_direction_converter   = CanFrameValueExtractor(32, 1)
focus_rs_tps_converter                  = CanFrameValueExtractor(6, 10, a=0.1)
focus_rs_rpm_converter                  = CanFrameValueExtractor(36, 12, a=2.0)
focus_rs_brake_pressure_converter       = CanFrameValueExtractor(24, 16, a=1e-3)
focus_rs_wheelspeed1_converter          = CanFrameValueExtractor(1, 15, a=1/307.0)
focus_rs_wheelspeed2_converter          = CanFrameValueExtractor(17, 15, a=1/307.0)
focus_rs_wheelspeed3_converter          = CanFrameValueExtractor(33, 15, a=1/307.0)
focus_rs_wheelspeed4_converter          = CanFrameValueExtractor(49, 15, a=1/307.0)

# Lotus Evora CAN converters
# import ctypes
# lotus_evora_s1_rpm_converter            = CanFrameValueExtractor(4, 12)
# lotus_evora_s1_tps_converter            = CanFrameValueExtractor(24, 8, a=100.0/0xFB)
# lotus_evora_s1_steering_angle_converter = CanFrameValueExtractor(0, 16, custom_transform=lambda v:
#                                    ctypes.c_short(((v & 0xff) << 8) + ((v & 0xff00) >> 8)).value / 10.0)
Ejemplo n.º 4
0
 def test_all_bits(self):
     c = CanFrameValueExtractor(0, 64)
     self.assertEqual(c.convert_frame(self.allbits), 0xffffffffffffffff)
     for i in range(63):
         c = CanFrameValueExtractor(i, 1)
         self.assertEqual(c.convert_frame(self.allbits), 1)
Ejemplo n.º 5
0
 def test_last_bit(self):
     for i in range(63):
         c = CanFrameValueExtractor(i, 1)
         self.assertEqual(c.convert_frame(self.lastbit), 1 if i == 63 else 0)
Ejemplo n.º 6
0
 def test_init(self):
     self.assertIsNotNone(CanFrameValueExtractor(1, 2))
Ejemplo n.º 7
0
 def test_ford_steering_direction_left(self):
     c = CanFrameValueExtractor(32, 1)
     self.assertEqual(0, c.convert_frame(self.sdl))
Ejemplo n.º 8
0
 def test_ford_tps_offset(self):
     c = CanFrameValueExtractor(4, 12, a=0.1, c=-1000.0)
     self.assertTrue(abs(c.convert_frame(self.zerotps) + 1000.0) < 1e-19)
     self.assertTrue(abs(c.convert_frame(self.fulltps) + 900.0) < 1e-19)
Ejemplo n.º 9
0
 def test_ford_tps(self):
     c = CanFrameValueExtractor(4, 12, a=0.1)
     self.assertTrue(abs(c.convert_frame(self.zerotps) - 0.0) < 1e-19)
     self.assertTrue(abs(c.convert_frame(self.fulltps)-100.0) < 1e-19)
Ejemplo n.º 10
0
    def test_simple_custom_transform(self):
        c = CanFrameValueExtractor(0, 64, custom_transform=lambda x: 0)
        self.assertEqual(c.convert_frame(self.deadbeef), 0)

        c = CanFrameValueExtractor(0, 64, custom_transform=lambda x: x-1)
        self.assertEqual(c.convert_frame(self.deadbeef), 0xdeadbeefdeadbeef - 1)
Ejemplo n.º 11
0
 def test_no_bits(self):
     c = CanFrameValueExtractor(0, 64)
     self.assertEqual(c.convert_frame(self.nobits), 0)
     for i in range(63):
         c = CanFrameValueExtractor(i, 1)
         self.assertEqual(c.convert_frame(self.nobits), 0)