[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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 あく
						あく