Skip to content
This repository has been archived by the owner on Nov 3, 2021. It is now read-only.

Commit

Permalink
Merge pull request #83 from DimiL/bug_1125041
Browse files Browse the repository at this point in the history
Bug 1125041 - Transceive function does not work on NFC_A tag. r=allstars...
  • Loading branch information
rvandermeulen committed Jan 26, 2015
2 parents 0c557e1 + 576b5b3 commit 1337449
Show file tree
Hide file tree
Showing 11 changed files with 153 additions and 165 deletions.
23 changes: 11 additions & 12 deletions src/NfcGonkMessage.h
Expand Up @@ -104,19 +104,18 @@ typedef enum {
} NfcRFState;

/**
* NFC technologies.
* NFC technologies, this is defined in interface/TagTechnology.cpp
*
* UNKNOWN = -1
* NFC_A = 0
* NFC_B = 1
* NFC_F = 2
* NFC_V = 3
* NFC_ISO_DEP = 4
* MIFARE_CLASSIC = 5
* MIFARE_ULTRALIGHT = 6
* NFC_BARCODE = 7
*/
typedef enum {
NFC_TECH_UNKNOWN = -1,
NFC_TECH_NFCA = 0,
NFC_TECH_NFCB = 1,
NFC_TECH_NFCF = 2,
NFC_TECH_NFCV = 3,
NFC_TECH_ISO_DEP = 4,
NFC_TECH_MIFARE_CLASSIC = 5,
NFC_TECH_MIFARE_ULTRALIGHT = 6,
NFC_TECH_BARCODE = 7
} NfcTechnology;

