Library issue: "SFE_ST25DV64KC' has no member named ..."?

Using the SparkFun_ST25DV64KC_Arduino_Library, I’m having an odd issue getting my sketch to compile. If we look at the following Example 10-NDEF Text (slightly modified in that I’m just writing the Record Text to tag memory):

/*
  ST25DV64KC Example
  By: Ricardo Ramos and Paul Clark
*/

#include <SparkFun_ST25DV64KC_Arduino_Library.h>  // Click here to get the library:  http://librarymanager/All#SparkFun_ST25DV64KC
#include "RTClib.h"
#include "Arduino.h"
#include "Audio.h"
#include "SD.h"
#include "FS.h"
#include "esp_sleep.h"
#include <ezButton.h>

Audio audio;     // Create Audio object
RTC_DS3231 rtc;  // create RTC object
DateTime nowDT;
SFE_ST25DV64KC_NDEF tag;  // create RFID object

#define power_pin 15
int day_count = 3;
int alarm_time = 8;

void setup() {
  delay(1000);

  Serial.begin(115200);
  Wire.begin();

  pinMode(power_pin, OUTPUT);
  digitalWrite(power_pin, HIGH);

  Serial.println(F("ST25DV64KC example."));

  if (!tag.begin(Wire)) {
    Serial.println(F("ST25 not detected. Freezing..."));
    while (1)  // Do nothing more
      ;
  }

  Serial.println(F("ST25 connected."));
  // Clear the first 256 bytes of user memory
  uint8_t tagMemory[256];
  memset(tagMemory, 0, 256);
  Serial.println("Writing 0x0 to the first 256 bytes of user memory.");
  tag.writeEEPROM(0x0, tagMemory, 256);
  // Write the Type 5 CC File - starting at address zero
  Serial.println(F("Writing CC_File"));
  tag.writeCCFile8Byte();
  // Write one NDEF UTF-8 Text record
  uint16_t memLoc = tag.getCCFileLen();
  Serial.println(F("Writing the first NDEF Text record"));
  char buffer[85];
  int days = 3;
  int alarm1_hr = 8;
  int alarm1_min = 30;
  sprintf(buffer, "READ USER has taken their medication for %d days. Alarm Time is set for %d:%d ", days, alarm1_hr, alarm1_min);
  tag.writeNDEFText(buffer, &memLoc, true, true);  // MB=1, ME=1
}

void loop() {
  // Nothing to do here
}


This sketch compiles and uploads perfectly.

My problem is that if I use the same Library (SparkFun_ST25DV64KC_Arduino_Library.h ) and the same lines of code (see toward the end of the sketch at the void write_RFID_tag() function) to do the writing of the Record in the broader context of a larger sketch (actually only partial) following, it fails to compile:

#include <SparkFun_ST25DV64KC_Arduino_Library.h>  // Click here to get the library:  http://librarymanager/All#SparkFun_ST25DV64KC
#include "RTClib.h"
#include "Arduino.h"
#include "Audio.h"
#include "SD.h"
#include "FS.h"
#include "esp_sleep.h"
#include <ezButton.h>


#define SD_CS 5      // D9 of Firebeetle microSD Card Reader connections
#define SPI_MOSI 23  // DI of SD Card
#define SPI_MISO 19  // DO of SD Card
#define SPI_SCK 18

#define I2S_DOUT 25  //(D2) DAC0 I2S output for firebeetle
#define I2S_BCLK 14
#define I2S_LRC 17

Audio audio;     // Create Audio object
RTC_DS3231 rtc;  // create RTC object
DateTime nowDT;
SFE_ST25DV64KC tag;  // create RFID object

RTC_DATA_ATTR int bootCount = 0;  // for sleep


const int MAX_ANALOG_VAL = 4095;
const float MAX_BATTERY_VOLTAGE = 4.1;  // Max LiPoly voltage of a 3.7 battery is 4.2
const int MIN_BATT_THRESHOLD = 1865;

