def test_car_battery_integration_lower_limit(self, hw_type):
     POWER_DRAW = 4
     with pm_patch("HARDWARE.get_current_power_draw", POWER_DRAW):
         pm = PowerMonitoring()
         pm.car_battery_capacity_uWh = 1000
         for _ in range(TEST_DURATION_S + 1):
             pm.calculate(self.mock_peripheralState(hw_type), False)
         estimated_capacity = 0 - ((1 / 3600) * POWER_DRAW * 1e6)
         self.assertLess(
             abs(pm.get_car_battery_capacity() - estimated_capacity), 10)
 def test_car_battery_integration_upper_limit(self, hw_type):
     POWER_DRAW = 4
     with pm_patch("HARDWARE.get_current_power_draw", POWER_DRAW):
         pm = PowerMonitoring()
         pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh - 1000
         for _ in range(TEST_DURATION_S + 1):
             pm.calculate(self.mock_peripheralState(hw_type), True)
         estimated_capacity = CAR_BATTERY_CAPACITY_uWh + (
             CAR_CHARGING_RATE_W / 3600 * 1e6)
         self.assertLess(
             abs(pm.get_car_battery_capacity() - estimated_capacity), 10)
 def test_car_battery_integration_onroad(self, hw_type):
     POWER_DRAW = 4
     with pm_patch("HARDWARE.get_current_power_draw", POWER_DRAW):
         pm = PowerMonitoring()
         pm.car_battery_capacity_uWh = 0
         for _ in range(TEST_DURATION_S + 1):
             pm.calculate(self.mock_peripheralState(hw_type), True)
         expected_capacity = ((TEST_DURATION_S / 3600) *
                              CAR_CHARGING_RATE_W * 1e6)
         self.assertLess(
             abs(pm.get_car_battery_capacity() - expected_capacity), 10)
Exemplo n.º 4
0
 def test_car_battery_integration_upper_limit(self, hw_type):
   BATT_VOLTAGE = 4
   BATT_CURRENT = 1
   with pm_patch("get_battery_voltage", BATT_VOLTAGE * 1e6), pm_patch("get_battery_current", BATT_CURRENT * 1e6), \
   pm_patch("get_battery_status", "Discharging"):
     pm = PowerMonitoring()
     pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh - 1000
     for _ in range(TEST_DURATION_S + 1):
       pm.calculate(self.mock_health(True, hw_type))
     estimated_capacity = CAR_BATTERY_CAPACITY_uWh + (CAR_CHARGING_RATE_W / 3600 * 1e6)
     self.assertLess(abs(pm.get_car_battery_capacity() - estimated_capacity), 10)
 def test_car_battery_integration_offroad(self, hw_type):
     POWER_DRAW = 4
     with pm_patch("HARDWARE.get_current_power_draw", POWER_DRAW):
         pm = PowerMonitoring()
         pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh
         for _ in range(TEST_DURATION_S + 1):
             pm.calculate(self.mock_peripheralState(hw_type), False)
         expected_capacity = CAR_BATTERY_CAPACITY_uWh - (
             (TEST_DURATION_S / 3600) * POWER_DRAW * 1e6)
         self.assertLess(
             abs(pm.get_car_battery_capacity() - expected_capacity), 10)
Exemplo n.º 6
0
 def test_car_battery_integration_lower_limit(self, hw_type):
   BATT_VOLTAGE = 4
   BATT_CURRENT = 1
   with pm_patch("get_battery_voltage", BATT_VOLTAGE * 1e6), pm_patch("get_battery_current", BATT_CURRENT * 1e6), \
   pm_patch("get_battery_status", "Discharging"):
     pm = PowerMonitoring()
     pm.car_battery_capacity_uWh = 1000
     for _ in range(TEST_DURATION_S + 1):
       pm.calculate(self.mock_health(False, hw_type))
     estimated_capacity = 0 - ((1/3600) * (BATT_VOLTAGE * BATT_CURRENT) * 1e6)
     self.assertLess(abs(pm.get_car_battery_capacity() - estimated_capacity), 10)
Exemplo n.º 7
0
 def test_car_battery_integration_onroad(self, hw_type):
   BATT_VOLTAGE = 4
   BATT_CURRENT = 1
   with pm_patch("get_battery_voltage", BATT_VOLTAGE * 1e6), pm_patch("get_battery_current", BATT_CURRENT * 1e6), \
   pm_patch("get_battery_status", "Discharging"):
     pm = PowerMonitoring()
     pm.car_battery_capacity_uWh = 0
     for _ in range(TEST_DURATION_S + 1):
       pm.calculate(self.mock_health(True, hw_type))
     expected_capacity = ((TEST_DURATION_S/3600) * CAR_CHARGING_RATE_W * 1e6)
     self.assertLess(abs(pm.get_car_battery_capacity() - expected_capacity), 10)
