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 = {