@@ -31,7 +31,7 @@ mod bios;
3131mod component;
3232mod ec;
3333
34- static AMIDE : & ' static str = concat ! ( "\\ " , env!( "BASEDIR" ) , "\\ firmware\\ amide.efi " ) ;
34+ static AMIDETAG : & ' static str = concat ! ( "\\ " , env!( "BASEDIR" ) , "\\ firmware\\ amide.tag " ) ;
3535static ECROM : & ' static str = concat ! ( "\\ " , env!( "BASEDIR" ) , "\\ firmware\\ ec.rom" ) ;
3636static EC2ROM : & ' static str = concat ! ( "\\ " , env!( "BASEDIR" ) , "\\ firmware\\ ec2.rom" ) ;
3737static FIRMWAREDIR : & ' static str = concat ! ( "\\ " , env!( "BASEDIR" ) , "\\ firmware" ) ;
@@ -66,6 +66,18 @@ fn ac_connected() -> bool {
6666 }
6767}
6868
69+ fn set_serial ( serial : & str ) -> Result < ( ) > {
70+ find ( FIRMWARENSH ) ?;
71+ let cmd = format ! ( "{} {} serial {}" , FIRMWARENSH , FIRMWAREDIR , serial) ;
72+ let status = shell ( & cmd) ?;
73+ if status == 0 {
74+ Ok ( ( ) )
75+ } else {
76+ println ! ( "Set Serial Error: {}" , status) ;
77+ Err ( Error :: DeviceError )
78+ }
79+ }
80+
6981#[ derive( Clone , Copy , Debug , Eq , PartialEq ) ]
7082enum ValidateKind {
7183 Found ,
@@ -218,6 +230,11 @@ fn inner() -> Result<()> {
218230 let c = if find ( MESETTAG ) . is_ok ( ) {
219231 // Skip enter if in manufacturing mode
220232 '\n'
233+ } else if find ( AMIDETAG ) . is_ok ( ) {
234+ // Skip enter if writing serial
235+ components. clear ( ) ;
236+ validations. clear ( ) ;
237+ '\n'
221238 } else if find ( UEFIFLASH ) . is_ok ( ) {
222239 // Skip enter if flashing a meerkat
223240 if find ( UEFIFLASHTAG ) . is_ok ( ) {
@@ -278,6 +295,25 @@ fn inner() -> Result<()> {
278295 }
279296 }
280297
298+ if let Ok ( serial_vec) = load ( SERIAL ) {
299+ match String :: from_utf8 ( serial_vec) {
300+ Ok ( serial_str) => {
301+ let serial = serial_str. trim ( ) ;
302+ match set_serial ( & serial) {
303+ Ok ( ( ) ) => {
304+ println ! ( "Set serial to '{}'" , serial) ;
305+ } ,
306+ Err ( err) => {
307+ println ! ( "Failed to set serial to '{}': {:?}" , serial, err) ;
308+ }
309+ }
310+ } ,
311+ Err ( err) => {
312+ println ! ( "Failed to parse serial: {:?}" , err) ;
313+ }
314+ }
315+ }
316+
281317 remove_override ( option) ?;
282318
283319 if shutdown {
0 commit comments