@@ -217,7 +217,11 @@ pub async fn pkt_debug(payload: &[u8]) -> Result<()> {
217
217
}
218
218
219
219
/// packet modification hook
220
- pub async fn pkt_modify_hook ( pkt : & mut Packet , new_dpi : u16 ) -> Result < ( ) > {
220
+ pub async fn pkt_modify_hook (
221
+ pkt : & mut Packet ,
222
+ dpi : Option < u16 > ,
223
+ developer_mode : bool ,
224
+ ) -> Result < ( ) > {
221
225
if pkt. channel != 0 {
222
226
return Ok ( ( ) ) ;
223
227
}
@@ -234,22 +238,38 @@ pub async fn pkt_modify_hook(pkt: &mut Packet, new_dpi: u16) -> Result<()> {
234
238
match control. unwrap_or ( MESSAGE_UNEXPECTED_MESSAGE ) {
235
239
MESSAGE_SERVICE_DISCOVERY_RESPONSE => {
236
240
let mut msg = ServiceDiscoveryResponse :: parse_from_bytes ( data) ?;
237
- // get previous/original value
238
- let prev_val = msg. services [ 0 ] . media_sink_service . video_configs [ 0 ] . density ( ) ;
239
- // set new value
240
- msg. services [ 0 ]
241
- . media_sink_service
242
- . as_mut ( )
243
- . unwrap ( )
244
- . video_configs [ 0 ]
245
- . set_density ( new_dpi. into ( ) ) ;
246
- info ! (
247
- "{} <yellow>{:?}</> Replacing DPI value: from <b>{}</> to <b>{}</>" ,
248
- NAME ,
249
- control. unwrap( ) ,
250
- prev_val,
251
- new_dpi
252
- ) ;
241
+
242
+ // DPI
243
+ if let Some ( new_dpi) = dpi {
244
+ // get previous/original value
245
+ let prev_val = msg. services [ 0 ] . media_sink_service . video_configs [ 0 ] . density ( ) ;
246
+ // set new value
247
+ msg. services [ 0 ]
248
+ . media_sink_service
249
+ . as_mut ( )
250
+ . unwrap ( )
251
+ . video_configs [ 0 ]
252
+ . set_density ( new_dpi. into ( ) ) ;
253
+ info ! (
254
+ "{} <yellow>{:?}</>: replacing DPI value: from <b>{}</> to <b>{}</>" ,
255
+ NAME ,
256
+ control. unwrap( ) ,
257
+ prev_val,
258
+ new_dpi
259
+ ) ;
260
+ }
261
+
262
+ // enabling developer mode
263
+ if developer_mode {
264
+ msg. set_make ( "Google" . into ( ) ) ;
265
+ msg. set_model ( "Desktop Head Unit" . into ( ) ) ;
266
+ info ! (
267
+ "{} <yellow>{:?}</>: enabling developer mode" ,
268
+ NAME ,
269
+ control. unwrap( ) ,
270
+ ) ;
271
+ }
272
+
253
273
// rewrite payload to new message contents
254
274
pkt. payload = msg. write_to_bytes ( ) ?;
255
275
// inserting 2 bytes of message_id at the beginning
@@ -390,6 +410,7 @@ pub async fn proxy<A: Endpoint<A> + 'static>(
390
410
mut rx : Receiver < Packet > ,
391
411
mut rxr : Receiver < Packet > ,
392
412
dpi : Option < u16 > ,
413
+ developer_mode : bool ,
393
414
) -> Result < ( ) > {
394
415
let ssl = ssl_builder ( proxy_type) . await ?;
395
416
@@ -463,9 +484,7 @@ pub async fn proxy<A: Endpoint<A> + 'static>(
463
484
loop {
464
485
// handling data from opposite device's thread, which needs to be transmitted
465
486
if let Ok ( mut pkt) = rx. try_recv ( ) {
466
- if let Some ( dpi) = dpi {
467
- pkt_modify_hook ( & mut pkt, dpi) . await ?;
468
- }
487
+ pkt_modify_hook ( & mut pkt, dpi, developer_mode) . await ?;
469
488
pkt. encrypt_payload ( & mut mem_buf, & mut server) . await ?;
470
489
pkt. transmit ( & mut device) . await ?;
471
490
0 commit comments