ebus: add support to read back the debug flags.
authorWerner Koch <wk@gnupg.org>
Sun, 8 Jan 2012 19:00:10 +0000 (20:00 +0100)
committerWerner Koch <wk@gnupg.org>
Sun, 8 Jan 2012 19:00:10 +0000 (20:00 +0100)
ebus/housectl.c
ebus/housed.c
ebus/proto-busctl.h
ebus/shutter.c

index 9679f46..62e9206 100644 (file)
@@ -358,6 +358,30 @@ cmd_set_debug_flags (FILE *fp, byte value)
 }
 
 
+static void
+cmd_query_debug_flags (FILE *fp)
+{
+  byte msg[16];
+  unsigned int crc;
+  int idx;
+
+  msg[0] = PROTOCOL_EBUS_BUSCTL;
+  msg[1] = node_high;
+  msg[2] = node_low;
+  msg[3] = my_addr_high;
+  msg[4] = my_addr_low;
+  msg[5] = P_BUSCTL_QRY_DEBUG;
+  memset (msg+6, 0, 10);
+  crc = compute_crc (msg, 16);
+
+  send_byte_raw (fp, FRAMESYNCBYTE);
+  for (idx=0; idx < 16; idx++)
+    send_byte (fp, msg[idx]);
+  send_byte (fp, crc >> 8);
+  send_byte (fp, crc);
+  fflush (fp);
+}
+
 
 static void
 cmd_query_shutter_schedule (FILE *fp)
@@ -814,6 +838,8 @@ main (int argc, char **argv )
     cmd_query_version (fp);
   else if (!strcmp (cmd, "set-debug"))
     cmd_set_debug_flags (fp, strtoul (cmdargs, NULL, 0));
+  else if (!strcmp (cmd, "query-debug"))
+    cmd_query_debug_flags (fp);
   else if (!strcmp (cmd, "query-shutter-state"))
     cmd_query_shutter_state (fp);
   else if (!strcmp (cmd, "query-shutter-schedule"))
index 4842670..213828a 100644 (file)
@@ -345,6 +345,13 @@ p_busctl_set_debug (byte *msg, size_t msglen)
 }
 
 
+static void
+p_busctl_qry_debug (byte *msg, size_t msglen)
+{
+  logmsg_fmt ("flags=%02x", msg[6]);
+}
+
+
 /* Process busctl messages.  */
 static void
 process_ebus_busctl (byte *msg, size_t msglen)
@@ -382,6 +389,12 @@ process_ebus_busctl (byte *msg, size_t msglen)
         p_busctl_set_debug (msg, msglen);
       break;
 
+    case P_BUSCTL_QRY_DEBUG:
+      logmsg_fmt ("%s:QueryDebug", is_response?"Rsp":"Cmd");
+      if (is_response)
+        p_busctl_qry_debug (msg, msglen);
+      break;
+
     default:
       logmsg_fmt ("%s:%02x", is_response?"Rsp":"Cmd", msg[5]);
       break;
index e25fd10..e6c983f 100644 (file)
   byte 7..15 - rfu
 
   No responses are defined.
+
+* 0x05 := Query Debug Flags
+
+  byte 6..15 - rfu, must be 0.
+
+  Response format:
+
+  byte 6     - Debug flags
+  byte 7..15 - rfu
+
 */
 
 #include "protocol.h"
 #define P_BUSCTL_QRY_TIME    0x02 /* Query Time.  */
 #define P_BUSCTL_QRY_VERSION 0x03 /* Query software version.  */
 #define P_BUSCTL_SET_DEBUG   0x04 /* Set debug flags.  */
+#define P_BUSCTL_QRY_DEBUG   0x05 /* Query debug flags.  */
 
 #endif /*PROTO_BUSCTL_H*/
index d431ba1..be5340d 100644 (file)
@@ -610,6 +610,17 @@ process_ebus_busctl (byte *msg)
       set_debug_flags (msg[6]);
       break;
 
+    case P_BUSCTL_QRY_DEBUG:
+      msg[1] = msg[3];
+      msg[2] = msg[4];
+      msg[3] = config.nodeid_hi;
+      msg[4] = config.nodeid_lo;
+      msg[5] |= P_BUSCTL_RESPMASK;
+      msg[6] = config.debug_flags;
+      memset (msg+7, 0, 9);
+      csma_send_message (msg, MSGSIZE);
+      break;
+
     default:
       break;
     }