#define uS_TO_S_FACTOR 1000000  // Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 20        // Time ESP32 will sleep (in seconds)  and then wake up

////////////////////////// PIN ASSIGNMENTS ///////////////////////////////////////////////
#define CLOCK_INTERRUPT_PIN A3  //A3 Physical Pin on Firebeetle  The number of the pin for monitor alarm status on SQW DS3231
#define red_LED 0               // GPIO 0
#define green_LED 3
#define blue_LED 2  // this wire jumped - was GPIO 12
#define batt_input A0
#define power_pin 15
#define lid_sw A1      //reed switch   all buttons pulled UP via 10K resistor
#define pwr_button A2  // giving up  blue led and rewiring to power button
ezButton pwr_but(A2);
ezButton lang_select_but(26);
ezButton pill_confirm_but(4);
ezButton page_back_but(13);
ezButton page_forw_but(27);
ezButton vol_up_but(12);  //this wire jumped was GPIO 2
ezButton vol_dn_but(16);


bool lid_sw_val;
bool pwr_state = false;
bool lang_state = false;
bool pill_confirm_toggle = false;
bool goto_close_lid_finish = false;
bool warning_pill_not_taken = false;
bool vol_up_but_state = false;
bool block_pwr_but = false;  // to prevent power on while close lid finish()
int pwr_but_state;


const char* audiofilenames[6][24] = {  //various audio files on MicroSD card
  /* 0 */ { "tick.wav", "turntone.wav", "am.wav", "pm.wav", "silence.wav", "click.wav", "Tomorw1.wav", "Tomorw2.wav", "THIRTY.wav" },
  /* 1 */ { "12-AM.wav", "1-AM.wav", "2-AM.wav", "3-AM.wav", "4-AM.wav", "5-AM.wav", "6-AM.wav", "7-AM.wav", "8-AM.wav", "9-AM.wav", "10-AM.wav", "11-AM.wav", "12-PM.wav", "1-PM.wav", "2-PM.wav", "3-PM.wav", "4-PM.wav", "5-PM.wav", "6-PM.wav", "7-PM.wav", "8-PM.wav", "9-PM.wav", "10-PM.wav", "11-PM.wav" },
  /* 2 */ { "day14inst.wav", "end_book.wav", "INSTRUCT.wav", "intro_lg.wav", "intro_sht.wav", "med_close.wav", "CLOSELID.wav", "CLSELID2.wav", "WELCOME.wav", "DOORSTP2.wav", "DOORSTOP.wav" },
  /* 3 */ { "TAKEMED.wav", "NEXTTAKE.wav", "NOT_MED.wav", "NOT_MED2.wav", "silence.wav", "ENGLISH.wav", "ISIXHOSA.wav", "ISIZULU.wav", "takemed3.wav" },
  /* 4 */ { "DAY_1.wav", "DAY_2.wav", "DAY_3.wav", "DAY_4.wav", "DAY_5.wav", "DAY_6.wav", "DAY_7.wav", "DAY_8.wav", "DAY_9.wav", "DAY_10.wav", "DAY_11.wav", "DAY_12.wav", "DAY_13.wav", "DAY14INST.wav" },
  /* 5 */ { "page1.wav", "page2.wav", "page3.wav", "page4.wav", "page5.wav", "page6.wav", "page7.wav", "page8.wav", "page9.wav", "page10.wav", "page11.wav", "page12.wav", "page13.wav", "page14.wav", "page15.wav", "page16.wav", "page17.wav", "page18.wav", "END_BOOK.wav" }
};


////////////////////////////// Timing ///////////////////////////////
int long current_Millis;
int long prev_LED_millis = 0;
int long prev_RFID_millis = 0;
int long prev_clock_millis = 0;
int long prev_take_meds_millis = 0;
int long prev_lid_close_finish_millis = 0;
int long prev_not_yet_time_millis = 0;
int long prev_sleep_delay_millis = 0;
int long book_pwr_off_delay_millis = 0;
int long prev_pwr_button_millis = 0;