Exemplo n.º 8
0
 def test_car_battery_integration_offroad(self, hw_type):
   BATT_VOLTAGE = 4
   BATT_CURRENT = 1
   with pm_patch("get_battery_voltage", BATT_VOLTAGE * 1e6), pm_patch("get_battery_current", BATT_CURRENT * 1e6), \
   pm_patch("get_battery_status", "Discharging"):
     pm = PowerMonitoring()
     pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh
     for _ in range(TEST_DURATION_S + 1):
       pm.calculate(self.mock_health(False, hw_type))
     expected_capacity = CAR_BATTERY_CAPACITY_uWh - ((TEST_DURATION_S/3600) * (BATT_VOLTAGE * BATT_CURRENT) * 1e6)
     self.assertLess(abs(pm.get_car_battery_capacity() - expected_capacity), 10)
Exemplo n.º 9
0
 def test_ignition(self):
   global ssb
   BATT_VOLTAGE = 4
   BATT_CURRENT = 0 # To stop shutting down for other reasons
   TEST_TIME = 100
   with pm_patch("get_battery_voltage", BATT_VOLTAGE * 1e6), pm_patch("get_battery_current", BATT_CURRENT * 1e6), \
   pm_patch("get_battery_status", "Discharging"):
     pm = PowerMonitoring()
     pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh
     health = self.mock_health(True, log.HealthData.HwType.uno, car_voltage=(VBATT_PAUSE_CHARGING - 1))
     for i in range(TEST_TIME):
       pm.calculate(health)
       if i % 10 == 0:
         self.assertFalse(pm.should_disable_charging(health, ssb))
     self.assertFalse(pm.should_disable_charging(health, ssb))
Exemplo n.º 10
0
 def test_car_voltage(self, hw_type):
   global ssb
   BATT_VOLTAGE = 4
   BATT_CURRENT = 0 # To stop shutting down for other reasons
   TEST_TIME = 100
   with pm_patch("HARDWARE.get_battery_voltage", BATT_VOLTAGE * 1e6), pm_patch("HARDWARE.get_battery_current", BATT_CURRENT * 1e6), \
   pm_patch("HARDWARE.get_battery_status", "Discharging"), pm_patch("HARDWARE.get_current_power_draw", None):
     pm = PowerMonitoring()
     pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh
     health = self.mock_health(False, hw_type, car_voltage=(VBATT_PAUSE_CHARGING - 1))
     for i in range(TEST_TIME):
       pm.calculate(health)
       if i % 10 == 0:
         self.assertEqual(pm.should_disable_charging(health, ssb), (pm.car_voltage_mV < VBATT_PAUSE_CHARGING*1e3))
     self.assertTrue(pm.should_disable_charging(health, ssb))
Exemplo n.º 11
0
 def test_ignition(self):
     POWER_DRAW = 0  # To stop shutting down for other reasons
     TEST_TIME = 100
     with pm_patch("HARDWARE.get_current_power_draw", POWER_DRAW):
         pm = PowerMonitoring()
         pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh
         ignition = True
         peripheralState = self.mock_peripheralState(
             log.PandaState.PandaType.uno,
             car_voltage=(VBATT_PAUSE_CHARGING - 1))
         for i in range(TEST_TIME):
             pm.calculate(peripheralState, ignition)
             if i % 10 == 0:
                 self.assertFalse(
                     pm.should_disable_charging(ignition, True, ssb))
         self.assertFalse(pm.should_disable_charging(ignition, True, ssb))
Exemplo n.º 12
0
 def test_max_time_offroad(self, hw_type):
   global ssb
   BATT_VOLTAGE = 4
   BATT_CURRENT = 0 # To stop shutting down for other reasons
   MOCKED_MAX_OFFROAD_TIME = 3600
   with pm_patch("get_battery_voltage", BATT_VOLTAGE * 1e6), pm_patch("get_battery_current", BATT_CURRENT * 1e6), \
   pm_patch("get_battery_status", "Discharging"), pm_patch("MAX_TIME_OFFROAD_S", MOCKED_MAX_OFFROAD_TIME, constant=True):
     pm = PowerMonitoring()
     pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh
     start_time = ssb
     health = self.mock_health(False, hw_type)
     while ssb <= start_time + MOCKED_MAX_OFFROAD_TIME:
       pm.calculate(health)
       if (ssb - start_time) % 1000 == 0 and ssb < start_time + MOCKED_MAX_OFFROAD_TIME:
         self.assertFalse(pm.should_disable_charging(health, start_time))
     self.assertTrue(pm.should_disable_charging(health, start_time))
