/*
Nord Modular Midi Protocol 3.03 Library
Copyright (C) 2003-2006 Marcus Andersson
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package net.sf.nmedit.jnmprotocol2;
import net.sf.nmedit.jnmprotocol2.MidiMessage;
import net.sf.nmedit.jnmprotocol2.NmProtocolListener;
import net.sf.nmedit.jpdl2.*;
public class ErrorMessage extends MidiMessage implements ErrorCodes
{
/**
* Error codes and reasons
*
* code | reason
* ------------------------------------------------------------
* 3 | store patch and set in PatchMessage
* | intStream.append(get("cc") + first + 2*last)
* | where first:=0.
* -----|------------------------------------------------------
* 4 | wrong checksum
* -----|------------------------------------------------------
* 5 | Nord Modular displays "No Slot Focused"
* -----|------------------------------------------------------
* 6 | store patch and set in PatchMessage
* | intStream.append(get("cc") + first + 2*last)
* | where last:=0. then select another patch on the synth
* -----|------------------------------------------------------
*
*/
// checksum error: sc=126,pid=16,code=4,slot=0,cc=20
public ErrorMessage()
{
super();
addParameter("pid", "data:pid");
addParameter("sc", "data:sc");
addParameter("code", "data:data:code");
set("cc", 0x14);
set("sc", 0x7e);
set("code", 0);
isreply = true;
}
public ErrorMessage(PDLPacket packet)
{
this();
setAll(packet);
}
public int getError()
{
return get("code");
}
public void notifyListener(NmProtocolListener listener)
{
listener.messageReceived(this);
}
public String getErrorMessage()
{
String prefix = "[ERROR:"+getError()+"] ";
String suffix = " (slot="+getSlot()+", pid="+get("pid")+")";
String msg = "unknown error";
switch (getError())
{
case NM_CHECKSUM_ERROR:
msg = "checksum error";
break;
}
return prefix+msg+suffix;
}
public boolean isFatal()
{
switch (getError())
{
case NM_CHECKSUM_ERROR:
return false;
default:
//return true;
return false;
}
}
public String toString()
{
return getClass().getName()+" "+getErrorMessage();
}
}