CNC MPG pendant code error

I have built the CNC Control Pendant for Mach4, connected through USB Serial originated by Simon Rafferty on GitHub https://github.com/SimonRafferty/Mach4-Serial-Pendant

This is my first post, so please excuse any missteps.

I am using a basic Nano board but am receiving coding errors in the Arduin IDE.
This is the code.

// This is a Pendant for Mach4 which runs over Serial / USB
// Attach an MPG Wheel to your Arduino Nano.  I'm using A to D3
// & B to D4.  D3 is important as it maps to Interrupt 1
// There's an I2C Touch display for the Pendant buttons.
// When a button is pressed or the MPG moved, a single character 
// command is sent to Mach4 over Serial.  When it's acted upon, 
// Mach4 sends the button state or DRO value back which is updated
// on the display.  This gives a remote confirmation of the command.

// Sent Commands:
// I : MPG Increment    D : MPG Decrement
// X : Jog X Axis      Y : Jog Y Axis      Z : Jog Z Axis      F : Feed Rate Override   Q : Spindle Override  N : Move No Axis (disable MPG)         
// 1 : Jog Inc 0.001    2 : Jog Inc 0.010    3 : Jog Inc 0.100    4 : Jog Inc 1.000
// E : E-Stop
// C : Coolant
// H : Feed Hold
// S : Start Cycle
// T : Stop Cycle
// K : In resopnse to a sent 'O' - used to check comms

// Received Commands.  The Parser (https://github.com/pvizeli/CmdParser)
// Expects "Command<space>Param1<space>Param2....etc..\n"
// D ? #.####   : DRO Count [X,Y,Z,S,F]
// J ? : [X,Y,Z,S,F,N] Which Axis Mach4 thinks is Active for Jogging 
// I # : [1,2,3,4] Active Jog Increment
// B E # : 1=E-Stop 0=Not E-Stop
// B C # : 1=Coolant Active 0=Coolant Inactive
// B H # : 1=Feed Hold Active 0=Feed Hold Inactive
// B S # : 1=Start Cycle Active   0=Stopped
// O : Replies with K - used to check comms


#include <CmdBuffer.hpp>
#include <CmdCallback.hpp>
#include <CmdParser.hpp>

CmdCallback<5> cmdCallback;

CmdBuffer<32> myBuffer;
CmdParser     myParser;


float XDRO = 0;      //Store for current X Position
float YDRO = 0;      //Store for current X Position
float ZDRO = 0;      //Store for current X Position
float LastXDRO = 0;      //Store for current X Position
float LastYDRO = 0;      //Store for current X Position
float LastZDRO = 0;      //Store for current X Position
int SDRO = 0;        //Store for Spindle Speed
int FDRO = 0;        //Store for Feed Rate Override
char DROVal[9]; // Buffer big enough for 8-character float

int32_t MPGCount = 0;   //Last MPG Count Value
int step_state = 1;

#include "LiquidCrystalDisplay.h"

const uint8_t User01[]="USER";  //Text for user defined button
const uint8_t User02[]="USER";  //Text for user defined button
const uint8_t InitStep[]="0.0000";  //Initialisation of text labels 
const uint8_t InitDisp[]="0000.0000";  //Initialisation of text labels 

const uint8_t String01[]="Password ok!";
const uint8_t String02[]="Password error!";
const uint8_t String03[]="Error";

const uint8_t String04[]="Input number ok!";
const uint8_t String05[]="Input number error!";

uint16_t HighlightColour = 0xFEA0; //Yellow
uint16_t DROTextColour = 0xFFFF; //Light Yellow
uint16_t TransparentColour = 0xC618;

int EnabledState = 0;

uint8_t   identifier,cnt;
uint8_t   cmd_buffer[CMD_MAX_SIZE];
uint8_t   data_size;
uint8_t   update_en;
uint8_t   command_cmd;
uint8_t   command_statu;
uint8_t   command_length;
uint8_t   page_Id_bk = 0;
uint8_t   page_Id = 1;
uint8_t   targe_Id = 0;

long DROUpdate = 0;

LiquidCrystal TFTlcd(13);//RST pin13

