@@ -24,7 +24,6 @@ import android.view.View
24
24
import android.view.ViewGroup
25
25
import android.widget.Toast
26
26
import androidx.fragment.app.Fragment
27
- import androidx.lifecycle.lifecycleScope
28
27
import chip.devicecontroller.ChipClusters.NetworkCommissioningCluster
29
28
import com.google.chip.chiptool.ChipClient
30
29
import com.google.chip.chiptool.R
@@ -37,16 +36,11 @@ import kotlinx.android.synthetic.main.enter_thread_network_fragment.xpanIdEd
37
36
import kotlinx.android.synthetic.main.enter_wifi_network_fragment.pwdEd
38
37
import kotlinx.android.synthetic.main.enter_wifi_network_fragment.ssidEd
39
38
import kotlinx.android.synthetic.main.enter_wifi_network_fragment.view.saveNetworkBtn
40
- import kotlinx.coroutines.CoroutineScope
41
- import kotlinx.coroutines.launch
42
39
43
40
/* *
44
41
* Fragment to collect Wi-Fi network information from user and send it to device being provisioned.
45
42
*/
46
43
class EnterNetworkFragment : Fragment () {
47
-
48
- private lateinit var scope: CoroutineScope
49
-
50
44
private val networkType: ProvisionNetworkType
51
45
get() = requireNotNull(
52
46
ProvisionNetworkType .fromName(arguments?.getString(ARG_PROVISION_NETWORK_TYPE ))
@@ -57,15 +51,13 @@ class EnterNetworkFragment : Fragment() {
57
51
container : ViewGroup ? ,
58
52
savedInstanceState : Bundle ?
59
53
): View ? {
60
- scope = viewLifecycleOwner.lifecycleScope
61
-
62
54
val layoutRes = when (networkType) {
63
55
ProvisionNetworkType .WIFI -> R .layout.enter_wifi_network_fragment
64
56
ProvisionNetworkType .THREAD -> R .layout.enter_thread_network_fragment
65
57
}
66
58
67
59
if (USE_HARDCODED_WIFI ) {
68
- scope.launch { saveHardcodedWifiNetwork() }
60
+ saveHardcodedWifiNetwork()
69
61
}
70
62
71
63
return inflater.inflate(layoutRes, container, false ).apply {
@@ -75,17 +67,17 @@ class EnterNetworkFragment : Fragment() {
75
67
76
68
private fun onSaveNetworkClicked () {
77
69
if (networkType == ProvisionNetworkType .WIFI ) {
78
- scope.launch { saveWifiNetwork() }
70
+ saveWifiNetwork()
79
71
} else {
80
- scope.launch { saveThreadNetwork() }
72
+ saveThreadNetwork()
81
73
}
82
74
}
83
75
84
- private suspend fun saveHardcodedWifiNetwork () {
76
+ private fun saveHardcodedWifiNetwork () {
85
77
addAndEnableWifiNetwork(HARDCODED_WIFI_SSID , HARDCODED_WIFI_PASSWORD )
86
78
}
87
79
88
- private suspend fun saveWifiNetwork () {
80
+ private fun saveWifiNetwork () {
89
81
val ssid = ssidEd?.text
90
82
val pwd = pwdEd?.text
91
83
@@ -97,15 +89,12 @@ class EnterNetworkFragment : Fragment() {
97
89
addAndEnableWifiNetwork(ssid.toString(), pwd.toString())
98
90
}
99
91
100
- private suspend fun addAndEnableWifiNetwork (ssid : String , password : String ) {
92
+ private fun addAndEnableWifiNetwork (ssid : String , password : String ) {
101
93
// Uses UTF-8 as default
102
94
val ssidBytes = ssid.toByteArray()
103
95
val pwdBytes = password.toByteArray()
104
96
105
- val devicePtr =
106
- ChipClient .getConnectedDevicePointer(requireContext(), DeviceIdUtil .getLastDeviceId(requireContext()))
107
- val cluster = NetworkCommissioningCluster (devicePtr, /* endpointId = */ 0 )
108
-
97
+ val cluster = createNetworkCommissioningCluster()
109
98
val enableNetworkCallback = object :
110
99
NetworkCommissioningCluster .EnableNetworkResponseCallback {
111
100
override fun onSuccess (errorCode : Int , debugText : String ) {
@@ -157,7 +146,7 @@ class EnterNetworkFragment : Fragment() {
157
146
}, ssidBytes, pwdBytes, /* breadcrumb = */ 0L , ADD_NETWORK_TIMEOUT )
158
147
}
159
148
160
- private suspend fun saveThreadNetwork () {
149
+ private fun saveThreadNetwork () {
161
150
val channelStr = channelEd.text
162
151
val panIdStr = panIdEd.text
163
152
@@ -193,9 +182,7 @@ class EnterNetworkFragment : Fragment() {
193
182
return
194
183
}
195
184
196
- val devicePtr =
197
- ChipClient .getConnectedDevicePointer(requireContext(), DeviceIdUtil .getLastDeviceId(requireContext()))
198
- val cluster = NetworkCommissioningCluster (devicePtr, /* endpointId = */ 0 )
185
+ val cluster = createNetworkCommissioningCluster()
199
186
200
187
val operationalDataset = makeThreadOperationalDataset(
201
188
channelStr.toString().toInt(),
@@ -290,13 +277,20 @@ class EnterNetworkFragment : Fragment() {
290
277
return dataset
291
278
}
292
279
280
+ private fun createNetworkCommissioningCluster (): NetworkCommissioningCluster {
281
+ val devicePtr = ChipClient .getDeviceController(requireContext())
282
+ .getDeviceBeingCommissionedPointer(DeviceIdUtil .getLastDeviceId(requireContext()))
283
+ return NetworkCommissioningCluster (devicePtr, NETWORK_COMMISSIONING_CLUSTER_ENDPOINT )
284
+ }
285
+
293
286
private fun String.hexToByteArray (): ByteArray {
294
287
return chunked(2 ).map { byteStr -> byteStr.toUByte(16 ).toByte() }.toByteArray()
295
288
}
296
289
297
290
companion object {
298
291
private const val TAG = " EnterNetworkFragment"
299
292
private const val ARG_PROVISION_NETWORK_TYPE = " provision_network_type"
293
+ private const val NETWORK_COMMISSIONING_CLUSTER_ENDPOINT = 0
300
294
301
295
// TODO(#5035): remove hardcoded option when delayed commands work.
302
296
private const val USE_HARDCODED_WIFI = false
0 commit comments