fixes to make the hardware stuff actually work
diff --git a/aos/crio/hardware/digital_source.h b/aos/crio/hardware/digital_source.h
index 9bc5cab..3767508 100644
--- a/aos/crio/hardware/digital_source.h
+++ b/aos/crio/hardware/digital_source.h
@@ -24,6 +24,9 @@
   // This object maintains ownership.
   virtual ::DigitalSource *source() const = 0;
 
+ protected:
+  DigitalSource() {}
+
  private:
   DISALLOW_COPY_AND_ASSIGN(DigitalSource);
 };
@@ -36,30 +39,38 @@
   static const float kDefaultUpperVoltage = 4;
 
   // Will set up the voltages on trigger.
-  AnalogTriggerOutput(const ::AnalogTrigger &trigger,
+  AnalogTriggerOutput(const ::std::unique_ptr< ::AnalogTrigger> &trigger,
                       ::AnalogTriggerOutput::Type type,
                       float lowerVoltage = kDefaultLowerVoltage,
                       float upperVoltage = kDefaultUpperVoltage);
-  AnalogTriggerOutput(::std::unique_ptr<::AnalogTriggerOutput> output)
+  explicit AnalogTriggerOutput(::std::unique_ptr< ::AnalogTriggerOutput> output)
       : output_(::std::move(output)) {}
 
   virtual bool Get() { return output_->Get(); }
   virtual ::DigitalSource *source() const { return output_.get(); }
 
  private:
-  const ::std::unique_ptr<::AnalogTriggerOutput> output_;
+  const ::std::unique_ptr< ::AnalogTriggerOutput> output_;
 };
 
 class DigitalInput : public DigitalSource {
  public:
-  DigitalInput(::std::unique_ptr<::DigitalInput> input)
+  explicit DigitalInput(uint32_t channel)
+      : input_(::std::unique_ptr< ::DigitalInput>(
+              new ::DigitalInput(channel))) {
+  }
+  DigitalInput(uint8_t module, uint32_t channel)
+      : input_(::std::unique_ptr< ::DigitalInput>(
+              new ::DigitalInput(module, channel))) {
+  }
+  explicit DigitalInput(::std::unique_ptr< ::DigitalInput> input)
       : input_(::std::move(input)) {}
 
   virtual bool Get() { return input_->Get(); }
   virtual ::DigitalSource *source() const { return input_.get(); }
 
  private:
-  const ::std::unique_ptr<::DigitalInput> input_;
+  const ::std::unique_ptr< ::DigitalInput> input_;
 };
 
 }  // namespace hardware