@@ -28,6 +28,7 @@ import kotlinx.coroutines.GlobalScope
2828import kotlinx.coroutines.future.future
2929import org.greenrobot.eventbus.EventBus
3030import java.math.BigInteger
31+ import java.util.concurrent.ExecutionException
3132
3233class ChipClientHelper constructor(private val espApp : EspApplication ) {
3334
@@ -48,63 +49,73 @@ class ChipClientHelper constructor(private val espApp: EspApplication) {
4849 return ;
4950 }
5051
51- for ((_, g) in espApp.groupMap.entries) {
52- if (g.isMatter) {
53- val nodeDetails = g.nodeDetails
54- if (nodeDetails != null ) {
55- for ((nodeId, mNodeId) in nodeDetails.entries) {
56- var fabricId = " "
57- var ipk = " "
58- var rootCa = " "
59- var groupCatIdOperate = " "
60- if (matterNodeId != mNodeId) {
61- continue
62- }
63- Log .d(
64- TAG ,
65- " Node detail, node id : $nodeId and matter node id : $matterNodeId "
66- )
67- if (g.fabricDetails != null ) {
68- fabricId = g.fabricDetails.fabricId
69- rootCa = g.fabricDetails.rootCa
70- ipk = g.fabricDetails.ipk
71- groupCatIdOperate = g.fabricDetails.groupCatIdOperate
72- if (! espApp.chipClientMap.containsKey(matterNodeId)) {
73- if (! TextUtils .isEmpty(fabricId) && ! TextUtils .isEmpty(rootCa)
74- && ! TextUtils .isEmpty(ipk) && ! TextUtils .isEmpty(matterNodeId)
75- && ! TextUtils .isEmpty(matterNodeId)
76- ) {
77- val chipClient = ChipClient (
78- espApp, g.groupId, fabricId, rootCa, ipk, groupCatIdOperate
79- )
80- espApp.chipClientMap.put(matterNodeId, chipClient)
81- }
52+ try {
53+
54+ for ((_, g) in espApp.groupMap.entries) {
55+ if (g.isMatter) {
56+ val nodeDetails = g.nodeDetails
57+ if (nodeDetails != null ) {
58+ for ((nodeId, mNodeId) in nodeDetails.entries) {
59+ var fabricId = " "
60+ var ipk = " "
61+ var rootCa = " "
62+ var groupCatIdOperate = " "
63+ if (matterNodeId != mNodeId) {
64+ continue
8265 }
83- espApp.fetchDeviceMatterInfo(matterNodeId, nodeId)
84- val node: EspNode ? = espApp.nodeMap.get(nodeId)
85- if (node != null ) {
86- getCurrentValues(nodeId, matterNodeId, node)
87- // val nodeType = node.newNodeType
88- // if (!TextUtils.isEmpty(nodeType) && nodeType == AppConstants.NODE_TYPE_PURE_MATTER) {
89- // espApp.addParamsForMatterOnlyDevice(nodeId, matterNodeId, node)
90- // }
66+ Log .d(
67+ TAG ,
68+ " Node detail, node id : $nodeId and matter node id : $matterNodeId "
69+ )
70+ if (g.fabricDetails != null ) {
71+ fabricId = g.fabricDetails.fabricId
72+ rootCa = g.fabricDetails.rootCa
73+ ipk = g.fabricDetails.ipk
74+ groupCatIdOperate = g.fabricDetails.groupCatIdOperate
75+ if (! espApp.chipClientMap.containsKey(matterNodeId)) {
76+ if (! TextUtils .isEmpty(fabricId) && ! TextUtils .isEmpty(rootCa)
77+ && ! TextUtils .isEmpty(ipk) && ! TextUtils .isEmpty(
78+ matterNodeId
79+ )
80+ && ! TextUtils .isEmpty(matterNodeId)
81+ ) {
82+ val chipClient = ChipClient (
83+ espApp,
84+ g.groupId,
85+ fabricId,
86+ rootCa,
87+ ipk,
88+ groupCatIdOperate
89+ )
90+ espApp.chipClientMap.put(matterNodeId, chipClient)
91+ }
92+ }
93+ espApp.fetchDeviceMatterInfo(matterNodeId, nodeId)
94+ val node: EspNode ? = espApp.nodeMap.get(nodeId)
95+ if (node != null ) {
96+ getCurrentValues(nodeId, matterNodeId, node)
97+ }
98+ Log .d(TAG , " Init and fetch cluster info done for the device" )
9199 }
92- Log .d(TAG , " Init and fetch cluster info done for the device" )
93100 }
94101 }
95102 }
96103 }
104+ } catch (e: Exception ) {
105+ e.printStackTrace()
106+ } finally {
107+ var updateEvent = UpdateEvent (UpdateEventType .EVENT_MATTER_DEVICE_CONNECTIVITY )
108+ var data = Bundle ()
109+ data.putString(AppConstants .KEY_MATTER_NODE_ID , matterNodeId)
110+ updateEvent.data = data
111+ EventBus .getDefault().post(updateEvent)
97112 }
98- var updateEvent = UpdateEvent (UpdateEventType .EVENT_MATTER_DEVICE_CONNECTIVITY )
99- var data = Bundle ()
100- data.putString(AppConstants .KEY_MATTER_NODE_ID , matterNodeId)
101- updateEvent.data = data
102- EventBus .getDefault().post(updateEvent)
103113 }
104114
105115 fun initChipClientInBackground (matterNodeId : String ) =
106116 GlobalScope .future { initChipClient(matterNodeId) }
107117
118+ @Throws(ExecutionException ::class )
108119 fun getCurrentValues (nodeId : String? , matterNodeId : String? , node : EspNode ) {
109120
110121 val id = BigInteger (matterNodeId, 16 )
0 commit comments