| 81 | } |
| 82 | |
| 83 | static void cachePeerRecord(const BtPeerRecord& krecord) { |
| 84 | PeerRecord rec; |
| 85 | memcpy(rec.addr.data(), krecord.addr, 6); |
| 86 | rec.name = krecord.name[0] != '\0' ? krecord.name : ""; |
| 87 | rec.rssi = krecord.rssi; |
| 88 | rec.paired = krecord.paired; |
| 89 | rec.connected = krecord.connected; |
| 90 | rec.profileId = 0; |
| 91 | |
| 92 | cacheScanAddr(krecord.addr, krecord.addr_type); |
| 93 | |
| 94 | auto lock = scan_cache_mutex.asScopedLock(); |
| 95 | lock.lock(); |
| 96 | for (auto& existing : scan_results_cache) { |
| 97 | if (existing.addr == rec.addr) { |
| 98 | if (!rec.name.empty()) existing.name = rec.name; |
| 99 | existing.rssi = rec.rssi; |
| 100 | return; |
| 101 | } |
| 102 | } |
| 103 | scan_results_cache.push_back(std::move(rec)); |
| 104 | } |
| 105 | |
| 106 | // ---- Bridge callback (registered with kernel driver) ---- |
| 107 | // This callback listens to platform driver events to perform auto-start logic |
no test coverage detected