@@ -22,17 +22,19 @@ pub enum Rdo {
2222
2323impl Rdo {
2424 /// Create a new RDO from the raw data and the corresponding PDO
25- pub fn for_pdo ( rdo : u32 , pdo : impl Common ) -> Self {
26- match pdo. kind ( ) {
25+ ///
26+ /// Returns `None` if `pdo` does not contain an APDO kind
27+ pub fn for_pdo ( rdo : u32 , pdo : impl Common ) -> Option < Self > {
28+ Some ( match pdo. kind ( ) {
2729 PdoKind :: Fixed => Rdo :: Fixed ( FixedVarRaw ( rdo) . into ( ) ) ,
2830 PdoKind :: Variable => Rdo :: Variable ( FixedVarRaw ( rdo) . into ( ) ) ,
2931 PdoKind :: Battery => Rdo :: Battery ( BatteryRaw ( rdo) . into ( ) ) ,
30- PdoKind :: Augmented => match pdo. apdo_kind ( ) . unwrap ( ) {
32+ PdoKind :: Augmented => match pdo. apdo_kind ( ) ? {
3133 ApdoKind :: SprPps => Rdo :: Pps ( PpsRaw ( rdo) . into ( ) ) ,
3234 ApdoKind :: EprAvs => Rdo :: Pps ( PpsRaw ( rdo) . into ( ) ) ,
3335 ApdoKind :: SprAvs => Rdo :: Avs ( AvsRaw ( rdo) . into ( ) ) ,
3436 } ,
35- }
37+ } )
3638 }
3739}
3840
@@ -375,7 +377,8 @@ mod tests {
375377 voltage_mv : 0 ,
376378 operational_current_ma : 0 ,
377379 } ) ,
378- ) ;
380+ )
381+ . unwrap ( ) ;
379382 let expected = Rdo :: Fixed ( FixedVarData {
380383 object_position : 3 ,
381384 capability_mismatch : true ,
@@ -401,7 +404,8 @@ mod tests {
401404 min_voltage_mv : 0 ,
402405 operational_current_ma : 0 ,
403406 } ) ,
404- ) ;
407+ )
408+ . unwrap ( ) ;
405409 let expected = Rdo :: Variable ( FixedVarData {
406410 object_position : 3 ,
407411 capability_mismatch : true ,
@@ -427,7 +431,8 @@ mod tests {
427431 min_voltage_mv : 0 ,
428432 operational_power_mw : 0 ,
429433 } ) ,
430- ) ;
434+ )
435+ . unwrap ( ) ;
431436 let expected = Rdo :: Battery ( BatteryData {
432437 object_position : 3 ,
433438 capability_mismatch : true ,
@@ -453,7 +458,8 @@ mod tests {
453458 min_voltage_mv : 0 ,
454459 max_current_ma : 0 ,
455460 } ) ) ,
456- ) ;
461+ )
462+ . unwrap ( ) ;
457463 let expected = Rdo :: Pps ( PpsData {
458464 object_position : 3 ,
459465 capability_mismatch : true ,
@@ -478,7 +484,8 @@ mod tests {
478484 max_current_15v_ma : 0 ,
479485 max_current_20v_ma : 0 ,
480486 } ) ) ,
481- ) ;
487+ )
488+ . unwrap ( ) ;
482489 let expected = Rdo :: Avs ( AvsData {
483490 object_position : 3 ,
484491 capability_mismatch : true ,
0 commit comments