You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

FreeFareDevice.cpp 813B

1234567891011121314151617181920212223242526
  1. //
  2. // Created by robin on 6/19/16.
  3. //
  4. #include "FreeFareDevice.h"
  5. FreeFareDevice::FreeFareDevice(std::shared_ptr<NfcDevice> device)
  6. : _device(device)
  7. {
  8. }
  9. Result<std::vector<std::shared_ptr<FreeFareTag>>> FreeFareDevice::getTags()
  10. {
  11. if (!_device->isOpened()) {
  12. return Result<std::vector<std::shared_ptr<FreeFareTag>>>::error("Device is not opened");
  13. }
  14. FreefareTag* tags = freefare_get_tags(_device->getDevice());
  15. if (!tags) {
  16. return Result<std::vector<std::shared_ptr<FreeFareTag>>>::error("Failed to get MIFARE tags");
  17. }
  18. std::vector<std::shared_ptr<FreeFareTag>> tagList;
  19. for (size_t i = 0; tags[i] != 0; ++i) {
  20. tagList.push_back(std::make_shared<FreeFareTag>(tags[i]));
  21. }
  22. return Result<std::vector<std::shared_ptr<FreeFareTag>>>::ok(tagList);
  23. }