Revised GPIO module interface + GPIO discovery logic
* The GpioHandler class is no longer a static singleton, rather an
ordinary object with a dynamic guard against multiple instances. This
makes testing/mocking a lot easier and simplifies implementation.
* It uses a basic, mockable udev interface; the module comes with
complete unit testing of the discovery mechanism.
* Corresponding changes to user classes, including UpdateAttempter and
UpdateCheckScheduler.
Note that the implementation of the test mode signaling protocol is
currently a no-op, always returning false, and hence has no effect on
the update process yet. This mechanism will be implemented in a later
CL.
BUG=chromium-os:25397
TEST=Builds and passes unit tests (including new ones)
Change-Id: I2f6254db6799ff5ef8616314890833f6e3269ff6
Reviewed-on: https://gerrit.chromium.org/gerrit/22869
Reviewed-by: Gilad Arnold <garnold@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
Commit-Ready: Gilad Arnold <garnold@chromium.org>
diff --git a/update_check_scheduler.h b/update_check_scheduler.h
index edfbbfd..cd3ad87 100644
--- a/update_check_scheduler.h
+++ b/update_check_scheduler.h
@@ -41,7 +41,8 @@
static const int kTimeoutRegularFuzz;
static const int kTimeoutMaxBackoffInterval;
- UpdateCheckScheduler(UpdateAttempter* update_attempter);
+ UpdateCheckScheduler(UpdateAttempter* update_attempter,
+ GpioHandler* gpio_handler);
virtual ~UpdateCheckScheduler();
// Initiates the periodic update checks, if necessary.
@@ -128,6 +129,12 @@
// Server dictated poll interval in seconds, if positive.
int poll_interval_;
+ // A flag indicating whether a test update cycle was already attempted.
+ bool is_test_update_attempted_;
+
+ // GPIO handler object.
+ GpioHandler* gpio_handler_;
+
DISALLOW_COPY_AND_ASSIGN(UpdateCheckScheduler);
};