Преглед на файлове

Read battery state and Read Battery Measurement working

namrota ghosh преди 7 месеца
родител
ревизия
64e6a5fd49
променени са 2 файла, в които са добавени 21 реда и са изтрити 4 реда
  1. 14 3
      src/pi/i2c_pi_target.c
  2. 7 1
      src/pi/i2c_pi_target.h

+ 14 - 3
src/pi/i2c_pi_target.c

@@ -21,16 +21,27 @@ void pi_i2c_mcu(){
     }
     //bitmasked GET command:
     else if((receivedCommand & 0xF0)== 0x20){
+        
         //Get Battery Measurement data: Voltage, Current, Tempertaure
         uint8_t requestedSlot = receivedCommand & 0x0F;
+        BatteryData battery_measure;
+
         if(requestedSlot >= NUM_SLOTS){
             DL_I2C_flushTargetRXFIFO(I2C_0_INST);
             return;
         }
         //Check for the requested slot and get the battery measurement data
-        BatteryMeasurement *measurement = &battery_data[requestedSlot].battery_measurement;
-        //memcpy(tx_packet.txBuffer, &battery->battery_measurement, sizeof(BatteryMeasurement));
-        DL_I2C_fillTargetTXFIFO(I2C_0_INST, (uint8_t *)measurement, sizeof(BatteryMeasurement));
+        BatteryInfo *battery = &battery_data[requestedSlot];
+        /*tx_packet.txBuffer[0] = battery->battery_measurement.voltage;
+        tx_packet.txBuffer[1] = battery->battery_measurement.current;
+        tx_packet.txBuffer[2] = battery->battery_measurement.temperature;
+        tx_packet.txBuffer[3] = battery->battery_measurement.slot_state;*/
+        battery_measure.slot_id= battery->slot_id;
+        battery_measure.voltage= battery->battery_measurement.voltage;
+        battery_measure.current= battery->battery_measurement.current;
+        battery_measure.temperature= battery->battery_measurement.temperature;
+        DL_I2C_fillTargetTXFIFO(I2C_0_INST, (uint8_t *)&battery_measure, sizeof(BatteryData));
+        printf("Battery Measurement Sent. \n");
         DL_I2C_flushTargetTXFIFO(I2C_0_INST);
 
     }

+ 7 - 1
src/pi/i2c_pi_target.h

@@ -2,13 +2,19 @@
 #define I2C_PI_TARGET_H
 
 #include <stdbool.h>
-
+#include <stdint.h>
 
 // I2C command codes
 #define CMD_GET_BATTERY_STATUS        0x01       // Request battery state
 #define CMD_GET_BATTERY_DATA          0x02       // Request battery data
 #define CMD_SET_BATTERY_LIMIT         0x03       // SET min/max voltage, cutoff current limits
 
+typedef struct __attribute__((packed)){
+    uint8_t slot_id;
+    uint16_t voltage;
+    int16_t current;
+    uint16_t temperature;
+} BatteryData;
 
 void pi_i2c_mcu();