int long pwr_button_debounce = 500;
int16_t RFID_time = 5000;
int16_t clock_time = 3000;
int16_t LED_pause_time = 100;

int16_t take_med_time;                   // variable to hold following
int16_t take_med_time_initial = 500;     // initially set by alarm and then adjusted in take_med() to be 15 seconds for 10x  sleep
int16_t take_med_time_extended = 30000;  // once entered loop repeats every 30 seconds

int16_t not_time_yet_time = 5000;  // variable to hold following


int16_t pill_conf_loop_time;                  // variable to hold following
int16_t pill_conf_loop_time_initial = 500;    // set initially by take_med() to be 3 second
int16_t pill_conf_loop_time_extended = 8000;  // repeat every 8 seconds after first confirming button

int long sleep_delay_time_no_door_open = 1200000;            // 1200000 20 minutes norm   (60000) 1 minutes debug  to sleep if alarm triggered and door not opened
int long sleep_delay_time_door_open_no_confirm = 60000;      // go to sleep after 1 minutes (60000)  if door open but no confirm button pushed
int long sleep_delay_time_pill_confirm_door_closed = 15000;  // go to sleep 15 seconds after confirm pill door closed
int long book_pwr_off_time = 300000;                         // (300000) 5 minutes
int long power_debounce_time = 250;                          // time to reenter loop to read power button
int long wake_up_from_sleep_time = 12000;
int long sleep_delay_time = 500;  // variable for holding go to sleep delay time

int alarm1_hr;   // variable for holding set alarm time hour
int alarm1_min;  // variable for holding set alarm time minute
/////////////////////////////// end of timing /////////////////////////////////////////////

int8_t audio_trigger = -1;  // this triggers no. of audio prompts for given function - at -1 to keep it false
char audio_array1;          // these hold the variables for for the various audio prompts after the main audio prompt in the function
char audio_array2;
char audio_array3;
char audio_array4;
char audio_array5;
char audio_array6;
char audio_array7;
char audio_array8;

int LED_color;  // variable for storing LED color;
int Red = 0;
int Green = 1;
int Blue = 2;
int Yellow = 3;
bool LED_status = true;    // determines toggle of whether LED is on or off flashing curr_Lang_state
bool LED_trigger = false;  // LED switch ON or FF
bool alarm_fired = false;
bool sleep_mode = false;
bool not_yet_time_warning = false;  // if door left open toggle

int day_count = 0;                // set at zero initially
int page_count = 0;               // set to zero initially
int const total_page_count = 19;  // total pages plus one for end of page
int audio_repeat_count = 0;       // variable to hold audio repeat warning xtimes

int volume_level = 12;  // default volume level - 20 max

