i2c_target.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. } BatteryLimitMsg;
  35. //void I2C_Init();
  36. //void ProcessI2Ccommand();
  37. void Battery_StateUpdate(uint8_t slot_id);
  38. #endif