mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-15 04:15:44 +03:00
add FETtec ESC passthrough to the existing serial passthrough cli function
This commit is contained in:
parent
3695b123d9
commit
85f00d4454
1 changed files with 33 additions and 2 deletions
|
@ -1264,10 +1264,11 @@ static void cliSerialPassthrough(char *cmdline)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
serialPassthroughPort_t ports[2] = { {SERIAL_PORT_NONE, 0, 0, NULL}, { SERIAL_PORT_USB_VCP, 0, 0, cliPort} };
|
serialPassthroughPort_t ports[2] = { {SERIAL_PORT_NONE, 0, 0, NULL}, {cliPort->identifier, 0, 0, cliPort} };
|
||||||
bool enableBaudCb = false;
|
bool enableBaudCb = false;
|
||||||
int port1PinioDtr = 0;
|
int port1PinioDtr = 0;
|
||||||
bool port1ResetOnDtr = false;
|
bool port1ResetOnDtr = false;
|
||||||
|
bool escSensorPassthrough = false;
|
||||||
char *saveptr;
|
char *saveptr;
|
||||||
char* tok = strtok_r(cmdline, " ", &saveptr);
|
char* tok = strtok_r(cmdline, " ", &saveptr);
|
||||||
int index = 0;
|
int index = 0;
|
||||||
|
@ -1275,7 +1276,13 @@ static void cliSerialPassthrough(char *cmdline)
|
||||||
while (tok != NULL) {
|
while (tok != NULL) {
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0:
|
case 0:
|
||||||
|
if (strcasestr(tok, "esc_sensor")) {
|
||||||
|
escSensorPassthrough = true;
|
||||||
|
const serialPortConfig_t *portConfig = findSerialPortConfig(FUNCTION_ESC_SENSOR);
|
||||||
|
ports[0].id = portConfig->identifier;
|
||||||
|
} else {
|
||||||
ports[0].id = atoi(tok);
|
ports[0].id = atoi(tok);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
ports[0].baud = atoi(tok);
|
ports[0].baud = atoi(tok);
|
||||||
|
@ -1415,6 +1422,30 @@ static void cliSerialPassthrough(char *cmdline)
|
||||||
serialSetCtrlLineStateCb(ports[0].port, cbCtrlLine, (void *)(intptr_t)(port1PinioDtr));
|
serialSetCtrlLineStateCb(ports[0].port, cbCtrlLine, (void *)(intptr_t)(port1PinioDtr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_PWM_OUTPUT
|
||||||
|
if (escSensorPassthrough) {
|
||||||
|
pwmDisableMotors();
|
||||||
|
delay(5);
|
||||||
|
unsigned motorsCount = getMotorCount();
|
||||||
|
for (unsigned i = 0; i < motorsCount; i++) {
|
||||||
|
const ioTag_t tag = motorConfig()->dev.ioTags[i];
|
||||||
|
if (tag) {
|
||||||
|
const timerHardware_t *timerHardware = timerGetByTag(tag);
|
||||||
|
if (timerHardware) {
|
||||||
|
IO_t io = IOGetByTag(tag);
|
||||||
|
IOInit(io, OWNER_MOTOR, 0);
|
||||||
|
IOConfigGPIO(io, IOCFG_OUT_PP);
|
||||||
|
if (timerHardware->output & TIMER_OUTPUT_INVERTED) {
|
||||||
|
IOLo(io);
|
||||||
|
} else {
|
||||||
|
IOHi(io);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
serialPassthrough(ports[0].port, ports[1].port, NULL, NULL);
|
serialPassthrough(ports[0].port, ports[1].port, NULL, NULL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue