roll south mb

This commit is contained in:
wmano
2025-10-26 22:05:19 +08:00
parent 604fe4688c
commit 8b6f231b28
23 changed files with 1053 additions and 550 deletions
+101
View File
@@ -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;
}