[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:
parent
ed385594a3
commit
3d3c422751
@ -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) {
|
int32_t nfc_app(void* p) {
|
||||||
|
if(!nfc_is_hal_ready()) return 0;
|
||||||
|
|
||||||
Nfc* nfc = nfc_alloc();
|
Nfc* nfc = nfc_alloc();
|
||||||
char* args = p;
|
char* args = p;
|
||||||
|
|
||||||
|
@ -33,6 +33,8 @@
|
|||||||
#include <nfc/scenes/nfc_scene.h>
|
#include <nfc/scenes/nfc_scene.h>
|
||||||
#include <nfc/helpers/nfc_custom_event.h>
|
#include <nfc/helpers/nfc_custom_event.h>
|
||||||
|
|
||||||
|
#include <dialogs/dialogs.h>
|
||||||
|
|
||||||
#include "rpc/rpc_app.h"
|
#include "rpc/rpc_app.h"
|
||||||
|
|
||||||
#define NFC_TEXT_STORE_SIZE 128
|
#define NFC_TEXT_STORE_SIZE 128
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
entry,status,name,type,params
|
entry,status,name,type,params
|
||||||
Version,+,1.3,,
|
Version,+,1.4,,
|
||||||
Header,+,applications/services/bt/bt_service/bt.h,,
|
Header,+,applications/services/bt/bt_service/bt.h,,
|
||||||
Header,+,applications/services/cli/cli.h,,
|
Header,+,applications/services/cli/cli.h,,
|
||||||
Header,+,applications/services/cli/cli_vcp.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_field_on,void,
|
||||||
Function,-,furi_hal_nfc_init,void,
|
Function,-,furi_hal_nfc_init,void,
|
||||||
Function,+,furi_hal_nfc_is_busy,_Bool,
|
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,_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_rx,_Bool,"FuriHalNfcTxRxContext*, uint32_t"
|
||||||
Function,+,furi_hal_nfc_listen_sleep,void,
|
Function,+,furi_hal_nfc_listen_sleep,void,
|
||||||
|
|
@ -39,6 +39,10 @@ bool furi_hal_nfc_is_busy() {
|
|||||||
return rfalNfcGetState() != RFAL_NFC_STATE_IDLE;
|
return rfalNfcGetState() != RFAL_NFC_STATE_IDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool furi_hal_nfc_is_init() {
|
||||||
|
return rfalNfcGetState() != RFAL_NFC_STATE_NOTINIT;
|
||||||
|
}
|
||||||
|
|
||||||
void furi_hal_nfc_field_on() {
|
void furi_hal_nfc_field_on() {
|
||||||
furi_hal_nfc_exit_sleep();
|
furi_hal_nfc_exit_sleep();
|
||||||
st25r3916TxRxOn();
|
st25r3916TxRxOn();
|
||||||
|
@ -107,6 +107,12 @@ void furi_hal_nfc_init();
|
|||||||
*/
|
*/
|
||||||
bool furi_hal_nfc_is_busy();
|
bool furi_hal_nfc_is_busy();
|
||||||
|
|
||||||
|
/** Check if nfc is initialized
|
||||||
|
*
|
||||||
|
* @return true if initialized
|
||||||
|
*/
|
||||||
|
bool furi_hal_nfc_is_init();
|
||||||
|
|
||||||
/** NFC field on
|
/** NFC field on
|
||||||
*/
|
*/
|
||||||
void furi_hal_nfc_field_on();
|
void furi_hal_nfc_field_on();
|
||||||
|
Loading…
Reference in New Issue
Block a user