93 lines
1.4 KiB
C
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);
|
|
}
|
|
|
|
|
|
|
|
|
|
|