Exemplo n.º 13
0
 def test_disable_power_down(self):
     global ssb
     BATT_VOLTAGE = 4
     BATT_CURRENT = 0  # To stop shutting down for other reasons
     TEST_TIME = 100
     params.put("DisablePowerDown", b"1")
     with pm_patch("HARDWARE.get_battery_voltage", BATT_VOLTAGE * 1e6), pm_patch("HARDWARE.get_battery_current", BATT_CURRENT * 1e6), \
     pm_patch("HARDWARE.get_battery_status", "Discharging"), pm_patch("HARDWARE.get_current_power_draw", None):
         pm = PowerMonitoring()
         pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh
         health = self.mock_health(False,
                                   log.HealthData.PandaType.uno,
                                   car_voltage=(VBATT_PAUSE_CHARGING - 1))
         for i in range(TEST_TIME):
             pm.calculate(health)
             if i % 10 == 0:
                 self.assertFalse(pm.should_disable_charging(health, ssb))
         self.assertFalse(pm.should_disable_charging(health, ssb))
Exemplo n.º 14
0
    def test_harness_connection(self):
        BATT_VOLTAGE = 4
        BATT_CURRENT = 0  # To stop shutting down for other reasons
        TEST_TIME = 100
        with pm_patch("HARDWARE.get_battery_voltage", BATT_VOLTAGE * 1e6), pm_patch("HARDWARE.get_battery_current", BATT_CURRENT * 1e6), \
        pm_patch("HARDWARE.get_battery_status", "Discharging"), pm_patch("HARDWARE.get_current_power_draw", None):
            pm = PowerMonitoring()
            pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh

            ignition = False
            peripheralState = self.mock_peripheralState(
                log.PandaState.PandaType.uno,
                car_voltage=(VBATT_PAUSE_CHARGING - 1))
            for i in range(TEST_TIME):
                pm.calculate(peripheralState, ignition)
                if i % 10 == 0:
                    self.assertFalse(
                        pm.should_disable_charging(ignition, False, ssb))
            self.assertFalse(pm.should_disable_charging(ignition, False, ssb))
Exemplo n.º 15
0
 def test_max_time_offroad(self, hw_type):
     MOCKED_MAX_OFFROAD_TIME = 3600
     with pm_patch("MAX_TIME_OFFROAD_S",
                   MOCKED_MAX_OFFROAD_TIME,
                   constant=True), pm_patch(
                       "HARDWARE.get_current_power_draw", None):
         pm = PowerMonitoring()
         pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh
         start_time = ssb
         ignition = False
         peripheralState = self.mock_peripheralState(hw_type)
         while ssb <= start_time + MOCKED_MAX_OFFROAD_TIME:
             pm.calculate(peripheralState, ignition)
             if (
                     ssb - start_time
             ) % 1000 == 0 and ssb < start_time + MOCKED_MAX_OFFROAD_TIME:
                 self.assertFalse(
                     pm.should_disable_charging(ignition, True, start_time))
         self.assertTrue(
             pm.should_disable_charging(ignition, True, start_time))
Exemplo n.º 16
0
 def test_max_time_offroad(self, hw_type):
     BATT_VOLTAGE = 4
     BATT_CURRENT = 0  # To stop shutting down for other reasons
     MOCKED_MAX_OFFROAD_TIME = 3600
     with pm_patch("HARDWARE.get_battery_voltage", BATT_VOLTAGE * 1e6), pm_patch("HARDWARE.get_battery_current", BATT_CURRENT * 1e6), \
     pm_patch("HARDWARE.get_battery_status", "Discharging"), pm_patch("MAX_TIME_OFFROAD_S", MOCKED_MAX_OFFROAD_TIME, constant=True), \
     pm_patch("HARDWARE.get_current_power_draw", None):
         pm = PowerMonitoring()
         pm.car_battery_capacity_uWh = CAR_BATTERY_CAPACITY_uWh
         start_time = ssb
         ignition = False
         peripheralState = self.mock_peripheralState(hw_type)
         while ssb <= start_time + MOCKED_MAX_OFFROAD_TIME:
             pm.calculate(peripheralState, ignition)
             if (
                     ssb - start_time
             ) % 1000 == 0 and ssb < start_time + MOCKED_MAX_OFFROAD_TIME:
                 self.assertFalse(
                     pm.should_disable_charging(ignition, True, start_time))
         self.assertTrue(
             pm.should_disable_charging(ignition, True, start_time))