Files
chrg/apps/chrg/applications/utils/chrg_source.c
T
2025-09-03 22:00:08 +08:00

93 lines
1.4 KiB
C

#include <rtthread.h>
#include "chrg_source.h"
#include "chrg_north.h"
#include "chrg_utils.h"
void source_get_vc (rt_uint16_t vol, rt_uint16_t cur)
{
rt_size_t len = 0;
rt_uint8_t data[12] = {0};
data[0] = 0x0B;
data[1] = 0x00;
data[2] = ID_SOURCE;
data[3] = SRC_CMD_GET_VOLTAGE;
u16_to_u8v(vol, &data[4]);
u16_to_u8v(cur, &data[6]);
data[8] = 0x00;
data[9] = 0x00;
data[10] = calc_crc8(data, 10);
len = 0x0B;
chrg_north_send(data, len);
}
void source_get_pd (void)
{
rt_size_t len = 0;
rt_uint8_t data[8] = {0};
data[0] = 0x05;
data[1] = 0x00;
data[2] = ID_SOURCE;
data[3] = SRC_CMD_GET_PROTOCOL;
data[4] = calc_crc8(data, 4);
len = 0x05;
chrg_north_send(data, len);
}
void source_set_cc_lvl (rt_uint8_t lvl)
{
rt_size_t len = 0;
rt_uint8_t data[8] = {0};
data[0] = 0x06;
data[1] = 0x00;
data[2] = ID_SOURCE;
data[3] = SRC_CMD_SET_CC_LEVEL;
data[4] = lvl;
data[5] = calc_crc8(data, 5);
len = 0x06;
chrg_north_send(data, len);
}
void source_set_pd (rt_uint8_t pro, rt_uint8_t src, rt_uint8_t pps,
rt_uint16_t vmax, rt_uint16_t vmin, rt_int16_t max_cur)
{
rt_size_t len = 0;
rt_uint8_t data[16] = {0};
data[0] = 0x0B;
data[1] = 0x00;
data[2] = ID_SOURCE;
data[3] = SRC_CMD_SET_PROTOCOL;
data[4] = pro;
data[5] = src;
data[6] = pps;
u16_to_u8v(vmax, &data[7]);
u16_to_u8v(vmin, &data[9]);
u16_to_u8v(max_cur, &data[11]);
data[13] = calc_crc8(data, 13);
len = 0x0E;
chrg_north_send(data, len);
}