Adding log warnings in helpers when data types cannot be determined (#1654)
Github: ZAP#1247
diff --git a/src-electron/db/query-data-type.js b/src-electron/db/query-data-type.js
index d297737..ac30b2b 100644
--- a/src-electron/db/query-data-type.js
+++ b/src-electron/db/query-data-type.js
@@ -240,6 +240,9 @@
) {
return null
} else {
+ envConfig.logError(
+ `In selectSizeFromType, could not determine the data type. Original value: ${JSON.stringify(value)}, resolved dataType: ${JSON.stringify(dataType)}`
+ )
return null
}
} catch (err) {
diff --git a/src-electron/generator/helper-attribute.js b/src-electron/generator/helper-attribute.js
index a74e327..613ca92 100644
--- a/src-electron/generator/helper-attribute.js
+++ b/src-electron/generator/helper-attribute.js
@@ -24,7 +24,7 @@
const queryAttribute = require('../db/query-attribute')
const queryZcl = require('../db/query-zcl')
const templateUtil = require('./template-util')
-const zclUtil = require('../util/zcl-util')
+const envConfig = require('../util/env')
const dbEnum = require('../../src-shared/db-enum')
/**
@@ -144,7 +144,10 @@
attributeDetails.clusterRef,
[attributeDetails.packageRef]
)
- if (dataType.discriminatorName.toLowerCase() == dbEnum.zclType.enum) {
+ if (
+ dataType &&
+ dataType.discriminatorName.toLowerCase() == dbEnum.zclType.enum
+ ) {
let enumInfo = await queryZcl.selectEnumByNameAndClusterId(
this.global.db,
attributeDetails.type,
@@ -158,6 +161,7 @@
)
return atomicInfo ? atomicInfo.atomicId : null
} else if (
+ dataType &&
dataType.discriminatorName.toLowerCase() == dbEnum.zclType.bitmap
) {
let bitmapInfo = await queryZcl.selectBitmapByNameAndClusterId(
@@ -173,6 +177,7 @@
)
return atomicInfo ? atomicInfo.atomicId : null
} else if (
+ dataType &&
dataType.discriminatorName.toLowerCase() == dbEnum.zclType.struct
) {
atomicInfo = await queryZcl.selectAtomicType(
@@ -182,6 +187,7 @@
)
return atomicInfo ? atomicInfo.atomicId : null
} else if (
+ dataType &&
dataType.discriminatorName.toLowerCase() == dbEnum.zclType.array
) {
atomicInfo = await queryZcl.selectAtomicType(
@@ -191,6 +197,9 @@
)
return atomicInfo ? atomicInfo.atomicId : null
} else {
+ envConfig.logError(
+ `In as_underlying_atomic_identifier_for_attribute_id, could not determine the data type. Type name: ${attributeDetails?.type || 'unknown'}, resolved dataType: ${JSON.stringify(dataType)}`
+ )
return null
}
}
diff --git a/src-electron/generator/helper-c.js b/src-electron/generator/helper-c.js
index 5664949..466bb62 100644
--- a/src-electron/generator/helper-c.js
+++ b/src-electron/generator/helper-c.js
@@ -25,7 +25,6 @@
const queryPackage = require('../db/query-package.js')
const templateUtil = require('./template-util.js')
const bin = require('../util/bin')
-const types = require('../util/types.js')
const string = require('../util/string')
const _ = require('lodash')
const dbEnum = require('../../src-shared/db-enum.js')
@@ -135,6 +134,9 @@
) {
return context.global.overridable.stringType()
} else {
+ envConfig.logError(
+ `In asUnderlyingTypeHelper, could not determine the data type. This might be due to an unknown type passed to asUnderlyingType. Received: ${JSON.stringify(dataType)}`
+ )
return 'uint8_t *'
}
} catch (err) {
diff --git a/src-electron/generator/helper-zigbee-zcl.js b/src-electron/generator/helper-zigbee-zcl.js
index 4c7e84d..69c0a5b 100644
--- a/src-electron/generator/helper-zigbee-zcl.js
+++ b/src-electron/generator/helper-zigbee-zcl.js
@@ -24,6 +24,7 @@
const queryZcl = require('../db/query-zcl')
const dbEnum = require('../../src-shared/db-enum')
const templateUtil = require('./template-util')
+const envConfig = require('../util/env')
/**
*
@@ -113,6 +114,9 @@
) {
return cliPrefix + '_STRING' + optionalArgumentExtension
} else {
+ envConfig.logError(
+ `In zcl_command_argument_type_to_cli_data_type_util, could not determine the data type for ${JSON.stringify(dataType)}`
+ )
return ''
}
} else {
diff --git a/src-electron/generator/matter/controller/python/templates/helper.js b/src-electron/generator/matter/controller/python/templates/helper.js
index feb4ecd..f520a27 100644
--- a/src-electron/generator/matter/controller/python/templates/helper.js
+++ b/src-electron/generator/matter/controller/python/templates/helper.js
@@ -21,6 +21,7 @@
const ChipTypesHelper = require('../../../app/zap-templates/common/ChipTypesHelper');
const templateUtil = require(zapPath + 'generator/template-util.js');
const queryZcl = require(zapPath + 'db/query-zcl');
+const envConfig = require(zapPath + 'util/env');
const characterStringTypes = ['CHAR_STRING', 'LONG_CHAR_STRING'];
const octetStringTypes = ['OCTET_STRING', 'LONG_OCTET_STRING'];
@@ -104,6 +105,9 @@
} else if (characterStringTypes.includes(type.toUpperCase())) {
return 'str';
} else {
+ envConfig.logError(
+ `In as_underlying_python_zcl_type, could not determine the data type for type: '${type}', received dataType: ${JSON.stringify(dataType)}`
+ );
return '';
}
}
diff --git a/src-electron/util/types.js b/src-electron/util/types.js
index 7a372ad..c763212 100644
--- a/src-electron/util/types.js
+++ b/src-electron/util/types.js
@@ -401,8 +401,16 @@
dataType.name
)
dataTypesize = Math.pow(2, Math.ceil(Math.log2(number.size)))
+ } else {
+ env.logError(
+ `In getSignAndSizeOfZclType, unhandled discriminatorName '${dataType.discriminatorName}' for type '${type}': ${JSON.stringify(dataType)}`
+ )
+ isKnown = false
}
} else {
+ env.logError(
+ `In getSignAndSizeOfZclType, could not determine the data type for type: '${type}'`
+ )
isKnown = false
}
let ret = {