void setup()
{
  update_en =0;
  data_size =0;
  TFTlcd.queue_reset();
  pinMode(3,INPUT_PULLUP); //MPG A Signal
  pinMode(4,INPUT_PULLUP); //MPG B Signal
  
  Serial.begin(115200);
  Serial.println(F("Pendant Started"));
  TFTlcd.begin();
  TFTlcd.SetBackLight(100); //Set the backlight
  delay(100);

  /*
  TFTlcd.SetBackLight(30); //Set the backlight
  delay(500);
  TFTlcd.SetBackLight(100); //Set the backlight
  delay(500);
  TFTlcd.SetBackLight(30); //Set the backlight
  delay(500);
  TFTlcd.SetBackLight(100); //Set the backlight
  delay(500);
  */
  attachInterrupt(0,LcdIICInterrupt,FALLING);//Interrupt 0 is D2 PIN
  attachInterrupt(1,UpdateMPG,RISING);//Interrupt 1 is D3 PIN
  TFTlcd.SetPage(1);//main page id is 4
  
  
  //Setup command parser callback functions
  cmdCallback.addCmd("B", &fUpdateButton);
  cmdCallback.addCmd("D", &fUpdateDRO);  
  cmdCallback.addCmd("J", &fUpdateMove);
  cmdCallback.addCmd("I", &fUpdateJogInc);
  cmdCallback.addCmd("O", &fEcho);
  
  myBuffer.setEcho(false);
  
  //Clear Jog Indicators
  
  TFTlcd.RectangleFill(80,15, 20,35, TransparentColour);
  TFTlcd.RectangleFill(80,75, 20,35, TransparentColour);
  TFTlcd.RectangleFill(80,135, 20,35, TransparentColour);


  TFTlcd.PutString(110,10,0x02,0x30,0x01,0x00,DROTextColour, (unsigned char *)InitDisp);  //X DRO
  TFTlcd.PutString(110,70,0x02,0x30,0x01,0x00,DROTextColour, (unsigned char *)InitDisp);  //Y DRO
  TFTlcd.PutString(110,130,0x02,0x30,0x01,0x00,DROTextColour, (unsigned char *)InitDisp); //Z DRO
  TFTlcd.PutString(120,330,0x02,0x30,0x01,0x00,DROTextColour, (unsigned char *)InitStep); //Step DRO

  drawEnableButton(0);
  TFTlcd.PutString(125,270,0x02,0x20,0x00,0x00,0x00, (unsigned char *)User01);
  TFTlcd.PutString(235,270,0x02,0x20,0x00,0x00,0x00, (unsigned char *)User02);

}

void loop()
{
  data_size = TFTlcd.queue_find_cmd(cmd_buffer,CMD_MAX_SIZE);
  if(data_size>0)//receive command
  {
    //Serial.println(data_size, HEX);
    //Serial.println(F("ProcessMessage"));
    ProcessMessage((PCTRL_MSG)cmd_buffer, data_size);//command process
  } 
  
  // Check for new char on serial and call function if command was entered
  cmdCallback.updateCmdProcessing(&myParser, &myBuffer, &Serial);

  
  //Update DROs every 100ms
  if(millis()-DROUpdate>100) {
    if(LastXDRO!=XDRO) {
      dtostrf(XDRO, 8, 4, DROVal);        
      TFTlcd.DisplayCut_Image(110,10,200,40,0x01);  //Clear box
      TFTlcd.PutString(110,10,0x02,0x30,0x01,0x00,DROTextColour, (unsigned char *)DROVal);  //X DRO
      LastXDRO=XDRO;
    }
    if(LastYDRO!=YDRO) {
      dtostrf(YDRO, 8, 4, DROVal);        
      TFTlcd.DisplayCut_Image(110,70,200,40,0x01);  //Clear box
      TFTlcd.PutString(110,70,0x02,0x30,0x01,0x00,DROTextColour, (unsigned char *)DROVal);  //Y DRO
      LastYDRO=YDRO;
    }

    
    if(LastZDRO!=ZDRO) {
      dtostrf(ZDRO, 8, 4, DROVal);        
      TFTlcd.DisplayCut_Image(110,130,200,40,0x01);  //Clear box
      TFTlcd.PutString(110,130,0x02,0x30,0x01,0x00,DROTextColour, (unsigned char *)DROVal); //Z DRO
      LastZDRO=ZDRO;
    }
    DROUpdate = millis();
  }
  
}


