Bladeren bron

improved AC bits read; improved cli output

develop
Robin Thoni 7 jaren geleden
bovenliggende
commit
97311119f5
2 gewijzigde bestanden met toevoegingen van 33 en 22 verwijderingen
  1. 16
    11
      cli/Interface/MainClass.cpp
  2. 17
    11
      src/Business/FreeFareTagBusiness.cpp

+ 16
- 11
cli/Interface/MainClass.cpp Bestand weergeven

@@ -128,9 +128,14 @@ int MainClass::dump(std::shared_ptr<FreeFareTagBusiness> tag, std::vector<std::s
128 128
         for (int b = 0; b < 3; ++b) {
129 129
             std::cout << (sector.hasBlock(b) ? StringUtils::rawToHuman(sector.getBlock(b)) : std::string(32, '-')) << std::endl;
130 130
         }
131
-        std::cout << (sector.hasKeyA() ? StringUtils::rawToHuman(sector.getKeyA()) : std::string(12, '-')) << " "
132
-            << (sector.hasAccessBits() ? StringUtils::rawToHuman(sector.getAccessBits()) : std::string(8, '-'))  << " "
133
-            << (sector.hasKeyB() ? StringUtils::rawToHuman(sector.getKeyB()) : std::string(12, '-')) << std::endl;
131
+        std::cout << "" << (sector.hasKeyA() ? StringUtils::rawToHuman(sector.getKeyA()) : std::string(12, '-'))
132
+        << (sector.hasAccessBits() ? StringUtils::rawToHuman(sector.getAccessBits()) : std::string(8, '-'))
133
+        << (sector.hasKeyB() ? StringUtils::rawToHuman(sector.getKeyB()) : std::string(12, '-')) << std::endl;
134
+
135
+
136
+        std::cout << "+Trailer key A: " << (sector.hasKeyA() ? StringUtils::rawToHuman(sector.getKeyA()) : std::string(12, '-'))
137
+            << "\t AC bits: " << (sector.hasAccessBits() ? StringUtils::rawToHuman(sector.getAccessBits()) : std::string(8, '-'))
138
+            << "\t key B: " << (sector.hasKeyB() ? StringUtils::rawToHuman(sector.getKeyB()) : std::string(12, '-')) << std::endl;
134 139
         AccessBitsDbo accessBitsDbo = sector.getAccessBitsDbo();
135 140
         for (int b = 0; b < 3; ++b) {
136 141
             std::cout << "+Block: " << b << " ";
@@ -145,21 +150,21 @@ int MainClass::dump(std::shared_ptr<FreeFareTagBusiness> tag, std::vector<std::s
145 150
 void MainClass::printBlockAccessBits(const AccessBitsDbo &accessBits, int block)
146 151
 {
147 152
     std::cout << "read: " << (accessBits.canKeyAReadBlock(block) ? "A" : "") << (accessBits.canKeyBReadBlock(block) ? "B" : "");
148
-    std::cout << " write: " << (accessBits.canKeyAWriteBlock(block) ? "A" : "") << (accessBits.canKeyBWriteBlock(block) ? "B" : "");
149
-    std::cout << " increment: " << (accessBits.canKeyAIncrementBlock(block) ? "A" : "") << (accessBits.canKeyBIncrementBlock(block) ? "B" : "");
150
-    std::cout << " decrement: " << (accessBits.canKeyADecrementBlock(block) ? "A" : "") << (accessBits.canKeyBDecrementBlock(block) ? "B" : "") << std::endl;
153
+    std::cout << "\t write: " << (accessBits.canKeyAWriteBlock(block) ? "A" : "") << (accessBits.canKeyBWriteBlock(block) ? "B" : "");
154
+    std::cout << "\t increment: " << (accessBits.canKeyAIncrementBlock(block) ? "A" : "") << (accessBits.canKeyBIncrementBlock(block) ? "B" : "");
155
+    std::cout << "\t decrement: " << (accessBits.canKeyADecrementBlock(block) ? "A" : "") << (accessBits.canKeyBDecrementBlock(block) ? "B" : "") << std::endl;
151 156
 }
152 157
 
153 158
 void MainClass::printTrailerAccessBits(const AccessBitsDbo &accessBits)
154 159
 {
155 160
     std::cout << "key A read: " << (accessBits.canKeyAReadKeyATrailer() ? "A" : "") << (accessBits.canKeyBReadKeyATrailer() ? "B" : "");
156
-    std::cout << " key A write: " << (accessBits.canKeyAWriteKeyATrailer() ? "A" : "") << (accessBits.canKeyBWriteKeyATrailer() ? "B" : "");
161
+    std::cout << "\t key A write: " << (accessBits.canKeyAWriteKeyATrailer() ? "A" : "") << (accessBits.canKeyBWriteKeyATrailer() ? "B" : "");
157 162
 
158
-    std::cout << " AC bits read: " << (accessBits.canKeyAReadAccessBitsTrailer() ? "A" : "") << (accessBits.canKeyBReadAccessBitsTrailer() ? "B" : "");
159
-    std::cout << " AC bits write: " << (accessBits.canKeyAWriteAccessBitsTrailer() ? "A" : "") << (accessBits.canKeyBWriteAccessBitsTrailer() ? "B" : "");
163
+    std::cout << "\t AC bits read: " << (accessBits.canKeyAReadAccessBitsTrailer() ? "A" : "") << (accessBits.canKeyBReadAccessBitsTrailer() ? "B" : "");
164
+    std::cout << "\t AC bits write: " << (accessBits.canKeyAWriteAccessBitsTrailer() ? "A" : "") << (accessBits.canKeyBWriteAccessBitsTrailer() ? "B" : "");
160 165
 
161
-    std::cout << " key B read: " << (accessBits.canKeyAReadKeyBTrailer() ? "A" : "") << (accessBits.canKeyBReadKeyBTrailer() ? "B" : "");
162
-    std::cout << " key B write: " << (accessBits.canKeyAWriteKeyBTrailer() ? "A" : "") << (accessBits.canKeyBWriteKeyBTrailer() ? "B" : "") << std::endl;;
166
+    std::cout << "\t key B read: " << (accessBits.canKeyAReadKeyBTrailer() ? "A" : "") << (accessBits.canKeyBReadKeyBTrailer() ? "B" : "");
167
+    std::cout << "\t key B write: " << (accessBits.canKeyAWriteKeyBTrailer() ? "A" : "") << (accessBits.canKeyBWriteKeyBTrailer() ? "B" : "") << std::endl;;
163 168
 }
164 169
 
165 170
 void MainClass::printPercent(int done, int total)

+ 17
- 11
src/Business/FreeFareTagBusiness.cpp Bestand weergeven

@@ -111,7 +111,9 @@ Result<std::vector<SectorDbo>> FreeFareTagBusiness::dump(MappedKeys keys, std::f
111 111
             if (!blockKey.second.empty()) {
112 112
                 auto blockResult = readBlock(s, b, blockKey.second, MFC_KEY_B);
113 113
                 if (blockResult) {
114
-                    data = blockResult.getData();
114
+                    if (data.empty()) {
115
+                        data = blockResult.getData();
116
+                    }
115 117
                     keyB = true;
116 118
                 }
117 119
             }
@@ -122,35 +124,39 @@ Result<std::vector<SectorDbo>> FreeFareTagBusiness::dump(MappedKeys keys, std::f
122 124
         }
123 125
         int b = sectorKeys.size() - 1;
124 126
         auto blockKey = sectorKeys[b];
125
-        std::string data = "";
127
+        std::string dataA = "";
128
+        std::string dataB = "";
126 129
         if (!blockKey.first.empty()) {
127 130
             auto blockResult = readBlock(s, b, blockKey.first, MFC_KEY_A);
128 131
             if (blockResult) {
129
-                data = blockResult.getData();
132
+                dataA = blockResult.getData();
130 133
                 keyA = true;
131 134
             }
132 135
         }
133 136
         if (!blockKey.second.empty()) {
134 137
             auto blockResult = readBlock(s, b, blockKey.second, MFC_KEY_B);
135 138
             if (blockResult) {
136
-                data = blockResult.getData();
139
+                dataB = blockResult.getData();
137 140
                 keyB = true;
138 141
             }
139 142
         }
140
-        sector.setBlock(b, data);
141
-        AccessBitsDbo accessBitsDbo = sector.getAccessBitsDbo();
142 143
         if (cb != 0) {
143 144
             cb((s * sectorKeys.size()) + b + 1, keys.size() * sectorKeys.size());
144 145
         }
145 146
 
147
+        sector.setBlock(b, dataA);
148
+        AccessBitsDbo accessBitsDboA = sector.getAccessBitsDbo();
149
+        sector.setBlock(b, dataB);
150
+        AccessBitsDbo accessBitsDboB = sector.getAccessBitsDbo();
146 151
         sector.setKeyA(keyA ? blockKey.first : "");
147 152
         sector.setKeyB(keyB ? blockKey.second : "");
153
+
148 154
         std::string accessBits;
149
-        if (!data.empty())
150
-        {
151
-            if ((keyA && accessBitsDbo.canKeyAReadAccessBitsTrailer()) || (keyB && accessBitsDbo.canKeyBReadAccessBitsTrailer())) {
152
-                accessBits = accessBitsDbo.getBits();
153
-            }
155
+        if (keyA && accessBitsDboA.canKeyAReadAccessBitsTrailer()) {
156
+            accessBits = accessBitsDboA.getBits();
157
+        }
158
+        else if (keyB && accessBitsDboB.canKeyBReadAccessBitsTrailer()) {
159
+            accessBits = accessBitsDboB.getBits();
154 160
         }
155 161
         sector.setAccessBits(accessBits);
156 162
 

Laden…
Annuleren
Opslaan