public Msg makeX10Message(byte rawX10, byte X10Flag) throws FieldException, IOException {
   Msg m = Msg.s_makeMessage("SendX10Message");
   m.setByte("rawX10", rawX10);
   m.setByte("X10Flag", X10Flag);
   m.setQuietTime(300L);
   return m;
 }
 /**
  * Helper method to make extended message
  *
  * @param flags
  * @param cmd1
  * @param cmd2
  * @return extended message
  * @throws FieldException
  * @throws IOException
  */
 public Msg makeExtendedMessage(byte flags, byte cmd1, byte cmd2)
     throws FieldException, IOException {
   Msg m = Msg.s_makeMessage("SendExtendedMessage");
   m.setAddress("toAddress", getAddress());
   m.setByte("messageFlags", (byte) (((flags & 0xff) | 0x10) & 0xff));
   m.setByte("command1", cmd1);
   m.setByte("command2", cmd2);
   int checksum = (~(cmd1 + cmd2) + 1) & 0xff;
   m.setByte("userData14", (byte) checksum);
   return m;
 }
 /**
  * Helper method to make standard message, possibly with group
  *
  * @param flags
  * @param cmd1
  * @param cmd2
  * @param group (-1 if not a group message)
  * @return standard message
  * @throws FieldException
  * @throws IOException
  */
 public Msg makeStandardMessage(byte flags, byte cmd1, byte cmd2, int group)
     throws FieldException, IOException {
   Msg m = Msg.s_makeMessage("SendStandardMessage");
   InsteonAddress addr = null;
   if (group != -1) {
     flags |= 0xc0; // mark message as group message
     // and stash the group number into the address
     addr = new InsteonAddress((byte) 0, (byte) 0, (byte) (group & 0xff));
   } else {
     addr = getAddress();
   }
   m.setAddress("toAddress", addr);
   m.setByte("messageFlags", flags);
   m.setByte("command1", cmd1);
   m.setByte("command2", cmd2);
   return m;
 }