diff options
-rw-r--r-- | src/Device/Device.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/Device/Device.cpp b/src/Device/Device.cpp index 6ef807e..5f0e281 100644 --- a/src/Device/Device.cpp +++ b/src/Device/Device.cpp @@ -37,6 +37,7 @@ std::map<std::string, bool> Device::capabilityList = { {"battery", false}, {"bluetooth", false}, {"cell", false}, + {"cellPpp", false}, {"cellWwan", false}, {"din", false}, {"dout", false}, @@ -316,9 +317,18 @@ void Device::mapFileToCapability() { S_IFREG) { /* lora-network-server is a regular file */ capabilityList["loraNetworkServer"] = true; } - if (fileType("/dev/cdc-wdm0") == - S_IFCHR) { /* Cellular modem is wwan/qmi character device */ - capabilityList["cellWwan"] = true; + if (capabilityList["cell"]) { /* only on devices with Cellular */ + if (fileType("/dev/cdc-wdm0") == S_IFCHR) { + /* Cellular modem is wwan/qmi/mbim character device */ + capabilityList["cellWwan"] = true; + } + if (!fileExists("/dev/modem_at0") && fileType("/dev/modem_at1") == S_IFCHR) { + /* Cellular modem without PPP support, probably uses ECM WWAN */ + capabilityList["cellWwan"] = true; + } else { + /* all other radios - assume PPP is supported */ + capabilityList["cellPpp"] = true; + } } if (fileType("/dev/ext_serial") == S_IFCHR) { /* ext_serial is a character device */ |