File tree Expand file tree Collapse file tree 6 files changed +21
-97
lines changed Expand file tree Collapse file tree 6 files changed +21
-97
lines changed Original file line number Diff line number Diff line change 6
6
7
7
## [ Unreleased] - ReleaseDate
8
8
9
+ ### Changed
10
+
11
+ - ** (breaking)** [ #113 ] ( https://github.com/jamwaffles/ssd1306/pull/113 ) Removed public ` send_bounded_data ` from DisplayInterface and implementations
12
+
9
13
## [ 0.3.1] - 2020-03-21
10
14
11
15
### Fixed
Original file line number Diff line number Diff line change 61
61
. map_err ( Error :: Comm )
62
62
} )
63
63
}
64
-
65
- fn send_bounded_data (
66
- & mut self ,
67
- buf : & [ u8 ] ,
68
- disp_width : usize ,
69
- upper_left : ( u8 , u8 ) ,
70
- lower_right : ( u8 , u8 ) ,
71
- ) -> Result < ( ) , Self :: Error > {
72
- // Noop if the data buffer is empty
73
- if buf. is_empty ( ) {
74
- return Ok ( ( ) ) ;
75
- }
76
-
77
- // Write buffer. Writes are sent in chunks of 16 bytes plus DC byte
78
- let mut writebuf: [ u8 ; 17 ] = [ 0x0 ; 17 ] ;
79
-
80
- // Data mode
81
- // 8.1.5.2 5) b) in the datasheet
82
- writebuf[ 0 ] = 0x40 ;
83
-
84
- // Divide by 8 since each row is actually 8 pixels tall
85
- let num_pages = ( ( lower_right. 1 - upper_left. 1 ) / 8 ) as usize + 1 ;
86
-
87
- // Each page is 8 bits tall, so calculate which page number to start at (rounded down) from
88
- // the top of the display
89
- let starting_page = ( upper_left. 1 / 8 ) as usize ;
90
-
91
- // Calculate start and end X coordinates for each page
92
- let page_lower = upper_left. 0 as usize ;
93
- let page_upper = lower_right. 0 as usize ;
94
-
95
- buf. chunks ( disp_width)
96
- . skip ( starting_page)
97
- . take ( num_pages)
98
- . map ( |s| & s[ page_lower..page_upper] )
99
- . try_for_each ( |c| {
100
- c. chunks ( 16 ) . try_for_each ( |c| {
101
- let chunk_len = c. len ( ) ;
102
-
103
- // Copy over all data from buffer, leaving the data command byte intact
104
- writebuf[ 1 ..=chunk_len] . copy_from_slice ( c) ;
105
-
106
- self . i2c
107
- . write ( self . addr , & writebuf[ 0 ..=chunk_len] )
108
- . map_err ( Error :: Comm )
109
- } )
110
- } )
111
- }
112
64
}
Original file line number Diff line number Diff line change @@ -61,17 +61,6 @@ pub trait DisplayInterface {
61
61
fn send_commands ( & mut self , cmd : & [ u8 ] ) -> Result < ( ) , Self :: Error > ;
62
62
/// Send data to display.
63
63
fn send_data ( & mut self , buf : & [ u8 ] ) -> Result < ( ) , Self :: Error > ;
64
- /// Send data to display, taking advantage of bounded data.
65
- ///
66
- /// upper_left and lower_right should contain the x and y coordinates of the
67
- /// minimum bounding rectangle of the modified pixels.
68
- fn send_bounded_data (
69
- & mut self ,
70
- buf : & [ u8 ] ,
71
- disp_width : usize ,
72
- upper_left : ( u8 , u8 ) ,
73
- lower_right : ( u8 , u8 ) ,
74
- ) -> Result < ( ) , Self :: Error > ;
75
64
}
76
65
77
66
pub use self :: { i2c:: I2cInterface , spi:: SpiInterface } ;
Original file line number Diff line number Diff line change 46
46
47
47
self . spi . write ( & buf) . map_err ( Error :: Comm )
48
48
}
49
-
50
- fn send_bounded_data (
51
- & mut self ,
52
- buf : & [ u8 ] ,
53
- disp_width : usize ,
54
- upper_left : ( u8 , u8 ) ,
55
- lower_right : ( u8 , u8 ) ,
56
- ) -> Result < ( ) , Self :: Error > {
57
- self . dc . set_high ( ) . map_err ( Error :: Pin ) ?;
58
-
59
- // Divide by 8 since each row is actually 8 pixels tall
60
- let num_pages = ( ( lower_right. 1 - upper_left. 1 ) / 8 ) as usize + 1 ;
61
-
62
- // Each page is 8 bits tall, so calculate which page number to start at (rounded down) from
63
- // the top of the display
64
- let starting_page = ( upper_left. 1 / 8 ) as usize ;
65
-
66
- // Calculate start and end X coordinates for each page
67
- let page_lower = upper_left. 0 as usize ;
68
- let page_upper = lower_right. 0 as usize ;
69
-
70
- buf. chunks ( disp_width)
71
- . skip ( starting_page)
72
- . take ( num_pages)
73
- . map ( |s| & s[ page_lower..page_upper] )
74
- . try_for_each ( |c| self . spi . write ( & c) . map_err ( Error :: Comm ) )
75
- }
76
49
}
Original file line number Diff line number Diff line change @@ -151,8 +151,23 @@ where
151
151
upper_left : ( u8 , u8 ) ,
152
152
lower_right : ( u8 , u8 ) ,
153
153
) -> Result < ( ) , DI :: Error > {
154
- self . iface
155
- . send_bounded_data ( & buffer, disp_width, upper_left, lower_right)
154
+ // Divide by 8 since each row is actually 8 pixels tall
155
+ let num_pages = ( ( lower_right. 1 - upper_left. 1 ) / 8 ) as usize + 1 ;
156
+
157
+ // Each page is 8 bits tall, so calculate which page number to start at (rounded down) from
158
+ // the top of the display
159
+ let starting_page = ( upper_left. 1 / 8 ) as usize ;
160
+
161
+ // Calculate start and end X coordinates for each page
162
+ let page_lower = upper_left. 0 as usize ;
163
+ let page_upper = lower_right. 0 as usize ;
164
+
165
+ buffer
166
+ . chunks ( disp_width)
167
+ . skip ( starting_page)
168
+ . take ( num_pages)
169
+ . map ( |s| & s[ page_lower..page_upper] )
170
+ . try_for_each ( |c| self . iface . send_data ( & c) )
156
171
}
157
172
158
173
/// Get the configured display size
Original file line number Diff line number Diff line change @@ -70,13 +70,4 @@ impl DisplayInterface for StubInterface {
70
70
fn send_data ( & mut self , _buf : & [ u8 ] ) -> Result < ( ) , ( ) > {
71
71
Ok ( ( ) )
72
72
}
73
- fn send_bounded_data (
74
- & mut self ,
75
- _buf : & [ u8 ] ,
76
- _disp_width : usize ,
77
- _upper_left : ( u8 , u8 ) ,
78
- _lower_right : ( u8 , u8 ) ,
79
- ) -> Result < ( ) , ( ) > {
80
- Ok ( ( ) )
81
- }
82
73
}
You can’t perform that action at this time.
0 commit comments