fixed usb serial queue crashing (#1761)

This commit is contained in:
Bernd Herzog 2024-01-12 16:04:32 +01:00 committed by GitHub
parent 58b488b840
commit eaac40df3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -58,19 +58,18 @@ void bulk_out_receive(void) {
void serial_bulk_transfer_complete(void* user_data, unsigned int bytes_transferred) {
(void)user_data;
chSysLockFromIsr();
for (unsigned int i = 0; i < bytes_transferred; i++) {
msg_t ret;
do {
chSysLockFromIsr();
ret = chIQPutI(&SUSBD1.iqueue, usbBulkBuffer[i]);
if (ret == Q_FULL)
chThdSleepMilliseconds(1);
chSysUnlockFromIsr();
if (ret == Q_FULL) {
chThdYield();
}
} while (ret == Q_FULL);
}
chSysUnlockFromIsr();
}
static void onotify(GenericQueue* qp) {
@ -94,7 +93,7 @@ static void onotify(GenericQueue* qp) {
NULL);
if (ret == -1)
chThdSleepMilliseconds(1);
chThdYield();
} while (ret == -1);
chSysLock();