#define SECRET_MESSAGE 9999 // mn_Length of message to edittool() for refresh #define SX_LENGTH /*========================================================================== * dosysex * * INPUT: pointer to StringEvent * RETURN: pointer to Event * * EFFECT: gets new tool state from sysex message *=========================================================================*/ static __inline struct Event *dosysex(struct ???Tool *tool, struct StringEvent *event) { register unsigned char *sxdata; struct Message *msg; UWORD sxflag; if (tool->flags & USE_SYSEX) { if (sxdata = checksysex(event,TOOL_SYSEX_ID,tool->tool.toolid)) { sxflag = tool->flags & (USE_SYSEX | FREE_SYSEX); memcpy((void *)&tool->flags,(void *)sxdata,SX_LENGTH); if (sxflag & USE_SYSEX) tool->flags |= USE_SYSEX; if (sxflag & FREE_SYSEX) tool->flags |= FREE_SYSEX; if (tool->tool.window) { if (msg=(struct Message *)functions->myalloc(sizeof(struct Message),0)) { msg->mn_Node.ln_Type = NT_MESSAGE; msg->mn_ReplyPort = NULL; msg->mn_Length = SECRET_MESSAGE; PutMsg(tool->tool.window->UserPort,msg); } } if (tool->flags & FREE_SYSEX) { functions->freestring(event->string); functions->freeevent((struct Event *)event); event=NULL; } else event->tool = tool->tool.next; } } return((struct Event *)event); }