Skip to content

Commit b4760b0

Browse files
authored
Minor BT refactor (service_len) (1technophile#890)
1 parent 0bb60ef commit b4760b0

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

main/ZgatewayBT.ino

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -964,8 +964,7 @@ void RemoveJsonPropertyIf(JsonObject& obj, char* key, bool condition) {
964964
}
965965
}
966966

967-
boolean valid_service_data(const char* data) {
968-
int size = strlen(data);
967+
boolean valid_service_data(const char* data, int size) {
969968
for (int i = 0; i < size; ++i) {
970969
if (data[i] != 48) // 48 correspond to 0 in ASCII table
971970
return true;
@@ -1047,8 +1046,8 @@ JsonObject& process_bledata(JsonObject& BLEdata) {
10471046
if (BLEdata.containsKey("servicedata")) {
10481047
Log.trace(F("Checking BLE service data validity" CR));
10491048
const char* service_data = (const char*)(BLEdata["servicedata"] | "");
1050-
if (valid_service_data(service_data)) {
1051-
int service_len = strlen(service_data);
1049+
int service_len = strlen(service_data);
1050+
if (valid_service_data(service_data, service_len)) {
10521051
Log.trace(F("Searching BLE device data %s size %d" CR), service_data, strlen(service_data));
10531052
Log.trace(F("Is it a mi flora ?" CR));
10541053
if (strstr(service_data, "209800") != NULL) {
@@ -1059,31 +1058,31 @@ JsonObject& process_bledata(JsonObject& BLEdata) {
10591058
return process_sensors(2, BLEdata);
10601059
}
10611060
Log.trace(F("Is it a vegtrug ?" CR));
1062-
if (strstr(service_data, "20bc03") != NULL && strlen(service_data) > ServicedataMinLength) {
1061+
if (service_len > ServicedataMinLength && strstr(service_data, "20bc03") != NULL) {
10631062
Log.trace(F("vegtrug data reading" CR));
10641063
BLEdata.set("model", "VEGTRUG");
10651064
if (device->sensorModel == -1)
10661065
createOrUpdateDevice(mac, device_flags_init, VEGTRUG);
10671066
return process_sensors(2, BLEdata);
10681067
}
10691068
Log.trace(F("Is it a LYWSDCGQ?" CR));
1070-
if (strstr(service_data, "20aa01") != NULL && strlen(service_data) > ServicedataMinLength) {
1069+
if (service_len > ServicedataMinLength && strstr(service_data, "20aa01") != NULL) {
10711070
Log.trace(F("LYWSDCGQ data reading" CR));
10721071
BLEdata.set("model", "LYWSDCGQ");
10731072
if (device->sensorModel == -1)
10741073
createOrUpdateDevice(mac, device_flags_init, LYWSDCGQ);
10751074
return process_sensors(0, BLEdata);
10761075
}
10771076
Log.trace(F("Is it a JQJCY01YM?" CR));
1078-
if (strstr(service_data, "20df02") != NULL && strlen(service_data) > ServicedataMinLength) {
1077+
if (service_len > ServicedataMinLength && strstr(service_data, "20df02") != NULL) {
10791078
Log.trace(F("JQJCY01YM data reading" CR));
10801079
BLEdata.set("model", "JQJCY01YM");
10811080
if (device->sensorModel == -1)
10821081
createOrUpdateDevice(mac, device_flags_init, JQJCY01YM);
10831082
return process_sensors(0, BLEdata);
10841083
}
10851084
Log.trace(F("Is it a LYWSD02?" CR));
1086-
if (strstr(service_data, "205b04") != NULL && strlen(service_data) > ServicedataMinLength) {
1085+
if (service_len > ServicedataMinLength && strstr(service_data, "205b04") != NULL) {
10871086
Log.trace(F("LYWSD02 data reading" CR));
10881087
BLEdata.set("model", "LYWSD02");
10891088
if (device->sensorModel == -1)
@@ -1099,7 +1098,7 @@ JsonObject& process_bledata(JsonObject& BLEdata) {
10991098
return process_milamp(BLEdata);
11001099
}
11011100
Log.trace(F("Is it a CGP1W?" CR));
1102-
if ((strncmp(service_data, "0809", 4) == 0) && strlen(service_data) > ServicedataMinLength) {
1101+
if (service_len > ServicedataMinLength && strncmp(service_data, "0809", 4) == 0) {
11031102
Log.trace(F("CGP1W data reading" CR));
11041103
BLEdata.set("model", "CGP1W");
11051104
if (device->sensorModel == -1)
@@ -1109,23 +1108,23 @@ JsonObject& process_bledata(JsonObject& BLEdata) {
11091108
Log.trace(F("Is it a CGG1" CR));
11101109
// One type of the advertising packet format started with 50204703 or 50304703, where 4703 is a type of a sensor
11111110
// Another type of the advertising packet started with 0807 or 8816
1112-
if ((strncmp(&service_data[2], "4703", 4) == 0 && strlen(service_data) > ServicedataMinLength) || (strncmp(service_data, "0807", 4) == 0) || (strncmp(service_data, "8816", 4) == 0)) {
1111+
if ((service_len > ServicedataMinLength && strncmp(&service_data[2], "4703", 4) == 0) || (strncmp(service_data, "0807", 4) == 0) || (strncmp(service_data, "8816", 4) == 0)) {
11131112
Log.trace(F("CGG1 data reading" CR));
11141113
BLEdata.set("model", "CGG1");
11151114
if (device->sensorModel == -1)
11161115
createOrUpdateDevice(mac, device_flags_init, CGG1);
11171116
return strncmp(&service_data[2], "4703", 4) == 0 ? process_sensors(0, BLEdata) : process_cleargrass(BLEdata, false);
11181117
}
11191118
Log.trace(F("Is it a CGD1?" CR));
1120-
if (((strstr(service_data, "080caf") != NULL || strstr(service_data, "080c09") != NULL) && (strlen(service_data) > ServicedataMinLength)) || (strstr(service_data, "080cd0") != NULL && (strlen(service_data) > ServicedataMinLength - 6))) {
1119+
if ((service_len > ServicedataMinLength && (strstr(service_data, "080caf") != NULL || strstr(service_data, "080c09") != NULL)) || (service_len > ServicedataMinLength - 6 && strstr(service_data, "080cd0") != NULL)) {
11211120
Log.trace(F("CGD1 data reading" CR));
11221121
BLEdata.set("model", "CGD1");
11231122
if (device->sensorModel == -1)
11241123
createOrUpdateDevice(mac, device_flags_init, CGD1);
11251124
return process_cleargrass(BLEdata, false);
11261125
}
11271126
Log.trace(F("Is it a CGDK2?" CR));
1128-
if (strncmp(&service_data[0], "8810", 4) == 0 && strlen(service_data) > ServicedataMinLength) {
1127+
if (service_len > ServicedataMinLength && strncmp(&service_data[0], "8810", 4) == 0) {
11291128
Log.trace(F("CGDK2 data reading" CR));
11301129
BLEdata.set("model", "CGDK2");
11311130
if (device->sensorModel == -1)

0 commit comments

Comments
 (0)