@@ -178,6 +178,7 @@ public class WifiMonitor {
178178
179179 private static final String P2P_GO_NEG_SUCCESS_STR = "P2P-GO-NEG-SUCCESS" ;
180180
181+ /* P2P-GO-NEG-FAILURE status=x */
181182 private static final String P2P_GO_NEG_FAILURE_STR = "P2P-GO-NEG-FAILURE" ;
182183
183184 private static final String P2P_GROUP_FORMATION_SUCCESS_STR =
@@ -566,6 +567,26 @@ private void handleWpsFailEvent(String dataString) {
566567 WifiManager .ERROR , 0 ));
567568 }
568569
570+ /* <event> status=<err> and the special case of <event> reason=FREQ_CONFLICT */
571+ private P2pStatus p2pError (String dataString ) {
572+ P2pStatus err = P2pStatus .UNKNOWN ;
573+ String [] tokens = dataString .split (" " );
574+ if (tokens .length < 2 ) return err ;
575+ String [] nameValue = tokens [1 ].split ("=" );
576+ if (nameValue .length != 2 ) return err ;
577+
578+ /* Handle the special case of reason=FREQ+CONFLICT */
579+ if (nameValue [1 ].equals ("FREQ_CONFLICT" )) {
580+ return P2pStatus .NO_COMMON_CHANNEL ;
581+ }
582+ try {
583+ err = P2pStatus .valueOf (Integer .parseInt (nameValue [1 ]));
584+ } catch (NumberFormatException e ) {
585+ e .printStackTrace ();
586+ }
587+ return err ;
588+ }
589+
569590 /**
570591 * Handle p2p events
571592 */
@@ -582,11 +603,11 @@ private void handleP2pEvents(String dataString) {
582603 } else if (dataString .startsWith (P2P_GO_NEG_SUCCESS_STR )) {
583604 mStateMachine .sendMessage (P2P_GO_NEGOTIATION_SUCCESS_EVENT );
584605 } else if (dataString .startsWith (P2P_GO_NEG_FAILURE_STR )) {
585- mStateMachine .sendMessage (P2P_GO_NEGOTIATION_FAILURE_EVENT );
606+ mStateMachine .sendMessage (P2P_GO_NEGOTIATION_FAILURE_EVENT , p2pError ( dataString ) );
586607 } else if (dataString .startsWith (P2P_GROUP_FORMATION_SUCCESS_STR )) {
587608 mStateMachine .sendMessage (P2P_GROUP_FORMATION_SUCCESS_EVENT );
588609 } else if (dataString .startsWith (P2P_GROUP_FORMATION_FAILURE_STR )) {
589- mStateMachine .sendMessage (P2P_GROUP_FORMATION_FAILURE_EVENT );
610+ mStateMachine .sendMessage (P2P_GROUP_FORMATION_FAILURE_EVENT , p2pError ( dataString ) );
590611 } else if (dataString .startsWith (P2P_GROUP_STARTED_STR )) {
591612 mStateMachine .sendMessage (P2P_GROUP_STARTED_EVENT , new WifiP2pGroup (dataString ));
592613 } else if (dataString .startsWith (P2P_GROUP_REMOVED_STR )) {
@@ -595,17 +616,7 @@ private void handleP2pEvents(String dataString) {
595616 mStateMachine .sendMessage (P2P_INVITATION_RECEIVED_EVENT ,
596617 new WifiP2pGroup (dataString ));
597618 } else if (dataString .startsWith (P2P_INVITATION_RESULT_STR )) {
598- String [] tokens = dataString .split (" " );
599- if (tokens .length != 2 ) return ;
600- String [] nameValue = tokens [1 ].split ("=" );
601- if (nameValue .length != 2 ) return ;
602- P2pStatus err = P2pStatus .UNKNOWN ;
603- try {
604- err = P2pStatus .valueOf (Integer .parseInt (nameValue [1 ]));
605- } catch (NumberFormatException e ) {
606- e .printStackTrace ();
607- }
608- mStateMachine .sendMessage (P2P_INVITATION_RESULT_EVENT , err );
619+ mStateMachine .sendMessage (P2P_INVITATION_RESULT_EVENT , p2pError (dataString ));
609620 } else if (dataString .startsWith (P2P_PROV_DISC_PBC_REQ_STR )) {
610621 mStateMachine .sendMessage (P2P_PROV_DISC_PBC_REQ_EVENT ,
611622 new WifiP2pProvDiscEvent (dataString ));
0 commit comments