Expected identifier before numeric constant error causing class from library to fail

Hello, I am having trouble running this library that I had downloaded from the Arduino IDE, it seems that there is something wrong with the library itself causing it to fail. Any help is appreciated!

Arduino: 1.8.19 (Windows 10), Board: "Arduino Uno"

In file included from c:\users\slaph\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:272:0,

                 from c:\users\slaph\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,

                 from C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\cores\arduino/Arduino.h:28,

                 from C:\Users\slaph\Desktop\Advanced_Serial\TSM.h:4,

                 from C:\Users\slaph\Desktop\Advanced_Serial\TSM.cpp:1:

TSM.h:19:7: error: expected identifier before numeric constant

 class TSM{

       ^

TSM.h:19:7: error: expected unqualified-id before numeric constant

TSM.cpp:4:1: error: expected unqualified-id before numeric constant

 TSM::TSM(HardwareSerial& stream) {

 ^

TSM.cpp:9:5: error: expected unqualified-id before numeric constant

 int TSM::begin(long baudrate) {

     ^

TSM.cpp:20:5: error: expected unqualified-id before numeric constant

 int TSM::available() {

     ^

TSM.cpp:24:5: error: expected unqualified-id before numeric constant

 int TSM::flush() {

     ^

TSM.cpp:31:10: error: expected unqualified-id before numeric constant

 uint8_t* TSM::readRawData() {

          ^

TSM.cpp:31:10: error: expected initializer before numeric constant

TSM.cpp:39:5: error: expected unqualified-id before numeric constant

 int TSM::readRawData(uint8_t* buf) {

     ^

TSM.cpp:47:10: error: expected unqualified-id before numeric constant

 TSMData& TSM::readData() {

          ^

TSM.cpp:47:10: error: expected initializer before numeric constant

TSM.cpp:56:5: error: expected unqualified-id before numeric constant

 int TSM::readData(TSMData& tsmData) {

     ^

TSM.cpp:66:9: error: expected unqualified-id before numeric constant

 TSMData TSM::dataParsing(uint8_t* buf, size_t buf_len) {

         ^

In file included from c:\users\slaph\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:272:0,

                 from c:\users\slaph\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,

                 from C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\cores\arduino/Arduino.h:28,

                 from sketch\Advanced_Serial.ino.cpp:1:

TSM.h:19:7: error: expected identifier before numeric constant

 class TSM{

       ^

TSM.h:19:7: error: expected unqualified-id before numeric constant

Advanced_Serial:3:1: error: expected unqualified-id before numeric constant

 TSM TSMini(Serial6);

 ^

C:\Users\slaph\Desktop\Advanced_Serial\Advanced_Serial.ino: In function 'void setup()':

Advanced_Serial:13:12: error: 'TSMini' was not declared in this scope

   status = TSMini.begin(115200);

            ^~~~~~

C:\Users\slaph\Desktop\Advanced_Serial\Advanced_Serial.ino:13:12: note: suggested alternative: 'TSM'

   status = TSMini.begin(115200);

            ^~~~~~

            TSM

C:\Users\slaph\Desktop\Advanced_Serial\Advanced_Serial.ino: In function 'void loop()':

Advanced_Serial:24:7: error: 'TSMini' was not declared in this scope

   if (TSMini.available()) {

       ^~~~~~

C:\Users\slaph\Desktop\Advanced_Serial\Advanced_Serial.ino:24:7: note: suggested alternative: 'TSM'

   if (TSMini.available()) {

       ^~~~~~

       TSM

exit status 1

expected identifier before numeric constant



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Here is the library .ccp

#include "TSM.h"

/* TSM object, input the SPI bus and chip select pin */
TSM::TSM(HardwareSerial& stream) {
  _serial = &stream; // SPI bus
}

/* starts communication with the TSM */
int TSM::begin(long baudrate) {
  // begin SPI communication
  _serial->begin(baudrate);
  if(flush() < 0) {
    return -1;
  }
  // successful init, return 1
  return 1;
}

/* returns whether data from TSM is available*/
int TSM::available() {
  return _serial->available();
}

int TSM::flush() {
  _serial->flush();
  memset(_buffer, 0, sizeof(_buffer));
  return 1;
}

/* reads the most current raw data from TSM and stores in _buffer (member variable) */
uint8_t* TSM::readRawData() {
  String str = _serial->readStringUntil('\n');
  str.toCharArray((char*)_buffer, str.length());
  _buffer[str.length()] = '\0';
  return _buffer;
}

/* reads the most current raw data from TSM and stores in buf (argument) */
int TSM::readRawData(uint8_t* buf) {
  String str = _serial->readStringUntil('\n');
  str.toCharArray((char*)buf, str.length());
  buf[str.length()] = '\0';
  return 1;
}

/* reads the most current data from TSM and stores in _buffer (member variable) */
TSMData& TSM::readData() {
  String str = _serial->readStringUntil('\n');
  str.toCharArray((char*)_buffer, str.length());
  _buffer[str.length()] = '\0';
  _tsmData = dataParsing(_buffer, sizeof(_buffer));
  return _tsmData;
}

/* reads the most current data from TSM and stores in tsmData (argument) */
int TSM::readData(TSMData& tsmData) {
  String str = _serial->readStringUntil('\n');
  str.toCharArray((char*)_buffer, str.length());
  _buffer[str.length()] = '\0';
  tsmData = dataParsing(_buffer, sizeof(_buffer));
  return 1;
}


/* raw data parsing */
TSMData TSM::dataParsing(uint8_t* buf, size_t buf_len) {
  TSMData tsmData = {};
  char temp4[4];
  char temp6[6];
  char temp8[8];
  char temp10[10];

  unsigned int idx = 0;
  while(idx < buf_len) {
    switch (buf[idx]) {
      case 'A':
        if (buf[idx+1] == 'D') {
          memcpy(temp10, &buf[idx+3], sizeof(temp10));
          tsmData.airDensity = atof(temp10);
          idx = idx + 12;
        }
        break;
      case 'D':
        if (buf[idx+1] == ' ') {
          memcpy(temp4, &buf[idx+2], sizeof(temp4));
          tsmData.windDirHor = atoi(temp4);
          idx = idx + 6;
        }
        else if (buf[idx+1] == 'V') {
          memcpy(temp4, &buf[idx+3], sizeof(temp4));
          tsmData.windDirVer = atoi(temp4);
          idx = idx + 6;
        }
        break;
      case 'H':
        memcpy(temp6, &buf[idx+2], sizeof(temp6));
        tsmData.humidity = atof(temp6);
        idx = idx + 8;
        break;
      case 'P':
        if (buf[idx+1] == ' ') {
          memcpy(temp8, &buf[idx+2], sizeof(temp8));
          tsmData.pressure = atof(temp8);
          idx = idx + 10;
        }
        else if (buf[idx+1] == 'I') {
          memcpy(temp6, &buf[idx+3], sizeof(temp6));
          tsmData.pitch = atof(temp6);
          idx = idx + 8;
        }
        break;
      case 'R':
        if (buf[idx+1] == 'O') {
          memcpy(temp6, &buf[idx+3], sizeof(temp6));
          tsmData.roll = atof(temp6);
          idx = idx + 8;
        }
        break;
      case 'S':
        if (buf[idx+1] == ' ') {
          memcpy(temp6, &buf[idx+2], sizeof(temp6));
          tsmData.windSpeed3D = atof(temp6);
          idx = idx + 8;
        }
        else if (buf[idx+1] == '2') {
          memcpy(temp6, &buf[idx+3], sizeof(temp6));
          tsmData.windSpeed2D = atof(temp6);
          idx = idx + 8;
        }
        break;
      case 'T':
        memcpy(temp6, &buf[idx+2], sizeof(temp6));
        tsmData.sonicTemp = atof(temp6);
        idx = idx + 8;
        break;
      default:
        idx++;
        break;
    }
    if (buf[idx] == '\0') { break; }
  }
  return tsmData;
}

And the header file

#ifndef TSM_H
#define TSM_H

#include "Arduino.h"

struct TSMData {
  float windSpeed3D;
  float windSpeed2D;
  int16_t windDirHor;
  int16_t windDirVer;
  float sonicTemp;
  float humidity;
  float pressure;
  float airDensity;
  float pitch;
  float roll;
};

class TSM{
  public:
    TSM(HardwareSerial& stream);
    int begin(long baudrate);
    int available();
    int flush();
    uint8_t* readRawData();
    int readRawData(uint8_t* buf);
    TSMData& readData();
    int readData(TSMData& tsmData);
  protected:
    TSMData dataParsing(uint8_t* buf, size_t buf_len);
    // serial(uart)
    HardwareSerial* _serial = {};
    // buffer for reading from sensor
    TSMData _tsmData = {};
    uint8_t _buffer[300];
};

#endif // TSM_H

Here is the verbose error code

Arduino: 1.8.19 (Windows 10), Board: "Arduino Uno"
C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\slaph\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\slaph\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\slaph\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10819 -build-path C:\Users\slaph\AppData\Local\Temp\arduino_build_420892 -warnings=none -build-cache C:\Users\slaph\AppData\Local\Temp\arduino_cache_269737 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.avr-gcc.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avrdude.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -verbose C:\Users\slaph\Desktop\Advanced_Serial\Advanced_Serial.ino

C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\slaph\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\slaph\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\slaph\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10819 -build-path C:\Users\slaph\AppData\Local\Temp\arduino_build_420892 -warnings=none -build-cache C:\Users\slaph\AppData\Local\Temp\arduino_cache_269737 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.avr-gcc.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avrdude.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -verbose C:\Users\slaph\Desktop\Advanced_Serial\Advanced_Serial.ino

Using board 'uno' from platform in folder: C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5

Using core 'arduino' from platform in folder: C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5

Detecting libraries used...

"C:\\Users\\slaph\\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=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Users\\slaph\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\slaph\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\standard" "C:\\Users\\slaph\\AppData\\Local\\Temp\\arduino_build_420892\\sketch\\Advanced_Serial.ino.cpp" -o nul

"C:\\Users\\slaph\\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=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Users\\slaph\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\slaph\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\standard" "C:\\Users\\slaph\\AppData\\Local\\Temp\\arduino_build_420892\\sketch\\TSM.cpp" -o nul

Generating function prototypes...

"C:\\Users\\slaph\\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=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Users\\slaph\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\slaph\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\standard" "C:\\Users\\slaph\\AppData\\Local\\Temp\\arduino_build_420892\\sketch\\Advanced_Serial.ino.cpp" -o "C:\\Users\\slaph\\AppData\\Local\\Temp\\arduino_build_420892\\preproc\\ctags_target_for_gcc_minus_e.cpp"

"C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\slaph\\AppData\\Local\\Temp\\arduino_build_420892\\preproc\\ctags_target_for_gcc_minus_e.cpp"

Compiling sketch...

"C:\\Users\\slaph\\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 -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Users\\slaph\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\slaph\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\standard" "C:\\Users\\slaph\\AppData\\Local\\Temp\\arduino_build_420892\\sketch\\Advanced_Serial.ino.cpp" -o "C:\\Users\\slaph\\AppData\\Local\\Temp\\arduino_build_420892\\sketch\\Advanced_Serial.ino.cpp.o"

"C:\\Users\\slaph\\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 -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Users\\slaph\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\slaph\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\standard" "C:\\Users\\slaph\\AppData\\Local\\Temp\\arduino_build_420892\\sketch\\TSM.cpp" -o "C:\\Users\\slaph\\AppData\\Local\\Temp\\arduino_build_420892\\sketch\\TSM.cpp.o"

In file included from c:\users\slaph\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:272:0,

                 from c:\users\slaph\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,

                 from C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\cores\arduino/Arduino.h:28,

                 from C:\Users\slaph\AppData\Local\Temp\arduino_build_420892\sketch\Advanced_Serial.ino.cpp:1:

TSM.h:19:7: error: expected identifier before numeric constant

 class TSM{

       ^

TSM.h:19:7: error: expected unqualified-id before numeric constant

Advanced_Serial:3:1: error: expected unqualified-id before numeric constant

 TSM TSMini(Serial6);

 ^

C:\Users\slaph\Desktop\Advanced_Serial\Advanced_Serial.ino: In function 'void setup()':

Advanced_Serial:13:12: error: 'TSMini' was not declared in this scope

   status = TSMini.begin(115200);

            ^~~~~~

C:\Users\slaph\Desktop\Advanced_Serial\Advanced_Serial.ino:13:12: note: suggested alternative: 'TSM'

   status = TSMini.begin(115200);

            ^~~~~~

            TSM

C:\Users\slaph\Desktop\Advanced_Serial\Advanced_Serial.ino: In function 'void loop()':

Advanced_Serial:24:7: error: 'TSMini' was not declared in this scope

   if (TSMini.available()) {

       ^~~~~~

C:\Users\slaph\Desktop\Advanced_Serial\Advanced_Serial.ino:24:7: note: suggested alternative: 'TSM'

   if (TSMini.available()) {

       ^~~~~~

       TSM

In file included from c:\users\slaph\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\io.h:272:0,

                 from c:\users\slaph\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr\pgmspace.h:90,

                 from C:\Users\slaph\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\cores\arduino/Arduino.h:28,

                 from C:\Users\slaph\Desktop\Advanced_Serial\TSM.h:4,

                 from C:\Users\slaph\Desktop\Advanced_Serial\TSM.cpp:1:

TSM.h:19:7: error: expected identifier before numeric constant

 class TSM{

       ^

TSM.h:19:7: error: expected unqualified-id before numeric constant

TSM.cpp:4:1: error: expected unqualified-id before numeric constant

 TSM::TSM(HardwareSerial& stream) {

 ^

TSM.cpp:9:5: error: expected unqualified-id before numeric constant

 int TSM::begin(long baudrate) {

     ^

TSM.cpp:20:5: error: expected unqualified-id before numeric constant

 int TSM::available() {

     ^

TSM.cpp:24:5: error: expected unqualified-id before numeric constant

 int TSM::flush() {

     ^

TSM.cpp:31:10: error: expected unqualified-id before numeric constant

 uint8_t* TSM::readRawData() {

          ^

TSM.cpp:31:10: error: expected initializer before numeric constant

TSM.cpp:39:5: error: expected unqualified-id before numeric constant

 int TSM::readRawData(uint8_t* buf) {

     ^

TSM.cpp:47:10: error: expected unqualified-id before numeric constant

 TSMData& TSM::readData() {

          ^

TSM.cpp:47:10: error: expected initializer before numeric constant

TSM.cpp:56:5: error: expected unqualified-id before numeric constant

 int TSM::readData(TSMData& tsmData) {

     ^

TSM.cpp:66:9: error: expected unqualified-id before numeric constant

 TSMData TSM::dataParsing(uint8_t* buf, size_t buf_len) {

         ^

exit status 1

expected identifier before numeric constant


Post your smallest sketch that makes this happen.

Post a link to where you learned about the library, and a link to the place you downloaded it.

The library shouldn't do that (!), is it just a missing semicolon on the previous thing?

a7

The sketch that makes it happen is the example sketch included with the library. I believe I fixed it to make it compile, I basically changed wherever it says TSM to TSMS and it compiles? I did this throughout the entire library manually, in the header, .cpp, and the example sketch. Is TSM a forbidden class name?

Here is the basic example included with the library:

#include "TSM.h"

TSM TSMini(Serial6);

void setup() {
  int status;

  // serial to display data
  Serial.begin(115200);
  while(!Serial) {}

  // start communication with TSMini
  status = TSMini.begin(115200);
  if (status < 0) {
    Serial.println("TriSonica Mini initialization unsuccessful");
    Serial.println("Check TriSonica Mini wiring");
    Serial.print("Status: ");
    Serial.println(status);
    while(1) {}
  }
}

void loop() {
  if (TSMini.available()) {
    char* rawData = (char*)TSMini.readRawData();
    Serial.write(rawData);
    Serial.println("");
  }
}

And the link to the Git repository for it

And the link for the library on the Arduino website

@verian - THX. Perfcet.

If you mean literally a global replacement of TSMS for all instances of TSM, library and you sketch, the only thing to wonder is WTF.

L8R:

I global replaced TSM with TSMK, without looking, and can say that the same thing happened. Went from the error you quote to no error on verify.

I searched in the portable installation I have and there were a crap-ton of matches for TSM relating to the mysterious (to me) /* Timer/Counter Synchronization Mode */

So...

  Is TSM a forbidden class name?

Dunno, but I think it is clearly a name conflict of some kind.

Let's wait for the heavies to 'splain this better.

a7

It seems that TSM is a macro.

void setup() {
  Serial.begin(9600);
  Serial.println(TSM);  // Prints "7" (on a Mega).
}

Apparently it stands for "Timer/Counter Synchronization Mode". For the Mega, it seems to be defined here:

I'm surprised your messages didn't include the usual "in expansion of macro 'TSM'" note.

Maybe adding #undef TSM just before #include "TSM.h" would fix the conflict.

I placed it there but found that TSM.h includes Arduino.h

#include "Arduino.h"

# undef TSM

so the one place to do it would be in the TMS.h file after Arduino.h is included.

Sketch compiles, but I am left wondering if there would be larger circumstances in which the undef would be a bad thing.

a7

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