27float targetOTGVoltage = 0.0;
40 _registerMap[bq25713::MANUFACTURER_ID_ADDR] = std::make_unique<ManufacturerId>();
41 _registerMap[bq25713::DEVICE_ID_ADDR] = std::make_unique<DeviceId>();
44 _registerMap[bq25713::CHARGE_OPTION_0_ADDR] = std::make_unique<Register>();
45 _registerMap[bq25713::CHARGE_OPTION_1_ADDR] = std::make_unique<Register>();
46 _registerMap[bq25713::CHARGE_OPTION_2_ADDR] = std::make_unique<Register>();
47 _registerMap[bq25713::CHARGE_OPTION_3_ADDR] = std::make_unique<Register>();
49 _registerMap[bq25713::ADC_OPTION_ADDR] = std::make_unique<AdcOption_Register>();
50 _registerMap[bq25713::PROCHOT_STATUS_ADDR] = std::make_unique<Register>();
52 _registerMap[bq25713::PROCHOT_OPTION_0_ADDR] = std::make_unique<Register>();
53 _registerMap[bq25713::PROCHOT_OPTION_1_ADDR] = std::make_unique<Register>();
56 _registerMap[bq25713::CHARGE_STATUS_ADDR] = std::make_unique<ChargerStatus_Register>();
58 _registerMap[bq25713::VBAT_ADC_ADDR] = std::make_unique<VBAT_ADC_Register>();
59 _registerMap[bq25713::CHARGE_CURRENT_ADDR] = std::make_unique<Register>();
60 _registerMap[bq25713::MAX_CHARGE_VOLTAGE_ADDR] = std::make_unique<Register>();
61 _registerMap[bq25713::MINIMUM_SYSTEM_VOLTAGE_ADDR] = std::make_unique<Register>();
62 _registerMap[bq25713::OTG_VOLTAGE_ADDR] = std::make_unique<OTG_Register>();
63 _registerMap[bq25713::OTG_CURRENT_ADDR] = std::make_unique<Register>();
64 _registerMap[bq25713::INPUT_VOLTAGE_ADDR] = std::make_unique<Register>();
65 _registerMap[bq25713::IIN_HOST_ADDR] = std::make_unique<Register>();
66 _registerMap[bq25713::IIN_DPM_ADDR] = std::make_unique<Register>();
68 _registerMap[bq25713::ADC_VBUS_PSYS_ADC_ADDR] = std::make_unique<AdcVbusPsys_Register>();
69 _registerMap[bq25713::ADC_IBAT_ADDR] = std::make_unique<Register>();
70 _registerMap[bq25713::CMPIN_ADC_ADDR] = std::make_unique<Register>();
73 void run_electrical_update()
override
78 const uint16_t chargeOption3 = _registerMap[bq25713::CHARGE_OPTION_3_ADDR]->read();
81 const uint8_t val0 = chargeOption3 & 0xff;
82 const uint8_t val1 = (chargeOption3 >> 8) & 0xff;
84 if ((val1 & (1 << 0x04)) != 0 && __private::enableOTG.is_high())
86 mock_electrical::chargeOtgOutput = targetOTGVoltage;
90 mock_electrical::chargeOtgOutput = 0;
95 uint8_t get_i2c_address()
const override {
return bq25713::BQ25713::BQ25713addr; }
107 (::lampda::lmpd_constrain<uint16_t>(val, reg->minVal(), reg->maxVal()) - reg->minVal()) / reg->resolution();
109 uint16_t valR = (valC & reg->mask()) << reg->offset();
116 res >>= reg->offset();
119 return res * reg->resolution() + reg->minVal();
122 static uint16_t encode_to_double_register(
const uint16_t val0,
127 uint8_t val0R = (std::max<uint16_t>(val0, reg->minVal0()) - reg->minVal0()) / reg->resolutionVal0();
128 uint8_t val1R = (std::max<uint16_t>(val1, reg->minVal1()) - reg->minVal1()) / reg->resolutionVal1();
130 uint16_t result = (val1R & reg->maskVal1()) << 8 | (val0R & reg->maskVal0());
134 struct ChargerStatus_Register :
public Register
136 uint16_t read()
override
145 return val1 << 8 | val0;
149 struct AdcOption_Register :
public Register
151 uint16_t read()
override
158 return val1 << 8 | val0;
162 struct OTG_Register :
public Register
164 int write(uint16_t data)
override
166 const uint16_t decoded = decode_base_register_value(data, &IcRegisters.oTGVoltage);
169 targetOTGVoltage = (decoded + (IcRegisters.chargeOption3.OTG_RANGE_LOW() ? 0 : 1280) + 154) / 1000.0;
176 struct AdcVbusPsys_Register :
public Register
178 uint16_t read()
override
180 return encode_to_double_register(
181 mock_battery::voltage * 1000.0, mock_electrical::powerRailVoltage * 1000.0, &IcRegisters.aDCVBUSPSYS);
186 struct VBAT_ADC_Register :
public Register
188 uint16_t read()
override
190 return encode_to_double_register(
191 mock_battery::voltage * 1000.0, mock_battery::voltage * 1000.0, &IcRegisters.aDCVSYSVBAT);
195 struct ManufacturerId :
public Register
197 uint16_t read()
override {
return bq25713::MANUFACTURER_ID; }
202 uint16_t read()
override {
return bq25713::DEVICE_ID; }
Definition: BQ25713_mock.h:33
Interface for the platform specific GeneralPurposeInputOutputs.
Handle the physical simulation paremeters of a real lamp.
Electrical simulation interface with the electrical simulator.
Simulator dedicated namespace.
Definition: BQ25713_mock.h:24
Definition: BQ25713.h:121
Definition: BQ25713.h:195
Definition: BQ25713.h:242
Convertion header to use the text out functions from C code.