Issues calling functions through serial.

This is all wrong (and I am being polite)

void a() {  // get input through serial
    recvWithStartEndMarkers();
    showNewData();
c=receivedChars;
s = String(c);
   // Serial.println(s);
}

For one thing, c is defined as a char and receivedChars[] is defined as an array and you CANNOT but an array into a single char.

Even if you could, what would be point of converting it to the String class since the whole purpose of my example code is to avoid using the String class. It is not a good idea to use the String (capital S) class on an Arduino as it can cause memory corruption in the small memory on an Arduino. Just use cstrings - char arrays terminated with 0.

And, if that were not enough, you are trying to do something with receivedChars[] when you have no idea whether it contains the complete incoming message. Look at how showNewData() deals with that and emulate it.

This part also suffers from the problem I mentioned in the previous paragraph

if (s = 'on') { //decide if days on or off and change the led state if it does.
  digitalWrite(13,HIGH);
} else if (s == 'off') {
  digitalWrite(13, LOW);
}

Finally, if all you want to do is control ON and OFF why not just send the single character 'N' for "on" and 'F' for "off"

...R