Skip to content

Commit 21753df

Browse files
committed
Merge branch 'bugfix/matter_node_param_value' into 'master'
Improvement and fixes for matter node param values See merge request app-frameworks/esp-rainmaker-android!85
2 parents a99a592 + 78a556d commit 21753df

10 files changed

+460
-79
lines changed

app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ android {
5555
applicationId "com.espressif.rainmaker"
5656
minSdkVersion 27
5757
targetSdkVersion 34
58-
versionCode 114
59-
versionName "3.2.3 - ${getGitHash()}"
58+
versionCode 117
59+
versionName "3.2.4 - ${getGitHash()}"
6060
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
6161

6262
buildConfigField "String", "GitHash", "\"${getGitHash()}\""

app/src/main/java/com/espressif/AppConstants.kt

+15
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,14 @@ class AppConstants {
5959
const val ESP_DEVICE_SECURITY_PANEL = "esp.device.security-panel"
6060
const val ESP_DEVICE_OTHER = "esp.device.other"
6161

62+
const val MATTER_DEVICE_LIGHT_BULB = 269
63+
const val MATTER_DEVICE_SWITCH = 259
64+
const val MATTER_DEVICE_CONTACT_SENSOR = 21
65+
const val MATTER_DEVICE_OUTLET = 266
66+
const val MATTER_DEVICE_BULB_RGB = 268
67+
const val MATTER_DEVICE_THERMOSTAT = 769
68+
const val MATTER_DEVICE_TEMP_SENSOR = 770
69+
6270
// Service Types
6371
const val SERVICE_TYPE_SCHEDULE = "esp.service.schedule"
6472
const val SERVICE_TYPE_SCENES = "esp.service.scenes"
@@ -82,6 +90,12 @@ class AppConstants {
8290
const val PARAM_TYPE_FACTORY_RESET = "esp.param.factory-reset"
8391
const val PARAM_TYPE_WIFI_RESET = "esp.param.wifi-reset"
8492

93+
// Param names
94+
const val PARAM_POWER = "Power"
95+
const val PARAM_BRIGHTNESS = "Brightness"
96+
const val PARAM_HUE = "Hue"
97+
const val PARAM_SATURATION = "Saturation"
98+
8599
// Transport types
86100
const val TRANSPORT_SOFTAP = "softap"
87101
const val TRANSPORT_BLE = "ble"
@@ -407,6 +421,7 @@ class AppConstants {
407421
const val KEY_DEVICENAME = "deviceName"
408422
const val KEY_ENDPOINTS_DATA = "endpointsData"
409423
const val KEY_SERVERS_DATA = "serversData"
424+
const val KEY_CLIENTS_DATA = "clientsData"
410425
const val KEY_PRODUCT_ID = "productId"
411426
const val KEY_VENDOR_ID = "vendorId"
412427
const val KEY_IS_RAINMAKER = "isRainmaker"

app/src/main/java/com/espressif/EspApplication.java

+10-63
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,14 @@ public void changeAppState(AppState newState, Bundle extras) {
209209
EventBus.getDefault().post(new UpdateEvent(UpdateEventType.EVENT_STATE_CHANGE_UPDATE));
210210
startLocalDeviceDiscovery();
211211
for (Map.Entry<String, String> entry : matterRmNodeIdMap.entrySet()) {
212+
String nodeId = entry.getKey();
212213
String matterNodeId = entry.getValue();
213214
ChipClientHelper clientHelper = new ChipClientHelper(this);
214-
clientHelper.initChipClientInBackground(matterNodeId);
215+
if (!chipClientMap.containsKey(matterNodeId)) {
216+
clientHelper.initChipClientInBackground(matterNodeId);
217+
} else {
218+
clientHelper.getCurrentValues(nodeId, matterNodeId, nodeMap.get(nodeId));
219+
}
215220
}
216221
break;
217222
}
@@ -539,64 +544,6 @@ public void onNetworkFailure(Exception exception) {
539544
});
540545
}
541546

542-
private void initChipController(String matterNodeId) {
543-
Log.d(TAG, "Init ChipController for matter node id : " + matterNodeId);
544-
if (TextUtils.isEmpty(matterNodeId)) {
545-
Log.e(TAG, "======= Init ChipController will not be done. Matter node id is not available");
546-
return;
547-
}
548-
549-
for (Map.Entry<String, Group> entry : groupMap.entrySet()) {
550-
551-
if (entry.getValue().isMatter()) {
552-
Group g = entry.getValue();
553-
HashMap<String, String> nodeDetails = g.getNodeDetails();
554-
if (nodeDetails != null) {
555-
for (Map.Entry<String, String> detail : nodeDetails.entrySet()) {
556-
557-
String nodeId = detail.getKey();
558-
String mNodeId = detail.getValue();
559-
String fabricId = "";
560-
String ipk = "";
561-
String rootCa = "";
562-
String catIdOp = "";
563-
564-
if (!matterNodeId.equals(mNodeId)) {
565-
continue;
566-
}
567-
568-
Log.d(TAG, "Node detail, node id : " + nodeId + " and matter node id : " + matterNodeId);
569-
570-
if (g.getFabricDetails() != null) {
571-
fabricId = g.getFabricDetails().getFabricId();
572-
rootCa = g.getFabricDetails().getRootCa();
573-
ipk = g.getFabricDetails().getIpk();
574-
catIdOp = g.getFabricDetails().getGroupCatIdOperate();
575-
576-
if (!chipClientMap.containsKey(matterNodeId)) {
577-
if (!TextUtils.isEmpty(fabricId) && !TextUtils.isEmpty(rootCa)
578-
&& !TextUtils.isEmpty(ipk) && !TextUtils.isEmpty(matterNodeId) && !TextUtils.isEmpty(matterNodeId)) {
579-
ChipClient chipClient = new ChipClient(this, g.getGroupId()
580-
, fabricId, rootCa, ipk, catIdOp);
581-
chipClientMap.put(matterNodeId, chipClient);
582-
}
583-
}
584-
fetchDeviceMatterInfo(matterNodeId, nodeId);
585-
586-
EspNode node = nodeMap.get(nodeId);
587-
if (node != null) {
588-
String nodeType = node.getNewNodeType();
589-
if (!TextUtils.isEmpty(nodeType) && nodeType.equals(AppConstants.NODE_TYPE_PURE_MATTER)) {
590-
addParamsForMatterOnlyDevice(nodeId, matterNodeId, node);
591-
}
592-
}
593-
}
594-
}
595-
}
596-
}
597-
}
598-
}
599-
600547
private void initChipControllerForHomeGroup() {
601548

602549
Log.d(TAG, "============================= init ChipController for home group");
@@ -767,7 +714,7 @@ public void addParamsForMatterOnlyDevice(String nodeId, String matterNodeId, Esp
767714
brightnessParam.setDataType("int");
768715
brightnessParam.setUiType(AppConstants.UI_TYPE_SLIDER);
769716
brightnessParam.setParamType(AppConstants.PARAM_TYPE_BRIGHTNESS);
770-
brightnessParam.setName("Brightness");
717+
brightnessParam.setName(AppConstants.PARAM_BRIGHTNESS);
771718
brightnessParam.setMinBounds(0);
772719
brightnessParam.setMaxBounds(100);
773720
brightnessParam.setProperties(properties);
@@ -806,7 +753,7 @@ public void addParamsForMatterOnlyDevice(String nodeId, String matterNodeId, Esp
806753
saturation.setDataType("int");
807754
saturation.setUiType(AppConstants.UI_TYPE_SLIDER);
808755
saturation.setParamType(AppConstants.PARAM_TYPE_SATURATION);
809-
saturation.setName("Saturation");
756+
saturation.setName(AppConstants.PARAM_SATURATION);
810757
saturation.setProperties(properties);
811758
saturation.setMinBounds(0);
812759
saturation.setMaxBounds(100);
@@ -820,7 +767,7 @@ public void addParamsForMatterOnlyDevice(String nodeId, String matterNodeId, Esp
820767
hue.setDataType("int");
821768
hue.setUiType(AppConstants.UI_TYPE_HUE_SLIDER);
822769
hue.setParamType(AppConstants.PARAM_TYPE_HUE);
823-
hue.setName("Hue");
770+
hue.setName(AppConstants.PARAM_HUE);
824771
hue.setProperties(properties);
825772
params.add(hue);
826773
}
@@ -1253,7 +1200,7 @@ private void addToggleParam(ArrayList<Param> params, ArrayList<String> propertie
12531200
param.setDataType("bool");
12541201
param.setUiType(AppConstants.UI_TYPE_TOGGLE);
12551202
param.setParamType(AppConstants.PARAM_TYPE_POWER);
1256-
param.setName("Power");
1203+
param.setName(AppConstants.PARAM_POWER);
12571204
param.setSwitchStatus(false);
12581205
param.setProperties(properties);
12591206
params.add(param);

0 commit comments

Comments
 (0)