Hi,
I'm trying to edit the nfc message in software but after a while the nfc stops working.
What could I be doing wrong? This is my code, I change the value every second and update the ndef file.
#include <stdint.h> #include <stdbool.h> #include "app_error.h" #include "app_scheduler.h" #include "boards.h" #include "nfc_t4t_lib.h" #include "ndef_file_m.h" #include "nfc_ndef_msg.h" #include "nrf_delay.h" #define APP_SCHED_MAX_EVENT_SIZE 0 #define APP_SCHED_QUEUE_SIZE 4 static uint8_t m_ndef_msg_buf[NDEF_FILE_SIZE]; static uint8_t m_ndef_msg_len; static void scheduler_ndef_file_update(void * p_event_data, uint16_t event_size) { ret_code_t err_code; UNUSED_PARAMETER(p_event_data); UNUSED_PARAMETER(event_size); err_code = ndef_file_update(m_ndef_msg_buf, m_ndef_msg_len + NLEN_FIELD_SIZE); APP_ERROR_CHECK(err_code); } static void nfc_callback(void * context, nfc_t4t_event_t event, const uint8_t * data, size_t dataLength, uint32_t flags) { (void)context; switch (event) { case NFC_T4T_EVENT_FIELD_ON: break; case NFC_T4T_EVENT_FIELD_OFF: break; case NFC_T4T_EVENT_NDEF_READ: break; case NFC_T4T_EVENT_NDEF_UPDATED: if (dataLength > 0) { ret_code_t err_code; // Schedule update of NDEF message in the flash file. m_ndef_msg_len = dataLength; err_code = app_sched_event_put(NULL, 0, scheduler_ndef_file_update); APP_ERROR_CHECK(err_code); } break; default: break; } } int main(void) { ret_code_t err_code; APP_SCHED_INIT(APP_SCHED_MAX_EVENT_SIZE, APP_SCHED_QUEUE_SIZE); err_code = ndef_file_setup(); APP_ERROR_CHECK(err_code); err_code = ndef_file_load(m_ndef_msg_buf, sizeof(m_ndef_msg_buf)); APP_ERROR_CHECK(err_code); err_code = nfc_t4t_setup(nfc_callback, NULL); APP_ERROR_CHECK(err_code); err_code = nfc_t4t_ndef_rwpayload_set(m_ndef_msg_buf, sizeof(m_ndef_msg_buf)); APP_ERROR_CHECK(err_code); err_code = nfc_t4t_emulation_start(); APP_ERROR_CHECK(err_code); while (1) { app_sched_execute(); nrf_delay_ms(1000); m_ndef_msg_buf[11] = 0x31; //update message err_code = app_sched_event_put(NULL, 0, scheduler_ndef_file_update); APP_ERROR_CHECK(err_code); } }
Thanks!
Marvin