/**
* NDEF type
Expand Down
6 changes: 2 additions & 4 deletions src/NfcService.cpp
Expand Up @@ -294,9 +294,7 @@ void NfcService::handleTagDiscovered(NfcEvent* event)
int techCount = techList.size();

uint8_t* gonkTechList = new uint8_t[techCount];
for(int i = 0; i < techCount; i++) {
gonkTechList[i] = (uint8_t)NfcUtil::convertTagTechToGonkFormat(techList[i]);
}
std::copy(techList.begin(), techList.end(), gonkTechList);

TechDiscoveredEvent* data = new TechDiscoveredEvent();
data->sessionId = SessionId::generateNewId();
Expand Down Expand Up @@ -592,7 +590,7 @@ void NfcService::handleTagTransceiveResponse(NfcEvent* event)
NfcErrorCode code = pINfcTag->connect(static_cast<TagTechnology>(tech)) ?
NFC_SUCCESS : NFC_ERROR_IO;

if (NFC_SUCCESS != code) {
if (NFC_SUCCESS == code) {
code = !!pINfcTag ? (pINfcTag->transceive(*command, response) ?
NFC_SUCCESS : NFC_ERROR_IO) : NFC_ERROR_NOT_SUPPORTED;
}
Expand Down
16 changes: 0 additions & 16 deletions src/NfcUtil.cpp
Expand Up @@ -27,22 +27,6 @@ void NfcUtil::convertNdefPduToNdefMessage(NdefMessagePdu& ndefPdu, NdefMessage*
}
}

NfcTechnology NfcUtil::convertTagTechToGonkFormat(TagTechnology tagTech) {
switch(tagTech) {
case NFC_A: return NFC_TECH_NFCA;
case NFC_B: return NFC_TECH_NFCB;
case NFC_ISO_DEP: return NFC_TECH_ISO_DEP;
case NFC_F: return NFC_TECH_NFCF;
case NFC_V: return NFC_TECH_NFCV;
case MIFARE_CLASSIC: return NFC_TECH_MIFARE_CLASSIC;
case MIFARE_ULTRALIGHT: return NFC_TECH_MIFARE_ULTRALIGHT;
case NFC_BARCODE: return NFC_TECH_MIFARE_ULTRALIGHT;
case UNKNOWN_TECH:
default: return NFC_TECH_UNKNOWN;
}
return NFC_TECH_NFCA;
}

NfcEvtTransactionOrigin NfcUtil::convertOriginType(TransactionEvent::OriginType type)
{
switch (type) {
Expand Down
1 change: 0 additions & 1 deletion src/NfcUtil.h
Expand Up @@ -27,7 +27,6 @@ class NfcUtil{

public:
static void convertNdefPduToNdefMessage(NdefMessagePdu& ndefPdu, NdefMessage* ndefMessage);
static NfcTechnology convertTagTechToGonkFormat(TagTechnology tagTech);
static NfcEvtTransactionOrigin convertOriginType(TransactionEvent::OriginType type);
static NfcNdefType convertNdefType(NdefType type);
private:
Expand Down
17 changes: 8 additions & 9 deletions src/interface/TagTechnology.h
Expand Up @@ -20,19 +20,18 @@
// Used by getTechList() of INfcTag.
// Define the tag technology.
typedef enum {
UNKNOWN_TECH = -1,
NFC_A = 0,
NFC_B = 1,
NFC_ISO_DEP = 2,
NFC_F = 3,
NFC_V = 4,
NDEF = 5,
MIFARE_CLASSIC = 6,
MIFARE_ULTRALIGHT = 7,
NFC_BARCODE = 8,
UNKNOWN_TECH = 9
NFC_F = 2,
NFC_V = 3,
NFC_ISO_DEP = 4,
MIFARE_CLASSIC = 5,
MIFARE_ULTRALIGHT = 6,
NFC_BARCODE = 7,
NDEF = 8,
} TagTechnology;


// Pre-defined tag type values.
typedef enum {
NDEF_UNKNOWN_TYPE = -1,
Expand Down
46 changes: 24 additions & 22 deletions src/nci/NfcNciUtil.cpp
Expand Up @@ -16,34 +16,36 @@

#include "NfcNciUtil.h"

TagTechnology NfcNciUtil::toGenericTagTechnology(unsigned int tagTech)
TagTechnology NfcNciUtil::toTagTechnology(TechnologyType techType)
{
switch(tagTech) {
case TARGET_TYPE_ISO14443_3A: return NFC_A;
case TARGET_TYPE_ISO14443_3B: return NFC_B;
case TARGET_TYPE_ISO14443_4: return NFC_ISO_DEP;
case TARGET_TYPE_FELICA: return NFC_F;
case TARGET_TYPE_ISO15693: return NFC_V;
case TARGET_TYPE_MIFARE_CLASSIC: return MIFARE_CLASSIC;
case TARGET_TYPE_MIFARE_UL: return MIFARE_ULTRALIGHT;
case TARGET_TYPE_KOVIO_BARCODE: return NFC_BARCODE;
case TARGET_TYPE_UNKNOWN:
default: return UNKNOWN_TECH;
switch(techType) {
case TECHNOLOGY_TYPE_ISO14443_3A: return NFC_A;
case TECHNOLOGY_TYPE_ISO14443_3B: return NFC_B;
case TECHNOLOGY_TYPE_ISO14443_4: return NFC_ISO_DEP;
case TECHNOLOGY_TYPE_FELICA: return NFC_F;
case TECHNOLOGY_TYPE_ISO15693: return NFC_V;
case TECHNOLOGY_TYPE_MIFARE_CLASSIC: return MIFARE_CLASSIC;
case TECHNOLOGY_TYPE_MIFARE_UL: return MIFARE_ULTRALIGHT;
case TECHNOLOGY_TYPE_KOVIO_BARCODE: return NFC_BARCODE;
case TECHNOLOGY_TYPE_NDEF: return NDEF;
case TECHNOLOGY_TYPE_UNKNOWN:
default: return UNKNOWN_TECH;
}
}

unsigned int NfcNciUtil::toNciTagTechnology(TagTechnology tagTech)
TechnologyType NfcNciUtil::toTechnologyType(TagTechnology tagTech)
{
switch(tagTech) {
case NFC_A: return TARGET_TYPE_ISO14443_3A;
case NFC_B: return TARGET_TYPE_ISO14443_3B;
case NFC_ISO_DEP: return TARGET_TYPE_ISO14443_4;
case NFC_F: return TARGET_TYPE_FELICA;
case NFC_V: return TARGET_TYPE_ISO15693;
case MIFARE_CLASSIC: return TARGET_TYPE_MIFARE_CLASSIC;
case MIFARE_ULTRALIGHT: return TARGET_TYPE_MIFARE_UL;
case NFC_BARCODE: return TARGET_TYPE_KOVIO_BARCODE;
case NFC_A: return TECHNOLOGY_TYPE_ISO14443_3A;
case NFC_B: return TECHNOLOGY_TYPE_ISO14443_3B;
case NFC_ISO_DEP: return TECHNOLOGY_TYPE_ISO14443_4;
case NFC_F: return TECHNOLOGY_TYPE_FELICA;
case NFC_V: return TECHNOLOGY_TYPE_ISO15693;
case MIFARE_CLASSIC: return TECHNOLOGY_TYPE_MIFARE_CLASSIC;
case MIFARE_ULTRALIGHT: return TECHNOLOGY_TYPE_MIFARE_UL;
case NFC_BARCODE: return TECHNOLOGY_TYPE_KOVIO_BARCODE;
case NDEF: return TECHNOLOGY_TYPE_NDEF;
case UNKNOWN_TECH:
default: return TARGET_TYPE_UNKNOWN;
default: return TECHNOLOGY_TYPE_UNKNOWN;
}
}
27 changes: 15 additions & 12 deletions src/nci/NfcNciUtil.h
Expand Up @@ -62,17 +62,20 @@


/**
* Name strings for target types.
* Name strings for technology types.
*/
#define TARGET_TYPE_UNKNOWN -1
#define TARGET_TYPE_ISO14443_3A 1
#define TARGET_TYPE_ISO14443_3B 2
#define TARGET_TYPE_ISO14443_4 3
#define TARGET_TYPE_FELICA 4
#define TARGET_TYPE_ISO15693 5
#define TARGET_TYPE_MIFARE_CLASSIC 6
#define TARGET_TYPE_MIFARE_UL 7
#define TARGET_TYPE_KOVIO_BARCODE 8
enum TechnologyType{
TECHNOLOGY_TYPE_UNKNOWN = -1,
TECHNOLOGY_TYPE_ISO14443_3A = 1,
TECHNOLOGY_TYPE_ISO14443_3B = 2,
TECHNOLOGY_TYPE_ISO14443_4 = 3,
TECHNOLOGY_TYPE_FELICA = 4,
TECHNOLOGY_TYPE_ISO15693 = 5,
TECHNOLOGY_TYPE_NDEF = 6,
TECHNOLOGY_TYPE_MIFARE_CLASSIC = 7,
TECHNOLOGY_TYPE_MIFARE_UL = 8,
TECHNOLOGY_TYPE_KOVIO_BARCODE = 9,
};


// Define a few NXP error codes that NFC service expects.
Expand Down Expand Up @@ -114,8 +117,8 @@ struct nfc_data

class NfcNciUtil {
public:
static TagTechnology toGenericTagTechnology(unsigned int tagTech);
static unsigned int toNciTagTechnology(TagTechnology tagTech);
static TagTechnology toTagTechnology(TechnologyType techType);
static TechnologyType toTechnologyType(TagTechnology tagTech);
private:
NfcNciUtil();
};

0 comments on commit 1337449

Please sign in to comment.