summaryrefslogtreecommitdiff
path: root/src/Device/Device.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Device/Device.cpp')
-rw-r--r--src/Device/Device.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/Device/Device.cpp b/src/Device/Device.cpp
index 4e449ab..e182b20 100644
--- a/src/Device/Device.cpp
+++ b/src/Device/Device.cpp
@@ -47,6 +47,17 @@ bool Device::isAccessoryCard(const char * d_name, const char * dir_name) {
return std::binary_search(apIdentifiers.begin(), apIdentifiers.end(), dir_name) && !regex_match(d_name, apFilters);
}
+void Device::sortAccessoryCards() {
+ rapidjson::SizeType i, j;
+ for (i = 0; i < accessoryCards.Size() - 1; i++) {
+ for (j = 0; j < accessoryCards.Size() - i - 1; j++) {
+ if (accessoryCards[j]["port"].GetString() < accessoryCards[j+1]["port"].GetString()) {
+ accessoryCards[j].Swap( accessoryCards[j+1]);
+ }
+ }
+ }
+}
+
bool Device::isValidDirectory(const struct dirent * entry, std::string fullPath, const char * d_name) {
std::string path = fullPath + "/" + std::string(d_name);
return (entry->d_type & DT_DIR) && strcmp (d_name, "..") != 0 && strcmp (d_name, ".") != 0 && (path.length() < PATH_MAX);
@@ -85,9 +96,9 @@ void Device::getSystemTreeJson(const char * dir_name) {
} else if (regex_match(fileData, lora15Filters)) {
Lora15Card lora15(*this, fileData, dir_name);
} else if (regex_match(fileData, gpiobFilters)) {
- Gpiob ppiob(*this);
+ Gpiob ppiob(*this, fileData, dir_name);
} else if (regex_match(fileData, mfserFilters)) {
- Mfser msfer(*this, dir_name);
+ Mfser msfer(*this, fileData, dir_name);
}
}
accessoryCard.AddMember(rapidjson::Value().SetString(toCamelCase(d_name).c_str(), accessoryCardsAlloc), rapidjson::Value().SetString(fileData.c_str(), accessoryCardsAlloc), accessoryCardsAlloc);
@@ -143,7 +154,11 @@ void Device::load() {
getSystemTreeJson("");
if (!accessoryCard.IsNull()) {
accessoryCards.PushBack(accessoryCard, accessoryCardsAlloc);
+ if (accessoryCards.Size() > 1) {
+ sortAccessoryCards();
+ }
}
+
mapFileToCapability();
mapFirmware();
for (const auto capability : capabilityList) {