roll south mb
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
|
||||
#include <rtthread.h>
|
||||
|
||||
#include "chrg_south.h"
|
||||
#include "chrg_eload.h"
|
||||
#include "chrg_utils.h"
|
||||
|
||||
int chrg_eload_read_regs (rt_uint8_t addr, rt_uint16_t reg, rt_uint16_t len)
|
||||
{
|
||||
rt_uint8_t buf[8] = {0};
|
||||
rt_uint16_t crc = 0;
|
||||
|
||||
buf[0] = addr;
|
||||
buf[1] = MB_REGISTER_RD;
|
||||
u16_to_u8v(reg, &buf[2]);
|
||||
u16_to_u8v(len, &buf[4]);
|
||||
crc = mb_crc16(buf, 6);
|
||||
u16_to_u8v(crc, &buf[6]);
|
||||
|
||||
return chrg_south_send(buf, 8);
|
||||
}
|
||||
|
||||
int chrg_eload_write_reg (rt_uint8_t addr, rt_uint16_t reg, rt_uint16_t value)
|
||||
{
|
||||
rt_uint8_t buf[8] = {0};
|
||||
rt_uint16_t crc = 0;
|
||||
|
||||
buf[0] = addr;
|
||||
buf[1] = MB_REGISTER_WR;
|
||||
u16_to_u8v(reg, &buf[2]);
|
||||
u16_to_u8v(value, &buf[4]);
|
||||
crc = mb_crc16(buf, 6);
|
||||
u16_to_u8v(crc, &buf[6]);
|
||||
|
||||
return chrg_south_send(buf, 8);
|
||||
}
|
||||
|
||||
int chrg_eload_refresh (rt_uint8_t addr, rt_uint8_t part)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (0 == part) {
|
||||
chrg_eload_read_regs(addr, REG_TEMPERATUE, SIZE_P1_RD); // reg 112~123
|
||||
} else if (1 == part) {
|
||||
chrg_eload_read_regs(addr, REG_STA1, SIZE_P2_RD); // reg 0~39
|
||||
} else if (2 == part) {
|
||||
chrg_eload_read_regs(addr, REG_LIMIT_VOL, SIZE_P3_RD); // reg 40~63
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int chrg_eload_parse (rt_uint8_t idx, rt_uint8_t pt, rt_uint8_t *data, rt_uint16_t len)
|
||||
{
|
||||
if (idx >= TOTAL_SOU_CHS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct chrg_eload_t *pLOAD = &chrgsouth.eload[idx];
|
||||
|
||||
switch (pt) {
|
||||
case MB_R_PART1: {
|
||||
if ((SIZE_P1_RD*2+5) != len) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct eload_p1_t *pP1 = (struct eload_p1_t *)&data[3];
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case MB_R_PART2: {
|
||||
if ((SIZE_P2_RD*2+5) != len) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct eload_p2_t *pP2 = (struct eload_p2_t *)&data[3];
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case MB_R_PART3: {
|
||||
if ((SIZE_P3_RD*2+5) != len) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct eload_p3_t *pP3 = (struct eload_p3_t *)&data[3];
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user