void setup() {
  Wire.begin();
  Serial.begin(115200);

  pinMode(power_pin, OUTPUT);
  pinMode(pwr_button, INPUT);
  pinMode(34, INPUT);
  pinMode(batt_input, INPUT);
  pinMode(red_LED, OUTPUT);
  pinMode(green_LED, OUTPUT);
  pinMode(blue_LED, OUTPUT);
  pinMode(lid_sw, INPUT);
  pinMode(CLOCK_INTERRUPT_PIN, INPUT_PULLUP);  // Making it so, that the alarm will trigger an interrupt

  digitalWrite(power_pin, HIGH);

  page_back_but.setDebounceTime(100);
  page_forw_but.setDebounceTime(100);
  //lang_select_but.setDebounceTime(100);
  pwr_but.setDebounceTime(100);
  vol_up_but.setDebounceTime(100);
  vol_dn_but.setDebounceTime(100);
  pill_confirm_but.setDebounceTime(50);


  if (!tag.begin(Wire)) {  // check if RFID breakout is connected
    Serial.println(F("ST25 not detected. Freezing..."));
    while (1)
      ;
  }  // Do nothing more
  Serial.println(F("ST25 connected."));

  audio.setVolume(volume_level);

  if (!rtc.begin()) {
    Serial.println("Couldn't find RTC");
    Serial.flush();
    while (1) delay(10);
  }

  ////////////////////////// RTC TIME FUNCTION SETUP ///////////////////////////////////////////
  rtc.disable32K();  //we don't need the 32K Pin, so disable it

  if (rtc.lostPower()) {
    Serial.println("RTC lost power - need to set using set_time_READ_ds3231 program ");  // if power loss following line sets the RTC to the date & time this sketch was compiled
    //rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }

  attachInterrupt(digitalPinToInterrupt(CLOCK_INTERRUPT_PIN), onAlarm, FALLING);
  //esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK, ESP_EXT1_WAKEUP_ALL_LOW);  // triggered if go LOW on GPIOs 4, 15 and 36  lid switch, pwr button, RTC SQW TIMER TRIGGER
  esp_sleep_enable_ext0_wakeup(GPIO_NUM_35, 0);  //1 = High, 0 = Low GPIO 35 A3 of FireBeetle
  //esp_sleep_pd_config(ESP_PD_DOMAIN_VDDSDIO, ESP_PD_OPTION_OFF);  // power down flash

  rtc.clearAlarm(1);
  rtc.clearAlarm(2);

  rtc.writeSqwPinMode(DS3231_OFF);  // stop oscillating signals at SQW Pin otherwise setAlarm1 will fail

  rtc.disableAlarm(2);  // turn off alarm 2 (in case it isn't off already) again, this isn't done at reboot, so a previously set alarm could easily go overlooked

  nowDT = rtc.now();  // on reset set alarm time to time of reset
  //rtc.setAlarm1(now + TimeSpan(0, 11, 0, 0), DS3231_A1_Hour);  //   debugset alarm for every 11 hours at the same time of day

  //DateTime = rtc.getAlarm1();
  alarm1_hr = nowDT.hour();                // notDT is set in setup() at time of reset
  alarm1_min = nowDT.minute();             // notDT is set in setup() at time of reset
  Serial.print("Alarm time is set to: ");  // display alarm set time
  Serial.print(alarm1_hr);
  Serial.print(":");
  Serial.println(alarm1_min);

  ///////////////////////////////////// END RTC FUNCTIONS ///////////////////////////////////////////////////////
  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);

  pinMode(SD_CS, OUTPUT);  // Set microSD Card CS as OUTPUT and set HIGH
  digitalWrite(SD_CS, HIGH);
  SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);  // Initialize SPI bus for microSD Card
  delay(1000);
  if (!SD.begin(SD_CS)) {  // Start microSD Card
    Serial.println("Error accessing microSD card!");
    while (true)
      ;
  }

  audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);  // Setup I2S

  ///////////////////// first time reset sets up to take first day medication
  take_med_time = take_med_time_initial;  // set up inital timing
  pill_conf_loop_time = pill_conf_loop_time_initial;
  LED_trigger = true;
  pill_confirm_toggle = false;
  alarm_fired = true;  // on reset trigger alarm to be true
  //alarm_fired = false;  // for debug of book functions
  audio.connecttoFS(SD, "WELCOME.wav");
}

void loop() {
  ////////////// DEFAULT FUNCTIONS /////////////////////////
  current_Millis = millis();
  audio.loop();    // with audio.loop() nothing in the loop can be blocking
  Flash_LED();     // indication for various functions
  read_buttons();  // continually scans switch button states
  ////////////// BOOK FUNCTIONS ////////////////////////////
  power_status();     // monitors power for book function whether on or off
  Turn_page();        // turn page forward of backward funtion
  Language_select();  // toggles selected language with audio prompt
  Volume_control();   // function to adjust volume for audip

}

void audio_eof_mp3(const char* info) {  // this function allows for multiple tracks to be played successively using variables "audio trigger xx"
  if (audio_trigger > 0) {
    if (audio_trigger == 1) {
      audio.connecttoFS(SD, audiofilenames[audio_array1][audio_array2]);
      audio_trigger--;
    }
    if (audio_trigger == 2) {
      audio.connecttoFS(SD, audiofilenames[audio_array3][audio_array4]);
      audio_trigger--;
    }
    if (audio_trigger == 3) {
      audio.connecttoFS(SD, audiofilenames[audio_array5][audio_array6]);
      audio_trigger--;
    }
    if (audio_trigger == 4) {
      audio.connecttoFS(SD, audiofilenames[audio_array7][audio_array8]);
      audio_trigger--;
    }
  }
}


