Revision 5ab6a6a4
periphery-lld/periphAL.h | ||
---|---|---|
343 | 343 |
aosDbgCheck(i2cd != NULL); |
344 | 344 |
|
345 | 345 |
#if (I2C_USE_MUTUAL_EXCLUSION == TRUE) |
346 |
i2cAcquireBus(i2cd); |
|
346 |
// check whether the I2C driver was locked externally |
|
347 |
const bool i2cd_locked_external = i2cd->mutex.owner == currp; |
|
348 |
if (!i2cd_locked_external) { |
|
349 |
i2cAcquireBus(i2cd); |
|
350 |
} |
|
347 | 351 |
#endif |
348 | 352 |
|
349 | 353 |
#pragma GCC diagnostic push |
... | ... | |
364 | 368 |
#pragma GCC diagnostic pop |
365 | 369 |
|
366 | 370 |
#if (I2C_USE_MUTUAL_EXCLUSION == TRUE) |
367 |
i2cReleaseBus(i2cd); |
|
371 |
if (!i2cd_locked_external) { |
|
372 |
i2cReleaseBus(i2cd); |
|
373 |
} |
|
368 | 374 |
#endif |
369 | 375 |
|
370 | 376 |
switch (status) |
... | ... | |
399 | 405 |
aosDbgCheck(i2cd != NULL); |
400 | 406 |
|
401 | 407 |
#if (I2C_USE_MUTUAL_EXCLUSION == TRUE) |
402 |
i2cAcquireBus(i2cd); |
|
408 |
// check whether the I2C driver was locked externally |
|
409 |
const bool i2cd_locked_external = i2cd->mutex.owner == currp; |
|
410 |
if (!i2cd_locked_external) { |
|
411 |
i2cAcquireBus(i2cd); |
|
412 |
} |
|
403 | 413 |
#endif |
404 | 414 |
|
405 | 415 |
#pragma GCC diagnostic push |
... | ... | |
420 | 430 |
#pragma GCC diagnostic pop |
421 | 431 |
|
422 | 432 |
#if (I2C_USE_MUTUAL_EXCLUSION == TRUE) |
423 |
i2cReleaseBus(i2cd); |
|
433 |
if (!i2cd_locked_external) { |
|
434 |
i2cReleaseBus(i2cd); |
|
435 |
} |
|
424 | 436 |
#endif |
425 | 437 |
|
426 | 438 |
switch (status) |
... | ... | |
467 | 479 |
aosDbgCheck(spid != NULL); |
468 | 480 |
|
469 | 481 |
#if (SPI_USE_MUTUAL_EXCLUSION) |
470 |
spiAcquireBus(spid); |
|
482 |
// check whether the SPI driver was locked externally |
|
483 |
const bool spid_locked_external = spid->mutex.owner == currp; |
|
484 |
if (!spid_locked_external) { |
|
485 |
spiAcquireBus(spid); |
|
486 |
} |
|
471 | 487 |
#endif |
488 |
|
|
472 | 489 |
spiSelect(spid); |
473 | 490 |
spiExchange(spid, length, txData, rxData); |
474 | 491 |
spiUnselect(spid); |
492 |
|
|
475 | 493 |
#if (SPI_USE_MUTUAL_EXCLUSION) |
476 |
spiReleaseBus(spid); |
|
494 |
if (!spid_locked_external) { |
|
495 |
spiReleaseBus(spid); |
|
496 |
} |
|
477 | 497 |
#endif |
478 | 498 |
|
479 | 499 |
return APAL_STATUS_OK; |
... | ... | |
493 | 513 |
aosDbgCheck(spid != NULL); |
494 | 514 |
|
495 | 515 |
#if (SPI_USE_MUTUAL_EXCLUSION) |
496 |
spiAcquireBus(spid); |
|
516 |
// check whether the SPI driver was locked externally |
|
517 |
const bool spid_locked_external = spid->mutex.owner == currp; |
|
518 |
if (!spid_locked_external) { |
|
519 |
spiAcquireBus(spid); |
|
520 |
} |
|
497 | 521 |
#endif |
522 |
|
|
498 | 523 |
spiSelect(spid); |
499 | 524 |
spiReceive(spid, length, data); |
500 | 525 |
spiUnselect(spid); |
526 |
|
|
501 | 527 |
#if (SPI_USE_MUTUAL_EXCLUSION) |
502 |
spiReleaseBus(spid); |
|
528 |
if (!spid_locked_external) { |
|
529 |
spiReleaseBus(spid); |
|
530 |
} |
|
503 | 531 |
#endif |
504 | 532 |
|
505 | 533 |
return APAL_STATUS_OK; |
... | ... | |
519 | 547 |
aosDbgCheck(spid != NULL); |
520 | 548 |
|
521 | 549 |
#if (SPI_USE_MUTUAL_EXCLUSION) |
522 |
spiAcquireBus(spid); |
|
550 |
// check whether the SPI driver was locked externally |
|
551 |
const bool spid_locked_external = spid->mutex.owner == currp; |
|
552 |
if (!spid_locked_external) { |
|
553 |
spiAcquireBus(spid); |
|
554 |
} |
|
523 | 555 |
#endif |
556 |
|
|
524 | 557 |
spiSelect(spid); |
525 | 558 |
spiSend(spid, length, data); |
526 | 559 |
spiUnselect(spid); |
560 |
|
|
527 | 561 |
#if (SPI_USE_MUTUAL_EXCLUSION) |
528 |
spiReleaseBus(spid); |
|
562 |
if (!spid_locked_external) { |
|
563 |
spiReleaseBus(spid); |
|
564 |
} |
|
529 | 565 |
#endif |
530 | 566 |
|
531 | 567 |
return APAL_STATUS_OK; |
... | ... | |
547 | 583 |
aosDbgCheck(spid != NULL); |
548 | 584 |
|
549 | 585 |
#if (SPI_USE_MUTUAL_EXCLUSION) |
550 |
spiAcquireBus(spid); |
|
586 |
// check whether the SPI driver was locked externally |
|
587 |
const bool spid_locked_external = spid->mutex.owner == currp; |
|
588 |
if (!spid_locked_external) { |
|
589 |
spiAcquireBus(spid); |
|
590 |
} |
|
551 | 591 |
#endif |
592 |
|
|
552 | 593 |
spiSelect(spid); |
553 | 594 |
spiSend(spid, txLength, txData); |
554 | 595 |
spiReceive(spid, rxLength, rxData); |
555 | 596 |
spiUnselect(spid); |
597 |
|
|
556 | 598 |
#if (SPI_USE_MUTUAL_EXCLUSION) |
557 |
spiReleaseBus(spid); |
|
599 |
if (!spid_locked_external) { |
|
600 |
spiReleaseBus(spid); |
|
601 |
} |
|
558 | 602 |
#endif |
559 | 603 |
|
560 | 604 |
return APAL_STATUS_OK; |
Also available in: Unified diff