void UpdateMPG() {
//Send Serial command to Mach4 to Jog  Triggered on rising edge of MPG A line
//This is a very simple, single interrupt, quadrature decoder
  if(digitalRead(4)) {
    Serial.println("D");
  } else {
    Serial.println("I");
  }
}



void LcdIICInterrupt()
{
    //Serial.println("IRQ 0");
    command_cmd = TFTlcd.I2C_Read();
    TFTlcd.queue_push(command_cmd);
    for(cnt =0;cnt <2;cnt++)
    {
     identifier = TFTlcd.I2C_Read();
     TFTlcd.queue_push(identifier);
     //Serial.println(identifier, HEX);
    }
    command_statu = TFTlcd.I2C_Read();
    TFTlcd.queue_push(command_statu);
    identifier = TFTlcd.I2C_Read();
    TFTlcd.queue_push(identifier);
    command_length = TFTlcd.I2C_Read();
    TFTlcd.queue_push(command_length);
    if((command_cmd == GET_EDIT_VALUE && command_statu == 0x6f)||(command_cmd == GET_TOUCH_EDIT_VALUE && command_statu == 0x6f))
    {
       for(cnt =0;cnt <command_length;cnt++)
      {
       identifier = TFTlcd.I2C_Read();
       TFTlcd.queue_push(identifier);
       //Serial.println(identifier, HEX);
      }
    }
}

  
void fEcho(CmdParser *myParser) {
//Comms check.  An 'O' has been received, send 'K' 
  Serial.println("K");
}
  
  

void fUpdateDRO(CmdParser *myParser) {
//Command will have two parameters - The Axis Name [X,Y,Z,S,F] and a Value

if (myParser->equalCmdParam(1, "X")) {
        XDRO = atof(myParser->getCmdParam(2));
        //Set X DRO value on screen
        //Serial.print("Set X DRO To: "); Serial.println(XDRO);
    }
    if (myParser->equalCmdParam(1, "Y")) {
        YDRO = atof(myParser->getCmdParam(2));
    }
    if (myParser->equalCmdParam(1, "Z")) {
        ZDRO = atof(myParser->getCmdParam(2));       
    }
    if (myParser->equalCmdParam(1, "S")) {
        SDRO = atoi(myParser->getCmdParam(2));
        dtostrf(SDRO, 8, 4, DROVal);
        //Not implemented
    }
    if (myParser->equalCmdParam(1, "F")) {
        FDRO = atoi(myParser->getCmdParam(2));
        dtostrf(FDRO, 8, 4, DROVal);
        //Not implemented
    }
  
}
void fUpdateMove(CmdParser *myParser) 
{
//Command will have one parameter - The Axis Name [X,Y,Z,S,F,N] for which Jog is active  N=None
    //Clear 
    TFTlcd.RectangleFill(80,15, 20,35, TransparentColour);
    TFTlcd.RectangleFill(80,75, 20,35, TransparentColour);
    TFTlcd.RectangleFill(80,135, 20,35, TransparentColour);

    if (myParser->equalCmdParam(1, "X")) {
        //Set indicator active (and others inactive)
        //Draw filled rectangle next to X
        TFTlcd.RectangleFill(80,15, 20,35, HighlightColour);
        
        //Serial.println("Jog X");
    }
    if (myParser->equalCmdParam(1, "Y")) {
        //Set indicator active (and others inactive)
        //Draw filled rectangle next to Y
        TFTlcd.RectangleFill(80,75, 20,35, HighlightColour);
        //Serial.println("Jog Y");
    }
    if (myParser->equalCmdParam(1, "Z")) {
        //Set indicator active (and others inactive)
        //Draw filled rectangle next to Z
        TFTlcd.RectangleFill(80,135, 20,35, HighlightColour);
        //Serial.println("Jog Z");
    }
    if (myParser->equalCmdParam(1, "S")) {
        //Set indicator active (and others inactive)
        //Serial.println("Jog S");
    }
    if (myParser->equalCmdParam(1, "F")) {
        //Set indicator active (and others inactive)
        Serial.println("Jog FRO");
    }
    if (myParser->equalCmdParam(1, "N")) {
        //Set all indicators Inactive
        //Clear 
        TFTlcd.RectangleFill(80,15, 20,35, TransparentColour);
        TFTlcd.RectangleFill(80,75, 20,35, TransparentColour);
        TFTlcd.RectangleFill(80,135, 20,35, TransparentColour);
        //Serial.println("Jog NONE");
    }
  
}
void fUpdateJogInc(CmdParser *myParser) 
{
//Command will have one parameter - 1,2,3,4 indicating the joc increment
  const uint8_t sInc1[]="0.0010";    
  const uint8_t sInc2[]="0.0100";    
  const uint8_t sInc3[]="0.1000";    
  const uint8_t sInc4[]="1.0000";    
  
    TFTlcd.DisplayCut_Image(120,330,200,40,0x01);  //Clear box
    if (myParser->equalCmdParam(1, "1")) {
        //Set Jog Increment to 0.001
        //Serial.println("Update Jog DRO 0.0010");
        TFTlcd.PutString(120,330,0x02,0x30,0x01,0x00,DROTextColour, (unsigned char *)sInc1); //Step DRO
    }
    if (myParser->equalCmdParam(1, "2")) {
        //Set Jog Increment to 0.010
        TFTlcd.PutString(120,330,0x02,0x30,0x01,0x00,DROTextColour, (unsigned char *)sInc2); //Step DRO
    }
    if (myParser->equalCmdParam(1, "3")) {
        //Set Jog Increment to 0.100
        TFTlcd.PutString(120,330,0x02,0x30,0x01,0x00,DROTextColour, (unsigned char *)sInc3); //Step DRO
    }
    if (myParser->equalCmdParam(1, "4")) {
        //Set Jog Increment to 1.000
        TFTlcd.PutString(120,330,0x02,0x30,0x01,0x00,DROTextColour, (unsigned char *)sInc4); //Step DRO
    }
  
}
void drawEnableButton(int Active)
{
  if(Active==1) {
    //Draw rectangle on ENABLE Button
    TFTlcd.RectangleFill(5,405,310,70, 0xF800); //Colour button RED
    TFTlcd.PutString(90,415,0x01,0x30,0x01,0xF800,DROTextColour, (unsigned char *)"E-STOP"); //E-Stop
  } else {
    //Clear rectangle
    //TFTlcd.DisplayCut_Image(5,405,310,70,0x01);  //Clear box
    
    TFTlcd.RectangleFill(5,405,310,70, 0xC618); //Colour button GREY
    TFTlcd.PutString(80,415,0x01,0x30,0x01,0xC618,0x00, (unsigned char *)"MPG OFF"); //E-Stop
  }

}

