Jelajahi Sumber

controller GET BATTERY MEASUREMENT logic has been updated

namrota ghosh 6 bulan lalu
induk
melakukan
863a0ac608
1 mengubah file dengan 8 tambahan dan 4 penghapusan
  1. 8 4
      src/controller/controller.c

+ 8 - 4
src/controller/controller.c

@@ -43,7 +43,7 @@ void controller_SetCurrent(uint8_t slot_id, int16_t current_mA){
     if(timeout==0){
         printf("Tx transmit not completed");
     }
-    printf("STATUS ***SetCurrent successful for slot %d with current %d mA***\n", slot_id, current_mA);
+    printf("STATUS ***SetCurrent successful for slot %d with current %d mA, target_address:0x%02X\n", slot_id, current_mA, target_address);
 
 }
 
@@ -95,7 +95,7 @@ bool getBatteryMeasurement(uint8_t slot_id){
     //Dynamic addressing:
 
     uint8_t target_address= TARGET_BASE_ADDRESS + ((slot_id & 0b00000100) >> 2);
-    //printf("Target Address 0x%02X \n", target_address);
+    printf("Target Address 0x%02X \n", target_address);
     
     //Enable the Interrupt:
     DL_I2C_enableInterrupt(I2C_1_INST, DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER);
@@ -151,6 +151,10 @@ bool getBatteryMeasurement(uint8_t slot_id){
     //Make RX Buffer ready to receive the data
     //DL_I2C_flushControllerRXFIFO(I2C_1_INST);
     
+    // Clear any garbage
+    memset(rxPacket.rxBuffer, 0, sizeof(rxPacket.rxBuffer));
+    
+    DL_I2C_enableInterrupt(I2C_1_INST, DL_I2C_INTERRUPT_CONTROLLER_RXFIFO_TRIGGER);
     
     while (DL_I2C_getControllerStatus(I2C_1_INST) & DL_I2C_CONTROLLER_STATUS_BUSY)
     ;
@@ -168,13 +172,13 @@ bool getBatteryMeasurement(uint8_t slot_id){
         printf("Rx transmit not completed");
     }
     
-    DL_I2C_enableInterrupt(I2C_1_INST, DL_I2C_INTERRUPT_CONTROLLER_RXFIFO_TRIGGER);
+    
     
     measurement.voltage= rxPacket.rxBuffer[0] | (rxPacket.rxBuffer[1] << 8);
     measurement.current= rxPacket.rxBuffer[2]|(rxPacket.rxBuffer[3] << 8);
     measurement.temperature = rxPacket.rxBuffer[4] | (rxPacket.rxBuffer[5] << 8);
     measurement.slot_state = (SlotState)(rxPacket.rxBuffer[6]);
-    DL_I2C_flushControllerRXFIFO(I2C_1_INST);
+    //DL_I2C_flushControllerRXFIFO(I2C_1_INST);
     //Storing the measurements in Battery structure:
     battery_data[slot_id].battery_measurement= measurement;