[FL-1104] Fix NFC crash and missing NfcMessageTypeDeviceNotFound event (#400)
* Remove asserts from platformProtectST25RComm, fix issue with concurrent access. * NFC Worker: fix bug in nfc_worker_poll causing worker to skip sending ofNfcMessageTypeDeviceNotFound event * Fix python linter: stick to old beta
This commit is contained in:
parent
78ff0c9fca
commit
0c3a0a3312
2
.github/workflows/black.yml
vendored
2
.github/workflows/black.yml
vendored
@ -12,4 +12,4 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: actions/setup-python@v2
|
- uses: actions/setup-python@v2
|
||||||
- uses: psf/black@stable
|
- uses: psf/black@20.8b1
|
||||||
|
@ -84,7 +84,7 @@ void nfc_worker_poll(NfcWorker* nfc_worker, uint8_t cycles) {
|
|||||||
is_found |= nfc_worker_nfcf_poll(nfc_worker);
|
is_found |= nfc_worker_nfcf_poll(nfc_worker);
|
||||||
is_found |= nfc_worker_nfcv_poll(nfc_worker);
|
is_found |= nfc_worker_nfcv_poll(nfc_worker);
|
||||||
rfalFieldOff();
|
rfalFieldOff();
|
||||||
cycles--;
|
if(cycles > 0) cycles--;
|
||||||
if((!is_found) && (!cycles)) {
|
if((!is_found) && (!cycles)) {
|
||||||
NfcMessage message;
|
NfcMessage message;
|
||||||
message.type = NfcMessageTypeDeviceNotFound;
|
message.type = NfcMessageTypeDeviceNotFound;
|
||||||
|
@ -37,6 +37,7 @@ void platformSetIrqCallback(PlatformIrqCallback callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
HAL_StatusTypeDef platformSpiTxRx(const uint8_t *txBuf, uint8_t *rxBuf, uint16_t len) {
|
HAL_StatusTypeDef platformSpiTxRx(const uint8_t *txBuf, uint8_t *rxBuf, uint16_t len) {
|
||||||
|
furi_assert(platform_st25r3916);
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
if (txBuf && rxBuf) {
|
if (txBuf && rxBuf) {
|
||||||
ret = api_hal_spi_bus_trx(platform_st25r3916->bus, (uint8_t*)txBuf, rxBuf, len, 1000);
|
ret = api_hal_spi_bus_trx(platform_st25r3916->bus, (uint8_t*)txBuf, rxBuf, len, 1000);
|
||||||
@ -55,12 +56,10 @@ HAL_StatusTypeDef platformSpiTxRx(const uint8_t *txBuf, uint8_t *rxBuf, uint16_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
void platformProtectST25RComm() {
|
void platformProtectST25RComm() {
|
||||||
furi_assert(platform_st25r3916 == NULL);
|
|
||||||
platform_st25r3916 = (ApiHalSpiDevice*)api_hal_spi_device_get(ApiHalSpiDeviceIdNfc);
|
platform_st25r3916 = (ApiHalSpiDevice*)api_hal_spi_device_get(ApiHalSpiDeviceIdNfc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void platformUnprotectST25RComm() {
|
void platformUnprotectST25RComm() {
|
||||||
furi_assert(platform_st25r3916);
|
furi_assert(platform_st25r3916);
|
||||||
api_hal_spi_device_return(platform_st25r3916);
|
api_hal_spi_device_return(platform_st25r3916);
|
||||||
platform_st25r3916 = NULL;
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user