Files
chrg/apps/chrg/applications/utils/chrg_pkg.c
T
2025-09-13 23:08:11 +08:00

56 lines
977 B
C

#include <string.h>
#include <rtthread.h>
#include "chrg_pkg.h"
#include "chrg_utils.h"
int chrg_pkg_encode (eIDX_ID id, rt_uint8_t cmd, rt_uint8_t *data_in,
rt_uint8_t len_in, rt_uint8_t *data_out, rt_uint16_t *len_out)
{
if ((RT_NULL == data_in)||(RT_NULL == data_out)||(0 == len_in)) {
return -1;
}
data_out[0] = 5+len_in;
data_out[1] = 0x00;
data_out[2] = id;
data_out[3] = cmd;
memcpy(&data_out[4], data_in, len_in);
data_out[len_in+4] = calc_crc8(data_out, len_in+4);
*len_out = 5+len_in;
return 0;
}
int chrg_pkg_decode (eIDX_ID id, rt_uint8_t *data)
{
return 0;
}
int chrg_pkg_send (eIDX_TTY idx, rt_uint8_t *data, rt_uint16_t len)
{
rt_ssize_t ret = -1;
struct chrg_tty_t *pTTY = RT_NULL;
switch (idx) {
case IDX_TTY_NORTH:
// pTTY = chrgnorth.tty;
break;
case IDX_TTY_SOUTH:
// pTTY = chrgsouth.tty;
break;
}
if ((RT_NULL != pTTY)&&(RT_NULL != pTTY->dev)) {
ret = rt_device_write(pTTY->dev, 0, data, len);
}
return ret;
}