void read_buttons() {
  lid_sw_val = digitalRead(lid_sw);
  page_back_but.loop();  //MUST call the loop() function first
  page_forw_but.loop();
  lang_select_but.loop();
  pwr_but.loop();
  vol_up_but.loop();
  vol_dn_but.loop();
  pill_confirm_but.loop();
}


void Not_yet_time() {
  if ((current_Millis - prev_not_yet_time_millis > not_time_yet_time) && (lid_sw_val == 0) && (alarm_fired == false) && (pill_confirm_toggle == false) && not_yet_time_warning == false) {  //lid is opened but not yet time to take meds
    not_yet_time_warning = true;
    digitalWrite(power_pin, HIGH);
    SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);  // Initialize SPI bus for microSD Card
    digitalWrite(SD_CS, HIGH);
    SD.begin();
    sleep_mode = true;
    sleep_delay_time = 12000;  // sleep in 12 seconds
    audio_trigger = 1;
    audio_array1 = 2;
    audio_array2 = 6;  // close the lid
    audio.connecttoFS(SD, audiofilenames[3][3]);
    Serial.println("not yet time - close the lid");
    prev_not_yet_time_millis = current_Millis;
    prev_sleep_delay_millis = current_Millis;
  }
  if ((lid_sw_val == 1) && (alarm_fired == false) && (pill_confirm_toggle == false)) {
    not_yet_time_warning = false;  // reset to false when lid is re-closed
  }
}


void Turn_page() {
  if ((page_forw_but.isReleased()) && (page_count < total_page_count) && (pwr_state)) {  // page forward button is pushed and page count is less than total  + power state is true
    Serial.println("page forward");
    book_pwr_off_delay_millis = current_Millis;            // resets book power off delay
    audio.connecttoFS(SD, audiofilenames[5][page_count]);  // Play page no.
    page_count++;
  } else if ((page_back_but.isReleased()) && (page_count > 0)) {  // page back button is pushed and page count is greater than zero
    Serial.println("page back");
    book_pwr_off_delay_millis = current_Millis;  // resets book power off delay
    page_count--;
    audio.connecttoFS(SD, audiofilenames[5][page_count]);  // Play click
  }
}

void Language_select() {
  if ((lang_select_but.isReleased()) && (pwr_state)) {  // language slect button is pushed and release + power state is true
    lang_state = !lang_state;                           // toggle state whenever entering loop
    if (lang_state == true) {
      Serial.println("isiZul language selected ");
      audio.connecttoFS(SD, audiofilenames[3][7]);  // isiZulu
    } else {
      Serial.println("english language seelected ");
      audio.connecttoFS(SD, audiofilenames[3][5]);  // english
    }
  }
}

void power_status() {
  if ((pwr_but.isReleased()) && (!alarm_fired) && (!block_pwr_but)) {
    digitalWrite(power_pin, HIGH);
    pwr_state = !pwr_state;                  // toggle state whenever entering loop
    SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);  // Initialize SPI bus for microSD Card
    digitalWrite(SD_CS, HIGH);
    SD.begin();

    if (pwr_state == true) {

      sleep_mode = true;
      sleep_delay_time = book_pwr_off_time;
      book_pwr_off_delay_millis = current_Millis;
      Serial.println("power is ON ");
      audio.connecttoFS(SD, audiofilenames[2][2]);  // instruction
    }
    if (pwr_state == false) {
      Serial.println("power is OFF ");
      LED_trigger = false;
      sleep_mode = true;
      sleep_delay_time = 3000;                      // 3 second delay before sleep
      audio.connecttoFS(SD, audiofilenames[0][5]);  // click
      prev_sleep_delay_millis = current_Millis;
    }
  }
}



