@@ -16,6 +16,7 @@ pub struct BoardInner {
16
16
thread_client : DerefCell < Arc < ThreadClient > > ,
17
17
board : DerefCell < BoardId > ,
18
18
model : DerefCell < String > ,
19
+ version : DerefCell < String > ,
19
20
layout : DerefCell < Layout > ,
20
21
keys : DerefCell < Vec < Key > > ,
21
22
layers : DerefCell < Vec < Layer > > ,
@@ -25,6 +26,7 @@ pub struct BoardInner {
25
26
led_save_blocked : Cell < bool > ,
26
27
has_matrix : DerefCell < bool > ,
27
28
is_fake : DerefCell < bool > ,
29
+ has_keymap : DerefCell < bool > ,
28
30
}
29
31
30
32
#[ glib:: object_subclass]
@@ -66,6 +68,10 @@ impl Board {
66
68
return Err ( format ! ( "Failed to get board model: {}" , err) ) ;
67
69
}
68
70
} ;
71
+ let version = daemon. version ( board) . unwrap_or_else ( |err| {
72
+ error ! ( "Error getting firmware version: {}" , err) ;
73
+ String :: new ( )
74
+ } ) ;
69
75
let layout = Layout :: from_board ( & model)
70
76
. ok_or_else ( || format ! ( "Failed to locate layout for '{}'" , model) ) ?;
71
77
@@ -82,16 +88,20 @@ impl Board {
82
88
83
89
let has_led_save = daemon. led_save ( board) . is_ok ( ) ;
84
90
let has_matrix = daemon. matrix_get ( board) . is_ok ( ) ;
91
+ let logical = layout. layout . values ( ) . next ( ) . unwrap ( ) ;
92
+ let has_keymap = daemon. keymap_get ( board, 0 , logical. 0 , logical. 1 ) . is_ok ( ) ;
85
93
86
94
let self_ = glib:: Object :: new :: < Board > ( & [ ] ) . unwrap ( ) ;
87
95
self_. inner ( ) . thread_client . set ( thread_client) ;
88
96
self_. inner ( ) . board . set ( board) ;
89
97
self_. inner ( ) . model . set ( model) ;
98
+ self_. inner ( ) . version . set ( version) ;
90
99
self_. inner ( ) . layout . set ( layout) ;
91
100
self_. inner ( ) . max_brightness . set ( max_brightness) ;
92
101
self_. inner ( ) . has_led_save . set ( has_led_save) ;
93
102
self_. inner ( ) . has_matrix . set ( has_matrix) ;
94
103
self_. inner ( ) . is_fake . set ( daemon. is_fake ( ) ) ;
104
+ self_. inner ( ) . has_keymap . set ( has_keymap) ;
95
105
96
106
let keys = self_
97
107
. layout ( )
@@ -162,6 +172,10 @@ impl Board {
162
172
& self . inner ( ) . model
163
173
}
164
174
175
+ pub fn version ( & self ) -> & str {
176
+ & self . inner ( ) . version
177
+ }
178
+
165
179
pub fn has_matrix ( & self ) -> bool {
166
180
* self . inner ( ) . has_matrix
167
181
}
@@ -206,6 +220,10 @@ impl Board {
206
220
* self . inner ( ) . has_led_save
207
221
}
208
222
223
+ pub fn has_keymap ( & self ) -> bool {
224
+ * self . inner ( ) . has_keymap
225
+ }
226
+
209
227
pub fn layout ( & self ) -> & Layout {
210
228
& * self . inner ( ) . layout
211
229
}
0 commit comments