[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:
		
							
								
								
									
										2
									
								
								.github/workflows/black.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/black.yml
									
									
									
									
										vendored
									
									
								
							| @@ -12,4 +12,4 @@ jobs: | ||||
|     steps: | ||||
|       - uses: actions/checkout@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_nfcv_poll(nfc_worker); | ||||
|         rfalFieldOff(); | ||||
|         cycles--; | ||||
|         if(cycles > 0) cycles--; | ||||
|         if((!is_found) && (!cycles)) { | ||||
|             NfcMessage message; | ||||
|             message.type = NfcMessageTypeDeviceNotFound; | ||||
|   | ||||
| @@ -37,6 +37,7 @@ void platformSetIrqCallback(PlatformIrqCallback callback) { | ||||
| } | ||||
|  | ||||
| HAL_StatusTypeDef platformSpiTxRx(const uint8_t *txBuf, uint8_t *rxBuf, uint16_t len) { | ||||
|     furi_assert(platform_st25r3916); | ||||
|     bool ret = false; | ||||
|     if (txBuf && rxBuf) { | ||||
|         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() { | ||||
|     furi_assert(platform_st25r3916 == NULL); | ||||
|     platform_st25r3916 = (ApiHalSpiDevice*)api_hal_spi_device_get(ApiHalSpiDeviceIdNfc); | ||||
| } | ||||
|  | ||||
| void platformUnprotectST25RComm() { | ||||
|     furi_assert(platform_st25r3916); | ||||
|     api_hal_spi_device_return(platform_st25r3916); | ||||
|     platform_st25r3916 = NULL; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user