 ////////////////////////////////////////////////////////////////////////////////
 
 void receiveMorseMessage(class OSCMessage &m) {
+  sendInfo("received morse message");
     if (m.isString(0)) {
         int length = m.getDataLength(0);
         char buffer[length+1];

    }

    messageIn.empty();
    writeRGBColor(lastColor);
}

void sendOSC(class OSCMessage &m) {
#ifdef USE_BLUETOOTH
    // "manually" begin Bluetooth/Amarino message
    SLIPSerial.print(startFlag);
#endif

    SLIPSerial.beginPacket();  
    m.send(SLIPSerial); // send the bytes to the SLIP stream
    SLIPSerial.endPacket(); // mark the end of the OSC Packet
    m.empty(); // free the space occupied by the message
        
#ifdef USE_BLUETOOTH
    // "manually" end Bluetooth/Amarino message
    SLIPSerial.print(ack);
#elif defined(DEBUG)
    // put OSC messages on separate lines so as to make them more readable
    SLIPSerial.println("");
#endif  
}

void sendAnalogObservation(class AnalogSampler &s, const char* address) {


////////////////////////////////////////////////////////////////////////////////

void sendError(const char *message) {
    OSCMessage m("/exo/tt/error");
    m.add(message);

    sendOSC(m);
}

void sendInfo(const char *message) {
    OSCMessage m("/exo/tt/info");
    m.add(message);

    sendOSC(m);
}

void sendKeyEvent(const char *keys) {
    OSCMessage m("/exo/tt/keys");
    m.add(keys);

