Skip to content

Commit 034026f

Browse files
committed
restore JK BMS dummy implementation
broke in be41e6b. was unusable as the complete type of DummySerial has to be available in the JK BMS controller header when defining the unique_ptr managing the dummy instance. this problem is solved by moving the whole dummy class into its own header.
1 parent 5e3a53d commit 034026f

File tree

3 files changed

+197
-189
lines changed

3 files changed

+197
-189
lines changed

include/JkBmsController.h

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include "Battery.h"
88
#include "JkBmsSerialMessage.h"
9+
#include "JkBmsDummy.h"
910

1011
//#define JKBMS_DUMMY_SERIAL
1112

include/JkBmsDummy.h

+196
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
#pragma once
2+
3+
#include <Arduino.h>
4+
#include <vector>
5+
#include "MessageOutput.h"
6+
7+
namespace JkBms {
8+
9+
class DummySerial {
10+
public:
11+
DummySerial() = default;
12+
void begin(uint32_t, uint32_t, int8_t, int8_t) {
13+
MessageOutput.println("JK BMS Dummy Serial: begin()");
14+
}
15+
void end() { MessageOutput.println("JK BMS Dummy Serial: end()"); }
16+
void flush() { }
17+
bool availableForWrite() const { return true; }
18+
size_t write(const uint8_t *buffer, size_t size) {
19+
MessageOutput.printf("JK BMS Dummy Serial: write(%d Bytes)\r\n", size);
20+
_byte_idx = 0;
21+
_msg_idx = (_msg_idx + 1) % _data.size();
22+
return size;
23+
}
24+
bool available() const {
25+
return _byte_idx < _data[_msg_idx].size();
26+
}
27+
int read() {
28+
if (_byte_idx >= _data[_msg_idx].size()) { return 0; }
29+
return _data[_msg_idx][_byte_idx++];
30+
}
31+
32+
private:
33+
std::vector<std::vector<uint8_t>> const _data =
34+
{
35+
{
36+
0x4e, 0x57, 0x01, 0x21, 0x00, 0x00, 0x00, 0x00,
37+
0x06, 0x00, 0x01, 0x79, 0x30, 0x01, 0x0c, 0xfb,
38+
0x02, 0x0c, 0xfb, 0x03, 0x0c, 0xfb, 0x04, 0x0c,
39+
0xfb, 0x05, 0x0c, 0xfb, 0x06, 0x0c, 0xfb, 0x07,
40+
0x0c, 0xfb, 0x08, 0x0c, 0xf7, 0x09, 0x0d, 0x01,
41+
0x0a, 0x0c, 0xf9, 0x0b, 0x0c, 0xfb, 0x0c, 0x0c,
42+
0xfb, 0x0d, 0x0c, 0xfb, 0x0e, 0x0c, 0xf8, 0x0f,
43+
0x0c, 0xf9, 0x10, 0x0c, 0xfb, 0x80, 0x00, 0x1a,
44+
0x81, 0x00, 0x12, 0x82, 0x00, 0x12, 0x83, 0x14,
45+
0xc3, 0x84, 0x83, 0xf4, 0x85, 0x2e, 0x86, 0x02,
46+
0x87, 0x00, 0x15, 0x89, 0x00, 0x00, 0x13, 0x52,
47+
0x8a, 0x00, 0x10, 0x8b, 0x00, 0x00, 0x8c, 0x00,
48+
0x03, 0x8e, 0x16, 0x80, 0x8f, 0x12, 0xc0, 0x90,
49+
0x0e, 0x10, 0x91, 0x0c, 0xda, 0x92, 0x00, 0x05,
50+
0x93, 0x0b, 0xb8, 0x94, 0x0c, 0x80, 0x95, 0x00,
51+
0x05, 0x96, 0x01, 0x2c, 0x97, 0x00, 0x28, 0x98,
52+
0x01, 0x2c, 0x99, 0x00, 0x28, 0x9a, 0x00, 0x1e,
53+
0x9b, 0x0b, 0xb8, 0x9c, 0x00, 0x0a, 0x9d, 0x01,
54+
0x9e, 0x00, 0x64, 0x9f, 0x00, 0x50, 0xa0, 0x00,
55+
0x64, 0xa1, 0x00, 0x64, 0xa2, 0x00, 0x14, 0xa3,
56+
0x00, 0x46, 0xa4, 0x00, 0x46, 0xa5, 0x00, 0x00,
57+
0xa6, 0x00, 0x02, 0xa7, 0xff, 0xec, 0xa8, 0xff,
58+
0xf6, 0xa9, 0x10, 0xaa, 0x00, 0x00, 0x00, 0xe6,
59+
0xab, 0x01, 0xac, 0x01, 0xad, 0x04, 0x4d, 0xae,
60+
0x01, 0xaf, 0x00, 0xb0, 0x00, 0x0a, 0xb1, 0x14,
61+
0xb2, 0x32, 0x32, 0x31, 0x31, 0x38, 0x37, 0x00,
62+
0x00, 0x00, 0x00, 0xb3, 0x00, 0xb4, 0x62, 0x65,
63+
0x6b, 0x69, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x32,
64+
0x33, 0x30, 0x36, 0xb6, 0x00, 0x01, 0x4a, 0xc3,
65+
0xb7, 0x31, 0x31, 0x2e, 0x58, 0x57, 0x5f, 0x53,
66+
0x31, 0x31, 0x2e, 0x32, 0x36, 0x32, 0x48, 0x5f,
67+
0xb8, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xe6, 0xba,
68+
0x62, 0x65, 0x6b, 0x69, 0x00, 0x00, 0x00, 0x00,
69+
0x00, 0x00, 0x00, 0x00, 0x4a, 0x4b, 0x5f, 0x42,
70+
0x31, 0x41, 0x32, 0x34, 0x53, 0x31, 0x35, 0x50,
71+
0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00,
72+
0x00, 0x53, 0xbb
73+
},
74+
{
75+
0x4e, 0x57, 0x01, 0x21, 0x00, 0x00, 0x00, 0x00,
76+
0x06, 0x00, 0x01, 0x79, 0x30, 0x01, 0x0c, 0xc0,
77+
0x02, 0x0c, 0xc1, 0x03, 0x0c, 0xc0, 0x04, 0x0c,
78+
0xc4, 0x05, 0x0c, 0xc4, 0x06, 0x0c, 0xc2, 0x07,
79+
0x0c, 0xc2, 0x08, 0x0c, 0xc1, 0x09, 0x0c, 0xba,
80+
0x0a, 0x0c, 0xc1, 0x0b, 0x0c, 0xc2, 0x0c, 0x0c,
81+
0xc2, 0x0d, 0x0c, 0xc2, 0x0e, 0x0c, 0xc4, 0x0f,
82+
0x0c, 0xc2, 0x10, 0x0c, 0xc1, 0x80, 0x00, 0x1b,
83+
0x81, 0x00, 0x1b, 0x82, 0x00, 0x1a, 0x83, 0x14,
84+
0x68, 0x84, 0x03, 0x70, 0x85, 0x3c, 0x86, 0x02,
85+
0x87, 0x00, 0x19, 0x89, 0x00, 0x00, 0x16, 0x86,
86+
0x8a, 0x00, 0x10, 0x8b, 0x00, 0x00, 0x8c, 0x00,
87+
0x07, 0x8e, 0x16, 0x80, 0x8f, 0x12, 0xc0, 0x90,
88+
0x0e, 0x10, 0x91, 0x0c, 0xda, 0x92, 0x00, 0x05,
89+
0x93, 0x0b, 0xb8, 0x94, 0x0c, 0x80, 0x95, 0x00,
90+
0x05, 0x96, 0x01, 0x2c, 0x97, 0x00, 0x28, 0x98,
91+
0x01, 0x2c, 0x99, 0x00, 0x28, 0x9a, 0x00, 0x1e,
92+
0x9b, 0x0b, 0xb8, 0x9c, 0x00, 0x0a, 0x9d, 0x01,
93+
0x9e, 0x00, 0x64, 0x9f, 0x00, 0x50, 0xa0, 0x00,
94+
0x64, 0xa1, 0x00, 0x64, 0xa2, 0x00, 0x14, 0xa3,
95+
0x00, 0x46, 0xa4, 0x00, 0x46, 0xa5, 0x00, 0x00,
96+
0xa6, 0x00, 0x02, 0xa7, 0xff, 0xec, 0xa8, 0xff,
97+
0xf6, 0xa9, 0x10, 0xaa, 0x00, 0x00, 0x00, 0xe6,
98+
0xab, 0x01, 0xac, 0x01, 0xad, 0x04, 0x4d, 0xae,
99+
0x01, 0xaf, 0x00, 0xb0, 0x00, 0x0a, 0xb1, 0x14,
100+
0xb2, 0x32, 0x32, 0x31, 0x31, 0x38, 0x37, 0x00,
101+
0x00, 0x00, 0x00, 0xb3, 0x00, 0xb4, 0x62, 0x65,
102+
0x6b, 0x69, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x32,
103+
0x33, 0x30, 0x36, 0xb6, 0x00, 0x01, 0x7f, 0x2a,
104+
0xb7, 0x31, 0x31, 0x2e, 0x58, 0x57, 0x5f, 0x53,
105+
0x31, 0x31, 0x2e, 0x32, 0x36, 0x32, 0x48, 0x5f,
106+
0xb8, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xe6, 0xba,
107+
0x62, 0x65, 0x6b, 0x69, 0x00, 0x00, 0x00, 0x00,
108+
0x00, 0x00, 0x00, 0x00, 0x4a, 0x4b, 0x5f, 0x42,
109+
0x31, 0x41, 0x32, 0x34, 0x53, 0x31, 0x35, 0x50,
110+
0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00,
111+
0x00, 0x4f, 0xc1
112+
},
113+
{
114+
0x4e, 0x57, 0x01, 0x21, 0x00, 0x00, 0x00, 0x00,
115+
0x06, 0x00, 0x01, 0x79, 0x30, 0x01, 0x0c, 0x13,
116+
0x02, 0x0c, 0x12, 0x03, 0x0c, 0x0f, 0x04, 0x0c,
117+
0x15, 0x05, 0x0c, 0x0d, 0x06, 0x0c, 0x13, 0x07,
118+
0x0c, 0x16, 0x08, 0x0c, 0x13, 0x09, 0x0b, 0xdb,
119+
0x0a, 0x0b, 0xf6, 0x0b, 0x0c, 0x17, 0x0c, 0x0b,
120+
0xf5, 0x0d, 0x0c, 0x16, 0x0e, 0x0c, 0x1a, 0x0f,
121+
0x0c, 0x1b, 0x10, 0x0c, 0x1c, 0x80, 0x00, 0x18,
122+
0x81, 0x00, 0x18, 0x82, 0x00, 0x18, 0x83, 0x13,
123+
0x49, 0x84, 0x00, 0x00, 0x85, 0x00, 0x86, 0x02,
124+
0x87, 0x00, 0x23, 0x89, 0x00, 0x00, 0x20, 0x14,
125+
0x8a, 0x00, 0x10, 0x8b, 0x00, 0x08, 0x8c, 0x00,
126+
0x05, 0x8e, 0x16, 0x80, 0x8f, 0x12, 0xc0, 0x90,
127+
0x0e, 0x10, 0x91, 0x0c, 0xda, 0x92, 0x00, 0x05,
128+
0x93, 0x0b, 0xb8, 0x94, 0x0c, 0x80, 0x95, 0x00,
129+
0x05, 0x96, 0x01, 0x2c, 0x97, 0x00, 0x28, 0x98,
130+
0x01, 0x2c, 0x99, 0x00, 0x28, 0x9a, 0x00, 0x1e,
131+
0x9b, 0x0b, 0xb8, 0x9c, 0x00, 0x0a, 0x9d, 0x01,
132+
0x9e, 0x00, 0x64, 0x9f, 0x00, 0x50, 0xa0, 0x00,
133+
0x64, 0xa1, 0x00, 0x64, 0xa2, 0x00, 0x14, 0xa3,
134+
0x00, 0x46, 0xa4, 0x00, 0x46, 0xa5, 0x00, 0x00,
135+
0xa6, 0x00, 0x02, 0xa7, 0xff, 0xec, 0xa8, 0xff,
136+
0xf6, 0xa9, 0x10, 0xaa, 0x00, 0x00, 0x00, 0xe6,
137+
0xab, 0x01, 0xac, 0x01, 0xad, 0x04, 0x4d, 0xae,
138+
0x01, 0xaf, 0x00, 0xb0, 0x00, 0x0a, 0xb1, 0x14,
139+
0xb2, 0x32, 0x32, 0x31, 0x31, 0x38, 0x37, 0x00,
140+
0x00, 0x00, 0x00, 0xb3, 0x00, 0xb4, 0x62, 0x65,
141+
0x6b, 0x69, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x32,
142+
0x33, 0x30, 0x36, 0xb6, 0x00, 0x02, 0x17, 0x10,
143+
0xb7, 0x31, 0x31, 0x2e, 0x58, 0x57, 0x5f, 0x53,
144+
0x31, 0x31, 0x2e, 0x32, 0x36, 0x32, 0x48, 0x5f,
145+
0xb8, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xe6, 0xba,
146+
0x62, 0x65, 0x6b, 0x69, 0x00, 0x00, 0x00, 0x00,
147+
0x00, 0x00, 0x00, 0x00, 0x4a, 0x4b, 0x5f, 0x42,
148+
0x31, 0x41, 0x32, 0x34, 0x53, 0x31, 0x35, 0x50,
149+
0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00,
150+
0x00, 0x45, 0xce
151+
},
152+
{
153+
0x4e, 0x57, 0x01, 0x21, 0x00, 0x00, 0x00, 0x00,
154+
0x06, 0x00, 0x01, 0x79, 0x30, 0x01, 0x0c, 0x07,
155+
0x02, 0x0c, 0x0a, 0x03, 0x0c, 0x0b, 0x04, 0x0c,
156+
0x08, 0x05, 0x0c, 0x05, 0x06, 0x0c, 0x0b, 0x07,
157+
0x0c, 0x07, 0x08, 0x0c, 0x0a, 0x09, 0x0c, 0x08,
158+
0x0a, 0x0c, 0x06, 0x0b, 0x0c, 0x0a, 0x0c, 0x0c,
159+
0x05, 0x0d, 0x0c, 0x0a, 0x0e, 0x0c, 0x0a, 0x0f,
160+
0x0c, 0x0a, 0x10, 0x0c, 0x0a, 0x80, 0x00, 0x06,
161+
0x81, 0x00, 0x03, 0x82, 0x00, 0x03, 0x83, 0x13,
162+
0x40, 0x84, 0x00, 0x00, 0x85, 0x29, 0x86, 0x02,
163+
0x87, 0x00, 0x01, 0x89, 0x00, 0x00, 0x01, 0x0a,
164+
0x8a, 0x00, 0x10, 0x8b, 0x02, 0x00, 0x8c, 0x00,
165+
0x02, 0x8e, 0x16, 0x80, 0x8f, 0x10, 0x40, 0x90,
166+
0x0e, 0x10, 0x91, 0x0d, 0xde, 0x92, 0x00, 0x05,
167+
0x93, 0x0a, 0x28, 0x94, 0x0a, 0x5a, 0x95, 0x00,
168+
0x05, 0x96, 0x01, 0x2c, 0x97, 0x00, 0x28, 0x98,
169+
0x01, 0x2c, 0x99, 0x00, 0x28, 0x9a, 0x00, 0x1e,
170+
0x9b, 0x0b, 0xb8, 0x9c, 0x00, 0x0a, 0x9d, 0x01,
171+
0x9e, 0x00, 0x5a, 0x9f, 0x00, 0x50, 0xa0, 0x00,
172+
0x64, 0xa1, 0x00, 0x64, 0xa2, 0x00, 0x14, 0xa3,
173+
0x00, 0x37, 0xa4, 0x00, 0x37, 0xa5, 0x00, 0x03,
174+
0xa6, 0x00, 0x05, 0xa7, 0xff, 0xec, 0xa8, 0xff,
175+
0xf6, 0xa9, 0x10, 0xaa, 0x00, 0x00, 0x00, 0xe6,
176+
0xab, 0x01, 0xac, 0x01, 0xad, 0x04, 0x4d, 0xae,
177+
0x01, 0xaf, 0x00, 0xb0, 0x00, 0x0a, 0xb1, 0x14,
178+
0xb2, 0x32, 0x32, 0x31, 0x31, 0x38, 0x37, 0x00,
179+
0x00, 0x00, 0x00, 0xb3, 0x00, 0xb4, 0x62, 0x65,
180+
0x6b, 0x69, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x32,
181+
0x33, 0x30, 0x36, 0xb6, 0x00, 0x03, 0xb7, 0x2d,
182+
0xb7, 0x31, 0x31, 0x2e, 0x58, 0x57, 0x5f, 0x53,
183+
0x31, 0x31, 0x2e, 0x32, 0x36, 0x32, 0x48, 0x5f,
184+
0xb8, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xe6, 0xba,
185+
0x62, 0x65, 0x6b, 0x69, 0x00, 0x00, 0x00, 0x00,
186+
0x00, 0x00, 0x00, 0x00, 0x4a, 0x4b, 0x5f, 0x42,
187+
0x31, 0x41, 0x32, 0x34, 0x53, 0x31, 0x35, 0x50,
188+
0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00,
189+
0x00, 0x41, 0x7b
190+
}
191+
};
192+
size_t _msg_idx = 0;
193+
size_t _byte_idx = 0;
194+
};
195+
196+
} /* namespace JkBms */

0 commit comments

Comments
 (0)