[FL-2674] Show error popup when NFC chip is not init/disconnected (#1722)
* Show error popup when NFC chip is not init/disconnected * Move to dialogs for the error message * Fix a memory leak and wrap the hal check * F7: update api_symbols.csv, add furi_hal_nfc_is_init Co-authored-by: SG <who.just.the.doctor@gmail.com> Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		@@ -231,7 +231,30 @@ void nfc_show_loading_popup(void* context, bool show) {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool nfc_is_hal_ready() {
 | 
			
		||||
    if(!furi_hal_nfc_is_init()) {
 | 
			
		||||
        // No connection to the chip, show an error screen
 | 
			
		||||
        DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
 | 
			
		||||
        DialogMessage* message = dialog_message_alloc();
 | 
			
		||||
        dialog_message_set_text(
 | 
			
		||||
            message,
 | 
			
		||||
            "Error!\nNFC chip failed to start\n\n\nSend a photo of this to:\nsupport@flipperzero.one",
 | 
			
		||||
            0,
 | 
			
		||||
            0,
 | 
			
		||||
            AlignLeft,
 | 
			
		||||
            AlignTop);
 | 
			
		||||
        dialog_message_show(dialogs, message);
 | 
			
		||||
        dialog_message_free(message);
 | 
			
		||||
        furi_record_close(RECORD_DIALOGS);
 | 
			
		||||
        return false;
 | 
			
		||||
    } else {
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int32_t nfc_app(void* p) {
 | 
			
		||||
    if(!nfc_is_hal_ready()) return 0;
 | 
			
		||||
 | 
			
		||||
    Nfc* nfc = nfc_alloc();
 | 
			
		||||
    char* args = p;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,8 @@
 | 
			
		||||
#include <nfc/scenes/nfc_scene.h>
 | 
			
		||||
#include <nfc/helpers/nfc_custom_event.h>
 | 
			
		||||
 | 
			
		||||
#include <dialogs/dialogs.h>
 | 
			
		||||
 | 
			
		||||
#include "rpc/rpc_app.h"
 | 
			
		||||
 | 
			
		||||
#define NFC_TEXT_STORE_SIZE 128
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
entry,status,name,type,params
 | 
			
		||||
Version,+,1.3,,
 | 
			
		||||
Version,+,1.4,,
 | 
			
		||||
Header,+,applications/services/bt/bt_service/bt.h,,
 | 
			
		||||
Header,+,applications/services/cli/cli.h,,
 | 
			
		||||
Header,+,applications/services/cli/cli_vcp.h,,
 | 
			
		||||
@@ -1096,6 +1096,7 @@ Function,+,furi_hal_nfc_field_off,void,
 | 
			
		||||
Function,+,furi_hal_nfc_field_on,void,
 | 
			
		||||
Function,-,furi_hal_nfc_init,void,
 | 
			
		||||
Function,+,furi_hal_nfc_is_busy,_Bool,
 | 
			
		||||
Function,+,furi_hal_nfc_is_init,_Bool,
 | 
			
		||||
Function,+,furi_hal_nfc_listen,_Bool,"uint8_t*, uint8_t, uint8_t*, uint8_t, _Bool, uint32_t"
 | 
			
		||||
Function,+,furi_hal_nfc_listen_rx,_Bool,"FuriHalNfcTxRxContext*, uint32_t"
 | 
			
		||||
Function,+,furi_hal_nfc_listen_sleep,void,
 | 
			
		||||
 
 | 
			
		||||
		
		
			
  | 
@@ -39,6 +39,10 @@ bool furi_hal_nfc_is_busy() {
 | 
			
		||||
    return rfalNfcGetState() != RFAL_NFC_STATE_IDLE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool furi_hal_nfc_is_init() {
 | 
			
		||||
    return rfalNfcGetState() != RFAL_NFC_STATE_NOTINIT;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void furi_hal_nfc_field_on() {
 | 
			
		||||
    furi_hal_nfc_exit_sleep();
 | 
			
		||||
    st25r3916TxRxOn();
 | 
			
		||||
 
 | 
			
		||||
@@ -107,6 +107,12 @@ void furi_hal_nfc_init();
 | 
			
		||||
 */
 | 
			
		||||
bool furi_hal_nfc_is_busy();
 | 
			
		||||
 | 
			
		||||
/** Check if nfc is initialized
 | 
			
		||||
 *
 | 
			
		||||
 * @return     true if initialized
 | 
			
		||||
 */
 | 
			
		||||
 bool furi_hal_nfc_is_init();
 | 
			
		||||
 | 
			
		||||
/** NFC field on
 | 
			
		||||
 */
 | 
			
		||||
void furi_hal_nfc_field_on();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user