diff --git a/CHANGELOG.md b/CHANGELOG.md index 732e4ba6..c9f6eee4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ ## [Unreleased] - ReleaseDate +### Added + +- [#161](https://github.com/jamwaffles/ssd1306/pull/161) Added a `set_mirror` method to enable or disable display mirroring. + ## [0.7.0] - 2021-07-08 ### Changed diff --git a/src/lib.rs b/src/lib.rs index c5c89651..7a946190 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -314,6 +314,33 @@ where Ok(()) } + /// Set mirror enabled/disabled. + pub fn set_mirror(&mut self, mirror: bool) -> Result<(), DisplayError> { + if mirror { + match self.rotation { + DisplayRotation::Rotate0 => { + Command::SegmentRemap(false).send(&mut self.interface)?; + Command::ReverseComDir(true).send(&mut self.interface)?; + } + DisplayRotation::Rotate90 => { + Command::SegmentRemap(false).send(&mut self.interface)?; + Command::ReverseComDir(false).send(&mut self.interface)?; + } + DisplayRotation::Rotate180 => { + Command::SegmentRemap(true).send(&mut self.interface)?; + Command::ReverseComDir(false).send(&mut self.interface)?; + } + DisplayRotation::Rotate270 => { + Command::SegmentRemap(true).send(&mut self.interface)?; + Command::ReverseComDir(true).send(&mut self.interface)?; + } + }; + } else { + self.set_rotation(self.rotation)?; + } + Ok(()) + } + /// Change the display brightness. pub fn set_brightness(&mut self, brightness: Brightness) -> Result<(), DisplayError> { // Should be moved to Brightness::new once conditions can be used in const functions