@@ -39,7 +39,8 @@ struct Args {
3939 serial : String ,
4040}
4141
42- const REQ_MSG_TYPE : MsgType = MsgType ( 1 ) ;
42+ const REQ_MSG_TYPE : MsgType = mctp:: MCTP_TYPE_VENDOR_PCIE ;
43+ const VENDOR_SUBTYPE_ECHO : [ u8 ; 3 ] = [ 0xcc , 0xde , 0xf0 ] ;
4344
4445fn main ( ) -> Result < ( ) > {
4546 let args: Args = argh:: from_env ( ) ;
@@ -80,7 +81,7 @@ fn main() -> Result<()> {
8081 let l = ( l as usize ) % 24 ;
8182 let payload = & payload[ ..l] ;
8283
83- if let Err ( e) = req ( & mut ch, REQ_MSG_TYPE , & payload, args. fatal ) {
84+ if let Err ( e) = req ( & mut ch, payload, args. fatal ) {
8485 warn ! ( "Error {e:?}" ) ;
8586 if args. fatal {
8687 bail ! ( "Response error." )
@@ -89,13 +90,14 @@ fn main() -> Result<()> {
8990 }
9091}
9192
92- fn req (
93- ch : & mut impl ReqChannel ,
94- typ : MsgType ,
95- payload : & [ u8 ] ,
96- fatal : bool ,
97- ) -> Result < ( ) > {
98- ch. send ( typ, & payload) . context ( "Error sending" ) ?;
93+ fn req ( ch : & mut impl ReqChannel , payload : & [ u8 ] , fatal : bool ) -> Result < ( ) > {
94+ let typ = REQ_MSG_TYPE ;
95+ // Vendor prefix
96+ let mut p = Vec :: from ( VENDOR_SUBTYPE_ECHO ) ;
97+ p. extend_from_slice ( payload) ;
98+ let payload = & p;
99+
100+ ch. send ( typ, payload) . context ( "Error sending" ) ?;
99101
100102 info ! ( "Sent OK" ) ;
101103
@@ -130,12 +132,12 @@ fn serial_corner_cases(ch: &mut impl ReqChannel) -> Result<()> {
130132 }
131133
132134 // Unmodified
133- req ( ch, REQ_MSG_TYPE , & b, true ) ?;
135+ req ( ch, & b, true ) ?;
134136
135137 let mut addescape = |n| {
136138 if let Some ( c) = b. get_mut ( n) {
137139 * c = ESCAPE ;
138- req ( ch, REQ_MSG_TYPE , & b, true ) ?;
140+ req ( ch, & b, true ) ?;
139141 }
140142 anyhow:: Result :: < _ > :: Ok ( ( ) )
141143 } ;
0 commit comments