Переглянути джерело

PWM value initialized back to 0 in battery.c, state slot enum packed in battery.h

namrota ghosh 7 місяців тому
батько
коміт
88d5e9cbe2
2 змінених файлів з 19 додано та 23 видалено
  1. 11 11
      src/battery_data/battery.c
  2. 8 12
      src/battery_data/battery.h

+ 11 - 11
src/battery_data/battery.c

@@ -7,33 +7,33 @@ BatteryInfo battery_data[NUM_SLOTS];
 void Battery_Init(){
     for(uint8_t i=0; i<NUM_SLOTS; i++){
         battery_data[i].slot_id = i;
-        battery_data[i].pwm_value= 10;
+        battery_data[i].pwm_value= 0;
         battery_data[i].charge_discharge= 0;
         battery_data[i].battery_state = STATE_EMPTY;
         battery_data[i].battery_measurement.voltage = 0;
         battery_data[i].battery_measurement.current = 0;
         battery_data[i].battery_measurement.temperature = 0;
         battery_data[i].battery_measurement.slot_state = SLOT_STATE_OK;
-        battery_data[i].battery_limits.min_voltage = 0;
-        battery_data[i].battery_limits.max_voltage = 0;
-        battery_data[i].battery_limits.cut_off_current = 0;
-        battery_data[i].battery_limits.capacitance = 0;
-        battery_data[i].battery_limits.charge_fraction = 0;
-        battery_data[i].batteryLimitRecieved= false;
+        battery_data[i].min_voltage = 0;
+        battery_data[i].max_voltage = 0;
+        battery_data[i].cut_off_current = 0;
+        battery_data[i].capacitance = 0;
+        battery_data[i].charge_fraction = 0;
+        battery_data[i].batteryLimitReceived= false;
     }
 }
 
 void Battery_ReadState(uint8_t slot_id){
-    if(battery_data[slot_id].battery_limits.min_voltage==0 &&
-       battery_data[slot_id].battery_limits.max_voltage==0 &&
-       battery_data[slot_id].battery_limits.cut_off_current==0){
+    if(battery_data[slot_id].min_voltage==0 &&
+       battery_data[slot_id].max_voltage==0 &&
+       battery_data[slot_id].cut_off_current==0){
         battery_data[slot_id].battery_state = STATE_WAITING_FOR_LIMITS;
     }
     else if(battery_data[slot_id].battery_measurement.voltage < BATTERY_THRESHOLD){
         battery_data[slot_id].battery_state = STATE_EMPTY;
     }
     else if((battery_data[slot_id].battery_measurement.voltage >= BATTERY_THRESHOLD) &&
-            (battery_data[slot_id].battery_measurement.voltage < battery_data[slot_id].battery_limits.min_voltage)){
+            (battery_data[slot_id].battery_measurement.voltage < battery_data[slot_id].min_voltage)){
         battery_data[slot_id].battery_state = STATE_BATTERY_DETECTED;
     }
     else if(battery_data[slot_id].battery_measurement.temperature > TEMPERATURE_MAX_C){

+ 8 - 12
src/battery_data/battery.h

@@ -21,8 +21,8 @@ typedef enum{
 
 } BatteryState;
 
-//Battery Discharge Safety Check
-typedef enum __attribute((packed))__{
+//Battery Discharge Safety Check: it is unpacked on the target side making a difference in the size of the struct, changing it to unpacked
+typedef enum __attribute__((packed)){
     SLOT_STATE_OK= 0x00,
     SLOT_STATE_SOV= 0x01,
     SLOT_ERR_HOV= (0x02 | 0x80),
@@ -52,22 +52,18 @@ typedef struct{
     SlotState slot_state;
 }BatteryMeasurement;
 
-typedef struct __attribute__((packed)){
-    uint16_t min_voltage;
-    uint16_t max_voltage;
-    uint8_t cut_off_current;
-    uint16_t capacitance;
-    uint8_t charge_fraction;
-} BatteryLimits;
-
 typedef struct{
     uint8_t slot_id;
     uint16_t pwm_value; //for Power Burning PWM
     int16_t charge_discharge;
     BatteryState battery_state;
     BatteryMeasurement battery_measurement;
-    BatteryLimits battery_limits;
-    bool batteryLimitRecieved;
+    uint16_t min_voltage;
+    uint16_t max_voltage;
+    uint8_t cut_off_current;
+    uint16_t capacitance;
+    uint8_t charge_fraction;
+    bool batteryLimitReceived;
 } BatteryInfo;
 
 extern BatteryInfo battery_data[NUM_SLOTS];