void fUpdateButton(CmdParser *myParser) 
{
int Active = 0;
//Serial.println("Button Pressed");
//Command will have two parameters - A character indicating the Button then 1 to indicate Active, 0 for Inactive
    if (myParser->equalCmdParam(1, "E")) {
        Active = atoi(myParser->getCmdParam(2));
        drawEnableButton(Active);
        EnabledState = Active;
    }
    if (myParser->equalCmdParam(1, "C")) {
        Active = atoi(myParser->getCmdParam(2));
        //Serial.print("Coolant "); Serial.println(Active);
        if(Active==1) {
          //Draw rectangle on Coolant Button
          TFTlcd.RectangleFill(15,260,75,10, HighlightColour);
        } else {
          //Clear rectangle
          TFTlcd.DisplayCut_Image(15,260,75,10,0x00);  //Clear box
        }
    }
    if (myParser->equalCmdParam(1, "H")) {
        Active = atoi(myParser->getCmdParam(2));
        if(Active==1) {
          //Draw rectangle on Hold Button
          TFTlcd.RectangleFill(120,200,75,10, HighlightColour);
        } else {
          //Clear rectangle
          TFTlcd.DisplayCut_Image(120,200,75,10,0x00);  //Clear box
        }
    }
    if (myParser->equalCmdParam(1, "S")) {
        Active = atoi(myParser->getCmdParam(2));
        if(Active==1) {
          //Draw rectangle on START Button
          TFTlcd.RectangleFill(15,200,75,10, HighlightColour);
          // Clear Rectangle on STOP Button
          TFTlcd.DisplayCut_Image(230,200,75,10,0x00);  //Clear box
          
        } else {
          //Draw rectangle on STOP Button
          TFTlcd.RectangleFill(230,200,75,10, HighlightColour);
          //Clear rectangle on START
          TFTlcd.DisplayCut_Image(15,200,75,10,0x00);  //Clear box
        }
    }
 
}
void ProcessMessage( PCTRL_MSG msg, uint16_t dataSize )
{
    uint8_t cmd_type    = msg->cmd_type;
    uint8_t control_id  = msg->control_id;
    uint8_t page_id     = msg->page_id;
    uint8_t _status     = msg->status;
    uint8_t key_type    = msg->key_type;
    uint8_t key_value   = msg->key_value;
    /*
    Serial.println("Process Message");
    Serial.print("cmd_type"); Serial.println(cmd_type);
    Serial.print("control_id"); Serial.println(control_id);
    Serial.print("page_id"); Serial.println(page_id);
    Serial.print("_status"); Serial.println(_status);
    Serial.print("key_type"); Serial.println(key_type);
    Serial.print("key_value"); Serial.println(key_value);
    */
    if(cmd_type==NOTIFY_TOUCH_BUTTON){
      NotifyTouchButton(page_id,control_id,_status,key_type,key_value);
    }
  
}


