input should be a const pointer...
diff --git a/aos/build/queues/print_field.rb b/aos/build/queues/print_field.rb
index 8e9521e..7a9fbb4 100644
--- a/aos/build/queues/print_field.rb
+++ b/aos/build/queues/print_field.rb
@@ -18,7 +18,7 @@
 
 namespace aos {
 
-bool PrintField(char *output, size_t *output_bytes, void *input,
+bool PrintField(char *output, size_t *output_bytes, const void *input,
                 size_t *input_bytes, uint32_t type) {
   switch (type) {
 #{TypeNames.collect do |name|
diff --git a/aos/common/queue_types.cc b/aos/common/queue_types.cc
index a9224f6..e321b8e 100644
--- a/aos/common/queue_types.cc
+++ b/aos/common/queue_types.cc
@@ -108,10 +108,10 @@
   return r.release();
 }
 
-bool PrintMessage(char *output, size_t *output_bytes, void *input,
+bool PrintMessage(char *output, size_t *output_bytes, const void *input,
                   size_t *input_bytes, const MessageType &type) {
   *input_bytes -= type.super_size;
-  input = static_cast<char *>(input) + type.super_size;
+  input = static_cast<const char *>(input) + type.super_size;
 
   if (*output_bytes < type.name.size() + 1) return false;
   *output_bytes -= type.name.size() + 1;
@@ -153,7 +153,8 @@
     // subcall put on.
     output += output_bytes_before - *output_bytes - 1;
     *output_bytes += 1;
-    input = static_cast<char *>(input) + input_bytes_before - *input_bytes;
+    input =
+        static_cast<const char *>(input) + input_bytes_before - *input_bytes;
   }
   if (*output_bytes < 2) return false;
   *output_bytes -= 2;
diff --git a/aos/common/queue_types.h b/aos/common/queue_types.h
index 439fc7f..55d26b4 100644
--- a/aos/common/queue_types.h
+++ b/aos/common/queue_types.h
@@ -93,12 +93,12 @@
 //
 // Prints the value from 1 primitive message field into output.
 // The implementation of this is generated by the ruby code.
-bool PrintField(char *output, size_t *output_bytes, void *input,
+bool PrintField(char *output, size_t *output_bytes, const void *input,
                 size_t *input_bytes, uint32_t type)
     __attribute__((warn_unused_result));
 // Prints a whole message into output.
 // This calls itself recursively and PrintField to print out the whole thing.
-bool PrintMessage(char *output, size_t *output_bytes, void *input,
+bool PrintMessage(char *output, size_t *output_bytes, const void *input,
                   size_t *input_bytes, const MessageType &type)
     __attribute__((warn_unused_result));