4#include "AMSInterface.h"
59 unsigned long starting_millis = millis();
60 unsigned long starting_micros = micros();
61 SysTick_s starting_tick;
62 starting_tick.millis = starting_millis;
63 starting_tick.micros = starting_micros;
67 interface.
init(starting_tick);
71 CAN_message_t em_measurements_can, bms_voltages_can;
84 tick_zero.millis = starting_millis + 5000;
85 tick_zero.micros = starting_micros + 1000000;
88 interface.
tick(tick_zero);
91 TEST_ASSERT_EQUAL_FLOAT(75.0, interface.
get_SoC());
98 tick_one.millis = tick_zero.millis + 10;
99 tick_one.micros = tick_zero.micros + 10000;
104 interface.
tick(tick_one);
105 TEST_ASSERT_EQUAL_FLOAT(74.9994855, interface.
get_SoC());
111 tick_two.millis = tick_zero.millis + 10 + 20;
112 tick_two.micros = tick_zero.micros + 10000 + 20000;
120 interface.
tick(tick_two);
121 TEST_ASSERT_EQUAL_FLOAT(74.9974279f, interface.
get_SoC());
130 for (
int i = 0; i <= 10000000; i += 20000) {
132 curr_tick.millis = tick_zero.millis + 10 + 20 + i/1000;
133 curr_tick.micros = tick_zero.micros + 10000 + 20000 + i;
134 interface.
tick(curr_tick);
140 TEST_ASSERT_EQUAL_FLOAT(73.9686f, interface.
get_SoC());
147 unsigned long starting_millis = millis();
148 unsigned long starting_micros = micros();
149 SysTick_s starting_tick;
150 starting_tick.millis = starting_millis;
151 starting_tick.micros = starting_micros;
155 interface.
init(starting_tick);
159 CAN_message_t acu_measurements_can, bms_voltages_can;
167 acu_measurements_can =
generate_can_msg_from_uint_16s(2372, HYTECH_pack_filtered_read_ro_toS(0.0), HYTECH_ts_out_filtered_read_ro_toS(0.0), 0,
false);
174 tick_zero.millis = starting_millis + 5000;
175 tick_zero.micros = starting_micros + 1000000;
178 interface.
tick(tick_zero);
180 TEST_ASSERT_EQUAL_FLOAT(75.0, interface.
get_SoC());
187 tick_one.millis = tick_zero.millis + 10;
188 tick_one.micros = tick_zero.micros + 10000;
193 interface.
tick(tick_one);
194 TEST_ASSERT_EQUAL_FLOAT(74.9994855, interface.
get_SoC());
200 tick_two.millis = tick_zero.millis + 10 + 20;
201 tick_two.micros = tick_zero.micros + 10000 + 20000;
203 acu_measurements_can =
generate_can_msg_from_uint_16s(2458, HYTECH_pack_filtered_read_ro_toS(0.0), HYTECH_ts_out_filtered_read_ro_toS(0.0), 0,
false);
209 interface.
tick(tick_two);
210 TEST_ASSERT_EQUAL_FLOAT(74.9974279f, interface.
get_SoC());
216 acu_measurements_can =
generate_can_msg_from_uint_16s(2457, HYTECH_pack_filtered_read_ro_toS(0.0), HYTECH_ts_out_filtered_read_ro_toS(0.0), 0,
false);
219 for (
int i = 0; i <= 10000000; i += 20000) {
221 curr_tick.millis = tick_zero.millis + 10 + 20 + i/1000;
222 curr_tick.micros = tick_zero.micros + 10000 + 20000 + i;
223 interface.
tick(curr_tick);
229 TEST_ASSERT_EQUAL_FLOAT(73.9686f, interface.
get_SoC());
CAN_message_t generate_can_msg_from_uint_32s(uint32_t first, uint32_t second, bool use_little_endian)
CAN_message_t generate_can_msg_from_uint_16s(uint16_t first, uint16_t second, uint16_t third, uint16_t fourth, bool use_little_endian)
void test_initialize_charge()
void test_calculate_SoC_em()
CANBufferType CAN_BUFFER_CC_TESTS
void test_calculate_SoC_acu()
Circular_Buffer< uint8_t,(uint32_t) 128, sizeof(CAN_message_t)> CANBufferType
this class is for interfacing with the AMS (accumulator management system)
void tick(const SysTick_s &tick)
void retrieve_current_shunt_CAN(const CAN_message_t &can_msg)
void init(SysTick_s &initial_tick)
BMS_VOLTAGES_t get_bms_voltages()
void retrieve_voltage_CAN(CAN_message_t &recvd_msg)
float initialize_charge()
void retrieve_em_measurement_CAN(CAN_message_t &can_msg)
void set_use_em_for_soc(bool new_use_em_for_soc)