Skip to content

Commit 9d54c9c

Browse files
committed
Allow changing baud rate and increased json buffer
1 parent 0818342 commit 9d54c9c

File tree

5 files changed

+49
-14
lines changed

5 files changed

+49
-14
lines changed

data/index.html

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,13 @@ <h3 class="underline">New CAN Mapping</h3>
158158

159159
<div id="nodeid-div" class="control small-screen-hide">
160160
<label for="nodeid">Node ID:</label>
161-
<input id="nodeid" type="number" id="nodeid" step="1" min="1" max="63" value="1" onchange="ui.setNodeId(this.value)"/>
161+
<input id="nodeid" type="number" id="nodeid" step="1" min="1" max="63" value="1" onchange="ui.setNodeIdAndSpeed()"/>
162+
<label for="canspeed">Speed:</label>
163+
<select name="canspeed" id="canspeed" onchange="ui.setNodeIdAndSpeed()">
164+
<option value="0">125k</option>
165+
<option value="1">250k</option>
166+
<option value="2">500k</option>
167+
</select>
162168
</div>
163169
<!-- auto reload toggle -->
164170
<div id="auto-reload-toggle-div" class="control small-screen-hide">

data/ui.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,22 +157,24 @@ var ui = {
157157

158158
xmlhttp.onload = function()
159159
{
160-
document.getElementById("nodeid").value = this.responseText;
160+
document.getElementById("nodeid").value = this.responseText.split(',')[0];
161+
document.getElementById("canspeed").value = this.responseText.split(',')[1];
161162
}
162163

163164
xmlhttp.open("GET", "/nodeid", true);
164165
xmlhttp.send();
165166
},
166167

167-
setNodeId: function(id) {
168+
setNodeIdAndSpeed: function() {
168169
var xmlhttp = new XMLHttpRequest();
169170

170171
xmlhttp.onload = function()
171172
{
172-
document.getElementById("nodeid").value = this.responseText;
173+
document.getElementById("nodeid").value = this.responseText.split(',')[0];
174+
document.getElementById("canspeed").value = this.responseText.split(',')[1];
173175
}
174176

175-
xmlhttp.open("GET", "/nodeid?id=" + id, true);
177+
xmlhttp.open("GET", "/nodeid?id=" + document.getElementById("nodeid").value + "&canspeed=" + document.getElementById("canspeed").value, true);
176178
xmlhttp.send();
177179
},
178180

esp32-web-interface.ino

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -568,12 +568,18 @@ static void handleUpdate()
568568

569569
static void handleNodeId()
570570
{
571-
if(server.hasArg("id")) {
571+
if(server.hasArg("id") && server.hasArg("canspeed")) {
572572
int id = server.arg("id").toInt();
573-
OICan::Init(id);
573+
int speed = server.arg("canspeed").toInt();
574+
OICan::BaudRate baud = speed == 0 ? OICan::Baud125k : (speed == 1 ? OICan::Baud250k : OICan::Baud500k);
575+
OICan::Init(id, baud);
576+
}
577+
else if(server.hasArg("id")) {
578+
int id = server.arg("id").toInt();
579+
OICan::Init(id, OICan::Baud500k);
574580
}
575581

576-
server.send(200, "text/plain", String(OICan::GetNodeId()));
582+
server.send(200, "text/plain", String(OICan::GetNodeId()) + "," + String(OICan::GetBaudRate()));
577583
}
578584

579585
static void handleWifi()
@@ -686,7 +692,7 @@ void setup(void){
686692

687693
MDNS.begin(host);
688694

689-
OICan::Init(1);
695+
OICan::Init(1, OICan::Baud500k);
690696

691697
updater.setup(&server);
692698

src/oi_can.cpp

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ enum state { IDLE, ERROR, OBTAINSERIAL, OBTAIN_JSON };
6262
enum updstate { UPD_IDLE, SEND_MAGIC, SEND_SIZE, SEND_PAGE, CHECK_CRC, REQUEST_JSON };
6363

6464
static uint8_t _nodeId;
65+
static BaudRate baudRate;
6566
static state state;
6667
static updstate updstate;
6768
static uint32_t serial[4]; //contains id sum as well
@@ -328,7 +329,7 @@ int GetCurrentUpdatePage() {
328329
bool SendJson(WiFiClient client) {
329330
if (state != IDLE) return false;
330331

331-
DynamicJsonDocument doc(30000);
332+
DynamicJsonDocument doc(50000);
332333
twai_message_t rxframe;
333334

334335
File file = SPIFFS.open(jsonFileName, "r");
@@ -631,7 +632,11 @@ int GetNodeId() {
631632
return _nodeId;
632633
}
633634

634-
void Init(uint8_t nodeId) {
635+
BaudRate GetBaudRate() {
636+
return baudRate;
637+
}
638+
639+
void Init(uint8_t nodeId, BaudRate baud) {
635640
twai_general_config_t g_config = {
636641
.mode = TWAI_MODE_NORMAL,
637642
.tx_io = GPIO_NUM_25,
@@ -649,7 +654,22 @@ void Init(uint8_t nodeId) {
649654
twai_stop();
650655
twai_driver_uninstall();
651656

652-
twai_timing_config_t t_config = TWAI_TIMING_CONFIG_500KBITS();
657+
twai_timing_config_t t_config;
658+
baudRate = baud;
659+
660+
switch (baud)
661+
{
662+
case Baud125k:
663+
t_config = TWAI_TIMING_CONFIG_125KBITS();
664+
break;
665+
case Baud250k:
666+
t_config = TWAI_TIMING_CONFIG_250KBITS();
667+
break;
668+
case Baud500k:
669+
t_config = TWAI_TIMING_CONFIG_500KBITS();
670+
break;
671+
}
672+
653673
twai_filter_config_t f_config = {.acceptance_code = (uint32_t)(id << 5) | (uint32_t)(0x7de << 21),
654674
.acceptance_mask = 0x001F001F,
655675
.single_filter = false};

src/oi_can.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323

2424
namespace OICan {
2525
enum SetResult { Ok, UnknownIndex, ValueOutOfRange, CommError };
26+
enum BaudRate { Baud125k, Baud250k, Baud500k };
2627

27-
28-
void Init(uint8_t nodeId);
28+
void Init(uint8_t nodeId, BaudRate baud);
2929
void Loop();
3030
bool SendJson(WiFiClient c);
3131
void SendCanMapping(WiFiClient c);
@@ -38,6 +38,7 @@ String StreamValues(String names, int samples);
3838
int StartUpdate(String fileName);
3939
int GetCurrentUpdatePage();
4040
int GetNodeId();
41+
BaudRate GetBaudRate();
4142

4243
}
4344
#endif

0 commit comments

Comments
 (0)