| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #ifndef I2C_TARGET_H
- #define I2C_TARGET_H
- #include <stdbool.h>
- #include "battery.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
- //Maximum packet sizes
- #define I2C_TX_MAX_PACKET_SIZE_PI (16)
- #define I2C_RX_MAX_PACKET_SIZE_PI (16)
- //Flag for READ and WRITE
- extern volatile bool piRxComplete;
- extern volatile bool piTxComplete;
- extern uint8_t piTxPacket[I2C_TX_MAX_PACKET_SIZE_PI];
- extern uint8_t piRxPacket[I2C_RX_MAX_PACKET_SIZE_PI];
- /*Counters for Tx and Rx length and bytes sent*/
- extern uint32_t piTxLen, piTxCount;
- extern uint32_t piRxLen, piRxCount;
- //Structure for Battery Data Message (GET battery data)
- typedef struct{
- uint8_t slot_id;
- uint16_t voltage;
- uint16_t current;
- uint16_t temperature;
- } BatteryData;
- //SET Battery Limit
- typedef struct{
- uint8_t slot_id;
- uint16_t min_voltage;
- uint16_t max_voltage;
- uint16_t cut_off_current;
- uint16_t capacitance;
- uint16_t charge_fraction;
- } BatteryLimitMsg;
- //void I2C_Init();
- //void ProcessI2Ccommand();
- void Battery_StateUpdate();
- #endif
|