void NotifyTouchButton(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
{
  //Serial.println("Touch Button:");
  if(state== KEY_DOWN && control_id==100 )
  { //X Button pressed.
    Serial.println("X"); //Send command to Mach4
  }
  if(state== KEY_DOWN && control_id==101 )
  { //Y Button pressed.
    Serial.println("Y"); //Send command to Mach4
  }
  if(state== KEY_DOWN && control_id==102 )
  { //Z Button pressed.
    Serial.println("Z"); //Send command to Mach4
  }
  if(state== KEY_DOWN && control_id==103 )
  { //START Button pressed.
    Serial.println("S"); //Send command to Mach4
  }
  if(state== KEY_DOWN && control_id==104 )
  { //HOLD Button pressed.
    update_en=true;
    Serial.println("H"); //Send command to Mach4
  }
  if(state== KEY_DOWN && control_id==105 )
  { //STOP Button pressed.
    Serial.println("T"); //Send command to Mach4
  }

  if(state== KEY_DOWN && control_id==106 )
  { //COOLANT Button pressed.
    Serial.println("C"); //Send command to Mach4
  }
  if(state== KEY_DOWN && control_id==107 )
  { //User 1 Button pressed.
    Serial.println("U"); //Send command to Mach4
    TFTlcd.PutString(125,270,0x02,0x20,0x00,0x00,0x00, (unsigned char *)User01);
    TFTlcd.PutString(235,270,0x02,0x20,0x00,0x00,0x00, (unsigned char *)User02);

  }
  if(state== KEY_DOWN && control_id==108 )
  { //User 2 Button pressed.
    Serial.println("V"); //Send command to Mach4
    TFTlcd.PutString(125,270,0x02,0x20,0x00,0x00,0x00, (unsigned char *)User01);
    TFTlcd.PutString(235,270,0x02,0x20,0x00,0x00,0x00, (unsigned char *)User02);
  }
  if(state== KEY_RELEASE && (control_id==108 || control_id==107))
  { //User Button released.
    TFTlcd.PutString(125,270,0x02,0x20,0x00,0x00,0x00, (unsigned char *)User01);
    TFTlcd.PutString(235,270,0x02,0x20,0x00,0x00,0x00, (unsigned char *)User02);
  }
  
  if(state== KEY_DOWN && control_id==109 )
  { //STEP Increment Button pressed.
    update_en=true;
    step_state++;
    if(step_state>4) step_state=1;
    
    //Send serial command to Mach4
    Serial.println(step_state); //Send command to Mach4
  }
  
  if(state== KEY_DOWN && control_id==110 )
  { //ENABLE Increment Button pressed.
    Serial.println("E"); //Send command to Mach4
    drawEnableButton(EnabledState);
  }
  if(state== KEY_RELEASE && control_id==110 )
  { //ENABLE Increment Button pressed.
    //Serial.println("E"); //Send command to Mach4
    drawEnableButton(EnabledState);
  }
}

The code compiles & can be uploaded to the Nano board. This is the Arduino IDE Output response

FQBN: arduino:avr:nano
Using board 'nano' from platform in folder: C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Using core 'arduino' from platform in folder: C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6

Detecting libraries used...
C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\eightanaloginputs C:\Users\Owner\AppData\Local\Temp\arduino\sketches\967716CE7C891935B172261C72CA56EC\sketch\SerialPendant2.ino.cpp -o nul
Alternatives for CmdBuffer.hpp: [CmdParser@1.7]
ResolveLibrary(CmdBuffer.hpp)
  -> candidates: [CmdParser@1.7]
C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\eightanaloginputs -Id:\Users\Owner\Documents\Arduino\Sketchbook\libraries\CmdParser\src C:\Users\Owner\AppData\Local\Temp\arduino\sketches\967716CE7C891935B172261C72CA56EC\sketch\SerialPendant2.ino.cpp -o nul
Using cached library dependencies for file: C:\Users\Owner\AppData\Local\Temp\arduino\sketches\967716CE7C891935B172261C72CA56EC\sketch\I2C.cpp
Using cached library dependencies for file: C:\Users\Owner\AppData\Local\Temp\arduino\sketches\967716CE7C891935B172261C72CA56EC\sketch\LiquidCrystalDisplay.cpp
Using cached library dependencies for file: d:\Users\Owner\Documents\Arduino\Sketchbook\libraries\CmdParser\src\CmdBuffer.cpp
Using cached library dependencies for file: d:\Users\Owner\Documents\Arduino\Sketchbook\libraries\CmdParser\src\CmdCallback.cpp
Using cached library dependencies for file: d:\Users\Owner\Documents\Arduino\Sketchbook\libraries\CmdParser\src\CmdParser.cpp
Generating function prototypes...
C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\eightanaloginputs -Id:\Users\Owner\Documents\Arduino\Sketchbook\libraries\CmdParser\src C:\Users\Owner\AppData\Local\Temp\arduino\sketches\967716CE7C891935B172261C72CA56EC\sketch\SerialPendant2.ino.cpp -o C:\Users\Owner\AppData\Local\Temp\4092349813\sketch_merged.cpp
C:\Users\Owner\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\Owner\AppData\Local\Temp\4092349813\sketch_merged.cpp
Compiling sketch...
"C:\\Users\\Owner\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\Owner\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\Owner\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\eightanaloginputs" "-Id:\\Users\\Owner\\Documents\\Arduino\\Sketchbook\\libraries\\CmdParser\\src" "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC\\sketch\\SerialPendant2.ino.cpp" -o "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC\\sketch\\SerialPendant2.ino.cpp.o"
Using previously compiled file: C:\Users\Owner\AppData\Local\Temp\arduino\sketches\967716CE7C891935B172261C72CA56EC\sketch\I2C.cpp.o
Using previously compiled file: C:\Users\Owner\AppData\Local\Temp\arduino\sketches\967716CE7C891935B172261C72CA56EC\sketch\LiquidCrystalDisplay.cpp.o
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino: In function 'void fEcho(CmdParser*)':
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino:230:23: warning: unused parameter 'myParser' [-Wunused-parameter]
 void fEcho(CmdParser *myParser) {
                       ^~~~~~~~
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino: In function 'void ProcessMessage(PCTRL_MSG, uint16_t)':
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino:400:46: warning: unused parameter 'dataSize' [-Wunused-parameter]
 void ProcessMessage( PCTRL_MSG msg, uint16_t dataSize )
                                              ^~~~~~~~
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino: In function 'void NotifyTouchButton(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)':
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino:424:32: warning: unused parameter 'page_id' [-Wunused-parameter]
 void NotifyTouchButton(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
                                ^~~~~~~
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino:424:84: warning: unused parameter 'type' [-Wunused-parameter]
 void NotifyTouchButton(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
                                                                                    ^~~~
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino:424:97: warning: unused parameter 'value' [-Wunused-parameter]
 void NotifyTouchButton(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
                                                                                                 ^~~~~
Compiling libraries...
Compiling library "CmdParser"
Using previously compiled file: C:\Users\Owner\AppData\Local\Temp\arduino\sketches\967716CE7C891935B172261C72CA56EC\libraries\CmdParser\CmdParser.cpp.o
Using previously compiled file: C:\Users\Owner\AppData\Local\Temp\arduino\sketches\967716CE7C891935B172261C72CA56EC\libraries\CmdParser\CmdBuffer.cpp.o
Using previously compiled file: C:\Users\Owner\AppData\Local\Temp\arduino\sketches\967716CE7C891935B172261C72CA56EC\libraries\CmdParser\CmdCallback.cpp.o
Compiling core...
Using precompiled core: C:\Users\Owner\AppData\Local\Temp\arduino\cores\arduino_avr_nano_cpu_atmega328_5738e5a66cf7c5db5d65c685878846d9\core.a
Linking everything together...
"C:\\Users\\Owner\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -Wall -Wextra -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC/SerialPendant2.ino.elf" "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC\\sketch\\I2C.cpp.o" "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC\\sketch\\LiquidCrystalDisplay.cpp.o" "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC\\sketch\\SerialPendant2.ino.cpp.o" "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC\\libraries\\CmdParser\\CmdBuffer.cpp.o" "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC\\libraries\\CmdParser\\CmdCallback.cpp.o" "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC\\libraries\\CmdParser\\CmdParser.cpp.o" "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC/..\\..\\cores\\arduino_avr_nano_cpu_atmega328_5738e5a66cf7c5db5d65c685878846d9\\core.a" "-LC:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC" -lm
"C:\\Users\\Owner\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC/SerialPendant2.ino.elf" "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC/SerialPendant2.ino.eep"
"C:\\Users\\Owner\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC/SerialPendant2.ino.elf" "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC/SerialPendant2.ino.hex"

Using library CmdParser at version 1.7 in folder: D:\Users\Owner\Documents\Arduino\Sketchbook\libraries\CmdParser 
"C:\\Users\\Owner\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\\Users\\Owner\\AppData\\Local\\Temp\\arduino\\sketches\\967716CE7C891935B172261C72CA56EC/SerialPendant2.ino.elf"
Sketch uses 11164 bytes (36%) of program storage space. Maximum is 30720 bytes.
Global variables use 904 bytes (44%) of dynamic memory, leaving 1144 bytes for local variables. Maximum is 2048 bytes.

Any insights to my problem would be greatly appreciated.

What is the error? It looks like a normal compiler report. Late here, bedtime. More fresh tomorrow,

1 Like

What is the problem, I do not see one.

1 Like

The desktop Arduino IDE returned following errors?

D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino: In function 'void ProcessMessage(PCTRL_MSG, uint16_t)':
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino:400:46: warning: unused parameter 'dataSize' [-Wunused-parameter]
 void ProcessMessage( PCTRL_MSG msg, uint16_t dataSize )
                                              ^~~~~~~~
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino: In function 'void NotifyTouchButton(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)':
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino:424:32: warning: unused parameter 'page_id' [-Wunused-parameter]
 void NotifyTouchButton(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
                                ^~~~~~~
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino:424:84: warning: unused parameter 'type' [-Wunused-parameter]
 void NotifyTouchButton(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
                                                                                    ^~~~
D:\Users\Owner\Documents\Arduino\Sketchbook\SerialPendant2\SerialPendant2.ino:424:97: warning: unused parameter 'value' [-Wunused-parameter]
 void NotifyTouchButton(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)

But I have since used the Arduino web based editor, that verified & compiled without errors.
The pendant LCD screen is now displaying the updated DRO's but not accepting any input from the LCD touch screen.

Maybe i'm asking questions in the wrong category?
Many thanks to contributors who have replied so far.

Those are warnings, not errors. All appear to be stating that there is an argument to the function that is never used in the function. Exactly why the argument is there, but not used, would take some research into the actual library code, and possibly some older versions of the library (or even some other libraries that this library wants to be compatible with).

As for the differences with the web editor, the types and level of warnings that you will see in the IDE is controlled by the preference settings, which can range from None to All. With the None setting, you would likely see only the final couple of lines showing the memory usage.

2 Likes

Thanks for info David.
After checking, both the web editor & desktop IDE are set to verbose.
Regards to the project, I do get the Mach4 DRO's output displayed on the LCD but i am unable to activate the touch screen inputs back to Mach4.
The MPG wheel is inoperative unless i invoke the Mach4 Mouse wizard to select an axis.
In summary, my problem is understanding (and debugging) how the original CNC pendant program interacts with latest release of Mach4, plus debugging the LCD screen for touch inputs (the manufacture's LCD screen test input routine does not appear to work.

Question to moderator. Is there a more appropriate topic area for my questions?
Many thanks again to the thread contributors.

Have you asked over on Mach support?

the ^---- points to where it thinks the problem is. It states that and if it is a warning puts a -W in front of the message. When you get a warning the code should compile and upload. The warning will give you some indication of what may wrong if the code structure.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.