10
10
import androidx .fragment .app .Fragment ;
11
11
import com .chip .casting .TvCastingApp ;
12
12
import com .chip .casting .dnssd .DiscoveredNodeData ;
13
+ import com .chip .casting .platform .MatterCallbackHandler ;
13
14
import com .chip .casting .util .GlobalCastingConstants ;
14
15
15
16
/** A {@link Fragment} to get the TV Casting App commissioned. */
@@ -19,6 +20,10 @@ public class CommissioningFragment extends Fragment {
19
20
private final TvCastingApp tvCastingApp ;
20
21
private final DiscoveredNodeData selectedCommissioner ;
21
22
23
+ private boolean initServerSuccess ;
24
+ private boolean openCommissioningWindowSuccess ;
25
+ private boolean sendUdcSuccess ;
26
+
22
27
public CommissioningFragment (TvCastingApp tvCastingApp , DiscoveredNodeData selectedCommissioner ) {
23
28
this .tvCastingApp = tvCastingApp ;
24
29
this .selectedCommissioner = selectedCommissioner ;
@@ -43,40 +48,68 @@ public void onCreate(Bundle savedInstanceState) {
43
48
@ Override
44
49
public View onCreateView (
45
50
LayoutInflater inflater , ViewGroup container , Bundle savedInstanceState ) {
46
- // Inflate the layout for this fragment
51
+ Callback callback = (CommissioningFragment .Callback ) this .getActivity ();
52
+ this .initServerSuccess =
53
+ tvCastingApp .initServer (
54
+ new MatterCallbackHandler () {
55
+ @ Override
56
+ public boolean handle (boolean success ) {
57
+ Log .d (
58
+ TAG , "handle() called on CommissioningComplete event with success " + success );
59
+ if (success ) {
60
+ callback .handleCommissioningComplete ();
61
+ }
62
+ return true ;
63
+ }
64
+ });
65
+
66
+ if (this .initServerSuccess ) {
67
+ this .openCommissioningWindowSuccess =
68
+ tvCastingApp .openBasicCommissioningWindow (
69
+ GlobalCastingConstants .CommissioningWindowDurationSecs );
70
+ if (this .openCommissioningWindowSuccess ) {
71
+ if (selectedCommissioner != null && selectedCommissioner .getNumIPs () > 0 ) {
72
+ String ipAddress = selectedCommissioner .getIpAddresses ().get (0 ).getHostAddress ();
73
+ Log .d (
74
+ TAG ,
75
+ "CommissioningFragment calling tvCastingApp.sendUserDirectedCommissioningRequest with IP: "
76
+ + ipAddress
77
+ + " port: "
78
+ + selectedCommissioner .getPort ());
79
+
80
+ this .sendUdcSuccess =
81
+ tvCastingApp .sendUserDirectedCommissioningRequest (
82
+ ipAddress , selectedCommissioner .getPort ());
83
+ }
84
+ }
85
+ }
47
86
return inflater .inflate (R .layout .fragment_commissioning , container , false );
48
87
}
49
88
50
89
@ Override
51
90
public void onViewCreated (View view , @ Nullable Bundle savedInstanceState ) {
52
91
super .onViewCreated (view , savedInstanceState );
53
-
54
- tvCastingApp .initServer ();
55
-
56
92
String commissioningWindowStatus = "Failed to open commissioning window" ;
57
- if (tvCastingApp .openBasicCommissioningWindow (
58
- GlobalCastingConstants .CommissioningWindowDurationSecs )) {
59
- commissioningWindowStatus = "Commissioning window has been opened. Commission manually." ;
60
- if (selectedCommissioner != null && selectedCommissioner .getNumIPs () > 0 ) {
61
- String ipAddress = selectedCommissioner .getIpAddresses ().get (0 ).getHostAddress ();
62
- Log .d (
63
- TAG ,
64
- "CommissioningFragment calling tvCastingApp.sendUserDirectedCommissioningRequest with IP: "
65
- + ipAddress
66
- + " port: "
67
- + selectedCommissioner .getPort ());
68
-
69
- if (tvCastingApp .sendUserDirectedCommissioningRequest (
70
- ipAddress , selectedCommissioner .getPort ())) {
93
+ if (this .initServerSuccess ) {
94
+ if (this .openCommissioningWindowSuccess ) {
95
+ commissioningWindowStatus = "Commissioning window has been opened. Commission manually." ;
96
+ if (this .sendUdcSuccess ) {
71
97
commissioningWindowStatus =
72
98
"Commissioning window has been opened. Commissioning requested from "
73
99
+ selectedCommissioner .getDeviceName ();
74
100
}
101
+ TextView onboardingPayloadView = getView ().findViewById (R .id .onboardingPayload );
102
+ onboardingPayloadView .setText ("Onboarding PIN: " + GlobalCastingConstants .SetupPasscode );
75
103
}
76
- TextView onboardingPayloadView = getView ().findViewById (R .id .onboardingPayload );
77
- onboardingPayloadView .setText ("Onboarding PIN: " + GlobalCastingConstants .SetupPasscode );
78
104
}
105
+
79
106
TextView commissioningWindowStatusView = getView ().findViewById (R .id .commissioningWindowStatus );
80
107
commissioningWindowStatusView .setText (commissioningWindowStatus );
81
108
}
109
+
110
+ /** Interface for notifying the host. */
111
+ public interface Callback {
112
+ /** Notifies listener to trigger transition on completion of commissioning */
113
+ void handleCommissioningComplete ();
114
+ }
82
115
}
0 commit comments