summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Device/Device.cpp16
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 */