Unable to compile the Firmata examples

Hi, I have an Arduino Duemilanove and the Arduino 0018 platform running on Windows 7. I'm trying to get the Firmata examples to run, but I always get an error trying to compile the simplest sketch using the Firmata library. It would appear that this is some kind of classpath issue of sorts, where the Arduino environment isn't able to locate the Firmata code, but I would think that in that event I'd see a different error message. Any thoughts on how to troubleshoot this?

Thanks in advance!

The code below yields the error:

In function 'void setup()':
error: 'class FirmataClass' has no member named 'setFirmwareVersion' In function 'void loop()':

#include <Firmata.h>

byte analogPin;

void analogWriteCallback(byte pin, int value)
{
  pinMode(pin,OUTPUT);
  analogWrite(pin, value);
}

void setup()
{
  Firmata.setFirmwareVersion(0, 1);
  Firmata.begin();
}

void loop()
{
  while(Firmata.available()) {
    Firmata.processInput();
  }
  Firmata.sendAnalog(4, analogRead(4));
  Firmata.sendAnalog(5, analogRead(5));
}

You can look at the header file for the Firmata class, and confirm that there is no function named setFirmwareVersion.

class FirmataClass
{
public:
      FirmataClass();
/* Arduino constructors */
    void begin();
    void begin(long);
/* querying functions */
      void printVersion(void);
    void blinkVersion(void);
    void printFirmwareVersion(void);
  [glow]//[/glow]void [glow]setFirmwareVersion[/glow](byte major, byte minor);  // see macro below
    void [glow]setFirmwareNameAndVersion[/glow](const char *name, byte major, byte minor);
/* serial receive handling */
    int available(void);
    void processInput(void);
/* serial send handling */
      void sendAnalog(byte pin, int value);
      void sendDigital(byte pin, int value); // TODO implement this
      void sendDigitalPort(byte portNumber, int portData);
    void sendString(const char* string);
    void sendString(byte command, const char* string);
      void sendSysex(byte command, byte bytec, byte* bytev);
/* attach & detach callback functions to messages */
    void attach(byte command, callbackFunction newFunction);
    void attach(byte command, systemResetCallbackFunction newFunction);
    void attach(byte command, stringCallbackFunction newFunction);
    void attach(byte command, sysexCallbackFunction newFunction);
    void detach(byte command);

Apparently, it's been renamed.

Hmm, interesting. I also see a macro declaration further down the header file that looks like it should alias the setFirmwareNameAndVersion function to the setFirmwareName function:

/* shortcut for setFirmwareNameAndVersion() that uses __FILE__ to set the
 * firmware name.  It needs to be a macro so that __FILE__ is included in the
 * firmware source file rather than the library source file.
 */
#define setFirmwareVersion(x, y)   setFirmwareNameAndVersion(__FILE__, x, y)

Doesn't seem right to me that they'd just change the method signature of such a vital method without providing some sort of backwards compatibility, but maybe there was a good reason... will investigate further.

Maybe I'm trying to use the macro wrong. :}