Firmware support or user instructions for jdy-33 fix #3944

This commit is contained in:
rusefillc 2022-03-10 17:01:25 -05:00
parent 628e5c1f44
commit 23514b7e5c
1 changed files with 16 additions and 5 deletions

View File

@ -26,7 +26,7 @@ static const char *commands[5];
static int numCommands = 0;
static int setBaudIdx = -1;
static char cmdHello[5];
static char cmdHello[30];
static char cmdBaud[25];
static char cmdName[30];
static char cmdPin[16];
@ -51,6 +51,7 @@ static void runCommands() {
if (!btProcessIsStarted)
return;
efiPrintf("Sleeping...");
chThdSleepMilliseconds(1000); // safety
// Store current serial port speed - we're going to change it
@ -80,25 +81,34 @@ static void runCommands() {
// change the port speed
engineConfiguration->tunerStudioSerialSpeed = restoreAndExit ? savedSerialSpeed : baudRates[baudIdx];
efiPrintf("Restarting at %d", engineConfiguration->tunerStudioSerialSpeed);
tsChannel->start(engineConfiguration->tunerStudioSerialSpeed);
chThdSleepMilliseconds(10); // safety
prevBaudIdx = baudIdx;
} else {
efiPrintf("Running at %d", engineConfiguration->tunerStudioSerialSpeed);
}
// exit if all commands were sent
if (restoreAndExit)
break;
const char * command = commands[cmdIdx];
efiPrintf("Sending %s", command);
// send current command
tsChannel->write((uint8_t*)commands[cmdIdx], strlen(commands[cmdIdx]));
tsChannel->write((uint8_t*)command, strlen(command));
// waiting for an answer
bool wasAnswer = false;
if (tsChannel->readTimeout(buffer, 2, btModuleTimeout) == 2) {
int received = tsChannel->readTimeout(buffer, 2, btModuleTimeout);
if (received == 2) {
wasAnswer = (buffer[0] == 'O' && buffer[1] == 'K') ||
(buffer[0] == '+' && (buffer[1] >= 'A' && buffer[1] <= 'Z'));
}
efiPrintf("received %d byte(s) %d [%c][%c]", received, wasAnswer, buffer[0], buffer[1]);
// wait 1 second and skip all remaining response bytes from the bluetooth module
while (true) {
@ -123,11 +133,12 @@ static void runCommands() {
}
// the connection is already restored to the current baud rate, so print the result
if (cmdIdx == numCommands)
if (cmdIdx == numCommands) {
efiPrintf("SUCCESS! All commands (%d of %d) passed to the Bluetooth module!", cmdIdx, numCommands);
else
} else {
efiPrintf("FAIL! Only %d commands (of %d total) were passed to the Bluetooth module!", cmdIdx, numCommands);
}
}
static THD_FUNCTION(btThreadEntryPoint, arg) {
(void) arg;