void end_of_days() {
  LED_trigger = false;
  block_pwr_but = true;
  pill_confirm_toggle = false;
  rtc.clearAlarm(1);
  rtc.disableAlarm(1);
  alarm_fired = false;
  sleep_mode = true;
  sleep_delay_time = 15000;
  prev_sleep_delay_millis = current_Millis;
  audio.connecttoFS(SD, audiofilenames[4][13]);  // end of days to take pills
} 

void Volume_control() {
  if ((vol_up_but.isReleased()) && (volume_level < 22) && (pwr_state)) {  // vol up state taken from analogRead
    //audio.connecttoFS(SD, audiofilenames[0][0]);                          // tick
    Serial.println("Volume UP");
    audio.setVolume(volume_level);  // 0...21
    digitalWrite(blue_LED, HIGH);
    delay(200);
    digitalWrite(blue_LED, LOW);
    volume_level = volume_level + 4;  // set volume level up
  }
  if ((vol_dn_but.isReleased()) && (volume_level > 0) && (pwr_state)) {
    //audio.connecttoFS(SD, audiofilenames[0][0]);  // tick
    Serial.println("Volume DOWN");
    audio.setVolume(volume_level);  // 0...21
    digitalWrite(blue_LED, HIGH);
    delay(200);
    digitalWrite(blue_LED, LOW);
    volume_level = volume_level - 4;  // set volume level down
  }
}

void Flash_LED() {
  if ((current_Millis - prev_LED_millis > LED_pause_time) && (LED_trigger == true)) {
    LED_status = !LED_status;  // toggle state
    if (LED_status) {
      if (LED_color == 3) {
        digitalWrite(red_LED, HIGH);  // Yellow
        analogWrite(green_LED, 120);
        digitalWrite(blue_LED, 0);
      } else if (LED_color == 0) {  //red
        digitalWrite(red_LED, HIGH);
        digitalWrite(green_LED, 0);
        digitalWrite(blue_LED, LOW);
      } else if (LED_color == 1) {  // green
        digitalWrite(red_LED, LOW);
        analogWrite(green_LED, 255);
        digitalWrite(blue_LED, LOW);
      } else if (LED_color == 2) {  //blue
        digitalWrite(red_LED, LOW);
        digitalWrite(green_LED, LOW);
        digitalWrite(blue_LED, HIGH);
      }
    } else if (!LED_status) {
      digitalWrite(red_LED, LOW);  //all LEDs off
      analogWrite(green_LED, 0);
      digitalWrite(blue_LED, LOW);
    }
    prev_LED_millis = current_Millis;
  }
}

void onAlarm() {
  // Serial.println("Alarm occured!");
}

void print_wakeup_reason() {  // for debug
  esp_sleep_wakeup_cause_t wakeup_reason;
  wakeup_reason = esp_sleep_get_wakeup_cause();
  switch (wakeup_reason) {
    case ESP_SLEEP_WAKEUP_EXT0: Serial.println("Wakeup caused by external signal using RTC_IO"); break;
    case ESP_SLEEP_WAKEUP_EXT1: Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
    case ESP_SLEEP_WAKEUP_TIMER: Serial.println("Wakeup caused by timer"); break;
    case ESP_SLEEP_WAKEUP_TOUCHPAD: Serial.println("Wakeup caused by touchpad"); break;
    case ESP_SLEEP_WAKEUP_ULP: Serial.println("Wakeup caused by ULP program"); break;
    default: Serial.printf("Wakeup was not caused by light sleep: %d\n", wakeup_reason); break;
  }
}

void print_GPIO_wake_up() {  // Method to print the GPIO that triggered the wakeup
  uint64_t GPIO_reason = esp_sleep_get_ext1_wakeup_status();
  Serial.print("GPIO that triggered the wake up: GPIO ");
  Serial.println((log(GPIO_reason)) / log(2), 0);
}


