Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Firmata Library (was: Error on uploading firmatta to tiva C) #626

Closed
cjdg opened this issue May 30, 2015 · 13 comments
Closed

Support for Firmata Library (was: Error on uploading firmatta to tiva C) #626

cjdg opened this issue May 30, 2015 · 13 comments

Comments

@cjdg
Copy link

cjdg commented May 30, 2015

when i load the StandardFirmata i get the next error

StandardFirmata.cpp.o: In function setPinModeCallback(unsigned char, int)': StandardFirmata.cpp:(.text._Z18setPinModeCallbackhi+0x5a): undefined reference toServo::attached()'
StandardFirmata.cpp:(.text._Z18setPinModeCallbackhi+0x1ec): undefined reference to Servo::attached()' StandardFirmata.cpp.o: In functionsysexCallback(unsigned char, unsigned char, unsigned char*)':
StandardFirmata.cpp:(.text._Z13sysexCallbackhhPh+0x1d6): undefined reference to `Servo::attached()'
collect2: error: ld returned 1 exit status

@rei-vilo
Copy link
Member

Please refer to #384 and #457 and #608.

@chintanp
Copy link

So, there is no solution to the error .. correct ? I read those issues, and couldnt find anything relevant.

@rei-vilo
Copy link
Member

It seems Firmata has been ported to Energia.

@chintanp
Copy link

Does that mean, we dont have to separately download the folder and add it to libraries ? I did as instructed in https://github.com/energia/Energia/tree/master/libraries/Firmata for initialising Firmata example - StandardFirmata, but I got the error as OP.

@rei-vilo
Copy link
Member

If you have a look at the Boards.h file, only __TM4C123GH6PM__ i.e. LaunchPad Tiva C Series is supported, not __LM4F120H5QR__ i.e. LaunchPad Stellaris.

Just edit the corresponding line and add the missing board:

#elif (defined(__TM4C123GH6PM__) || defined(__LM4F120H5QR__))

@chintanp
Copy link

I am using a TM4C123GXL Launchpad, and when I read the boards.h in the firmata library, it has following definitions in TM4C123GXL section

// Tiva C TM4C123G - EK-TM4C123GXL
#elif defined(TM4C123GH6PM)
#define TOTAL_ANALOG_PINS 13
#define TOTAL_PINS 41
#define VERSION_BLINK_PIN 40
#define IS_PIN_DIGITAL(p) ((p)>=2 && (p)<=TOTAL_PINS && (p)!=16 && (p)!=20 && (p)!=21 && (p)!=22)
#define IS_PIN_ANALOG(p) ((p)>=23 && (p)<=29) || (p==2) || (p==5) || (p==6) || (p==7) || (p==18)
#define IS_PIN_PWM(p) ((p)==2 || (p)==3 || (p)==4 || (p)==7) ||
(p)==14 || (p)==15 || (p)==17 || (p)==19 ||
((p)>=23 && (p)<=26) || (p)==30 ||
((p)>=31 && (p)<=40)
#define IS_PIN_SERVO(p) (IS_PIN_PWM(p) && (p) >= 0 && (p) < MAX_SERVOS)
#define IS_PIN_I2C(p) ((p) == 19 || (p) == 38)
#define PIN_TO_DIGITAL(p) (p)
#define PIN_TO_ANALOG(p) ((p)>=23 && (p)<=26)?(30-(p)):
((p)>=27&&(p)<=29)?(29-p):
((p)==18)?(3):
((p)==2)?(11):
((p)==5)?(9):
((p)==6)?(8):(10)
#define PIN_TO_PWM(p) PIN_TO_DIGITAL(p)
#define PIN_TO_SERVO(p) (p)

What more can I do ?

@chintanp
Copy link

Actually, I understood what you meant when I saw the changes you had made to boards.h, even using the new version results in the same error, which I present verbatim:

StandardFirmata.cpp.o: In function `setPinModeCallback(unsigned char, int)':
StandardFirmata.cpp:(.text._Z18setPinModeCallbackhi+0x5a): undefined reference to     `Servo::attached()'
StandardFirmata.cpp:(.text._Z18setPinModeCallbackhi+0x1ec): undefined reference to `Servo::attached()'
StandardFirmata.cpp.o: In function `sysexCallback(unsigned char, unsigned char, unsigned char*)':
StandardFirmata.cpp:(.text._Z13sysexCallbackhhPh+0x1d6): undefined reference to `Servo::attached()'
collect2.exe: error: ld returned 1 exit status

@rei-vilo
Copy link
Member

Are you using the servo library?

Try and comment the lines related to the servo on the Firmata library.

Also, check TM4C123GH6PM or __TM4C123GH6PM__ is duly defined by Energia with Serial.println(TM4C123GH6PM);.

The Firmata library hasn't been updated for the last 6 months, so I guess it is not widely used and no longer maintained.

@chintanp
Copy link

I am not doing anything with servo. I just want to run the vanilla code as in the example, it just gives me these errors. I tried commenting out the Library: Servo.h, but that creates so many errors, as the code is highly dependent on this library.

I did Serial.println(TM4C123GH6PM); and it worked.

Sorry to bother u, if you are not the maintainer, but suggest keeping the issue open,

@rei-vilo
Copy link
Member

The Firmata library isn't part of the compiled Energia.

A simple sketch compiled against the Stellaris LaunchPad as well as other boards throws the error

sketch_jun22a.ino:1:21: fatal error: Firmata.h: No such file or directory
compilation terminated.

#include "Firmata.h"

void setup() { }

void loop() { }

So, IMHO, this library is no longer part of the package.

@rei-vilo
Copy link
Member

Adding the Firmata folder manually to the Library sub-folder of the sketchbook makes it available.

Compilation against the Stellaris LaunchPad completes successfully. I can't replicate your issue.

Are you using other libraries that may conflict with Firmata?

@rei-vilo rei-vilo changed the title Error on uploading firmatta to tiva C Support for Firmata Library (was: Error on uploading firmatta to tiva C) Jun 28, 2015
@rei-vilo
Copy link
Member

Renamed as Support for Firmata Library

@robertinant
Copy link
Member

This issue was moved to energia/tivac-core#26

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants