forked from achamaikin/CCSModuleSW30Web
110 lines
2.6 KiB
C
110 lines
2.6 KiB
C
/*
|
||
* gbt_packet.c
|
||
*
|
||
* Created on: Jul 23, 2024
|
||
* Author: colorbass
|
||
*/
|
||
|
||
|
||
// GB/T Time Synchronization Packet
|
||
#include "main.h"
|
||
#include "soft_rtc.h"
|
||
#include "charger_gbt.h"
|
||
|
||
void GBT_SendCTS(){
|
||
|
||
uint8_t data[7];
|
||
unix_to_bcd(get_Current_Time(), data);
|
||
// data[0] = 0x00; //seconds
|
||
// data[1] = 0x30; //minutes
|
||
// data[2] = 0x23; //hours
|
||
// data[3] = 0x05; //days
|
||
// data[4] = 0x05; //month
|
||
// data[5] = 0x24; //years
|
||
// data[6] = 0x20; //centuries
|
||
|
||
J_SendPacket(0x000700, 6, 7, data);
|
||
}
|
||
|
||
//TODO
|
||
//GB/T Max Load Packet
|
||
void GBT_SendCML(){
|
||
// uint8_t data[8];
|
||
// data[0] = 0x94; //450V max output voltage
|
||
// data[1] = 0x11; //
|
||
// data[2] = 0xB0; //120V min output voltage
|
||
// data[3] = 0x04; //
|
||
// data[4] = 0xC4; //-150A maximum output current
|
||
// data[5] = 0x09; //
|
||
// data[6] = 0x8C; //-2A minimum output current
|
||
// data[7] = 0x0F; //
|
||
|
||
J_SendPacket(0x000800, 6, 8, (uint8_t*)&GBT_MaxLoad);
|
||
|
||
}
|
||
|
||
//GB/T Version packet
|
||
void GBT_SendCHM(){
|
||
uint8_t data[3];
|
||
data[0] = 0x01;
|
||
data[1] = 0x01;
|
||
data[2] = 0x00;
|
||
J_SendPacket(0x2600, 6, 3, data);
|
||
}
|
||
|
||
//TODO
|
||
//GB/T CRM Packet (state=BMS identified)
|
||
void GBT_SendCRM(uint8_t state){
|
||
// uint8_t data[8];
|
||
// data[0] = state; // 0x00 / 0xAA
|
||
// data[1] = 0x40; //TODO: Charger Number 123456
|
||
// data[2] = 0xE2;
|
||
// data[3] = 0x01;
|
||
// data[4] = 0x00;
|
||
// data[5] = 0x42; //TODO: location BFG
|
||
// data[6] = 0x46;
|
||
// data[7] = 0x47;
|
||
GBT_ChargerInfo.bmsIdentified = state;
|
||
J_SendPacket(0x100, 6, 8, (uint8_t *)&GBT_ChargerInfo);
|
||
}
|
||
|
||
//GB/T CRO packet (Charger ready)
|
||
void GBT_SendCRO(uint8_t state){
|
||
uint8_t data[1];
|
||
data[0] = state;
|
||
J_SendPacket(0xA00, 4, 1, data);
|
||
}
|
||
|
||
|
||
//TODO: Send measured voltage current
|
||
//GB/T CCS packet (Charger current status)
|
||
void GBT_SendCCS(){
|
||
// uint8_t data[8];
|
||
// data[0] = GBT_CurrPower.requestedVoltage; //
|
||
// data[1] = GBT_CurrPower.requestedVoltage>>8; //output voltage
|
||
// data[2] = GBT_CurrPower.requestedCurrent; //смещение 400а, границы
|
||
// //-400A = 0
|
||
// // 0A = 4000
|
||
// // -100A = 3000
|
||
// data[3] = GBT_CurrPower.requestedCurrent>>8; //TODO: current
|
||
// data[4] = GBT_StateTick()/60000; //charging time (min)
|
||
// data[5] = 0; //TODO: 255 min+
|
||
// data[6] = 0b11111101; //charging not permitted
|
||
// data[7] = 0xFF;
|
||
J_SendPacket(0x1200, 6, 8, (uint8_t *)&GBT_ChargerCurrentStatus);
|
||
}
|
||
|
||
//TODO: stop cause
|
||
// GB/T Charging Stop packet
|
||
void GBT_SendCST(){
|
||
uint8_t data[8];
|
||
data[0] = 0x04; // Artificially stop charging
|
||
data[1] = 0x00; //TODO: Cause stop
|
||
data[2] = 0xF0; //
|
||
data[3] = 0xF0; //
|
||
|
||
J_SendPacket(0x1A00, 4, 4, data);
|
||
}
|
||
|
||
//TODO CSD priority 6
|