void RFID_info() {
  if (current_Millis - prev_RFID_millis > RFID_time) {
    uint8_t values[8] = { 0 };
    if (tag.getDeviceUID(values)) {
      Serial.print(F("RFID UID: "));
      for (uint8_t i = 0; i < 8; i++) {
        if (values[i] < 0x0a)
          Serial.print(F("0"));
        Serial.print(values[i], HEX);
        Serial.print(F(" "));
      }
    }
    Serial.println(" ");
    uint8_t rev;
    if (tag.getDeviceRevision(&rev))  // Read the Device Revision
    {
      Serial.print(F("Revision: "));
      Serial.println(rev);  // Print it in decimal format
    } else
      Serial.println(F("Could not read device revision!"));
    prev_RFID_millis = current_Millis;
  }
}


void write_RFID_tag() {
  // Clear the first 256 bytes of user memory
  uint8_t tagMemory[256];
  memset(tagMemory, 0, 256);

  Serial.println("Writing 0x0 to the first 256 bytes of user memory.");
  tag.writeEEPROM(0x0, tagMemory, 256);

  // -=-=-=-=-=-=-=-=-

  // Write the Type 5 CC File - starting at address zero
  Serial.println(F("Writing CC_File"));
  tagwriteCCFile8Byte();

  // -=-=-=-=-=-=-=-=-

  // Write one NDEF UTF-8 Text record
  uint16_t memLoc = tag.getCCFileLen();

  Serial.println(F("Writing the first NDEF Text record"));
  char buffer[85];
  int days = 3;
  int alarm1_hr = 8;
  int alarm1_min = 30;
  sprintf(buffer, "READ USER has taken their medication for %d days. Alarm Time is set for %d:%d ", days, alarm1_hr, alarm1_min);
  tag.writeNDEFText(buffer, &memLoc, true, true);  // MB=1, ME=1
}


When I compile I get the following error/s:

C:\Users\mbiasotti\Documents\Arduino\sketchbook\READ\Read_final_Rev5_firebeetle\Read_final_Rev5_firebeetle.ino: In function 'void write_RFID_tag()':
C:\Users\mbiasotti\Documents\Arduino\sketchbook\READ\Read_final_Rev5_firebeetle\Read_final_Rev5_firebeetle.ino:498:3: error: 'tagwriteCCFile8Byte' was not declared in this scope
   }
   ^                  
C:\Users\mbiasotti\Documents\Arduino\sketchbook\READ\Read_final_Rev5_firebeetle\Read_final_Rev5_firebeetle.ino:503:25: error: 'class SFE_ST25DV64KC' has no member named 'getCCFileLen'
 void end_of_days() {
                         ^           
C:\Users\mbiasotti\Documents\Arduino\sketchbook\READ\Read_final_Rev5_firebeetle\Read_final_Rev5_firebeetle.ino:511:7: error: 'class SFE_ST25DV64KC' has no member named 'writeNDEFText'
   sleep_delay_time = 15000;
       ^~~~~~~~~~~~~

exit status 1

Compilation error: 'tagwriteCCFile8Byte' was not declared in this scope

I unclear as to why it will not compile when I’m using the same library and same commands in this larger sketch? Could it be other libraries that are interferring with the SFE_ST25DV64KC library?

tagwriteCCFile8Byte();

Should be:

tag.writeCCFile8Byte();

@PaulZC Thanks, but that is not it. When I change tagwriteCCFile8Byte() to tag.writeCCFile8Byte() and try to compile I get:

Compilation error: ‘class SFE_ST25DV64KC’ has no member named ‘writeCCFile8Byte’

I’m referencing this document:

UPDATE: I found my problem.

I had:

SFE_ST25DV64KC tag; // create RFID object

instead corrected it to:

SFE_ST25DV64KC_NDEF tag;

1 Like

Hi Mark,

Glad you found the issue. The base class is SFE_ST25DV64KC. class SFE_ST25DV64KC_NDEF is derived, and adds the NDEF methods.

Best,
Paul

1 Like