i2c_target.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef I2C_TARGET_H
  2. #define I2C_TARGET_H
  3. #include <stdbool.h>
  4. #include "battery.h"
  5. // I2C command codes
  6. #define CMD_GET_BATTERY_STATUS 0x01 // Request battery state
  7. #define CMD_GET_BATTERY_DATA 0x02 // Request battery data
  8. #define CMD_SET_BATTERY_LIMIT 0x03 // SET min/max voltage, cutoff current limits
  9. //Maximum packet sizes
  10. #define I2C_TX_MAX_PACKET_SIZE_PI (16)
  11. #define I2C_RX_MAX_PACKET_SIZE_PI (16)
  12. //Flag for READ and WRITE
  13. extern volatile bool piRxComplete;
  14. extern volatile bool piTxComplete;
  15. extern uint8_t piTxPacket[I2C_TX_MAX_PACKET_SIZE_PI];
  16. extern uint8_t piRxPacket[I2C_RX_MAX_PACKET_SIZE_PI];
  17. /*Counters for Tx and Rx length and bytes sent*/
  18. extern uint32_t piTxLen, piTxCount;
  19. extern uint32_t piRxLen, piRxCount;
  20. //Structure for Battery Data Message (GET battery data)
  21. typedef struct{
  22. uint8_t slot_id;
  23. uint16_t voltage;
  24. uint16_t current;
  25. uint16_t temperature;
  26. } BatteryData;
  27. //SET Battery Limit
  28. typedef struct{
  29. uint8_t slot_id;
  30. uint16_t min_voltage;
  31. uint16_t max_voltage;
  32. uint16_t cut_off_current;
  33. uint16_t capacitance;
  34. uint16_t charge_fraction;
  35. } BatteryLimitMsg;
  36. //void I2C_Init();
  37. //void ProcessI2Ccommand();
  38. void Battery_StateUpdate();
  39. #endif