Backporting bug fixes and additions from EM4233 branch

This commit is contained in:
Federico Cerutti
2018-12-16 20:03:02 +01:00
parent fda9f07894
commit 7bc809cc16
3 changed files with 18 additions and 5 deletions
@@ -75,17 +75,20 @@ bool ISO15693PrepareFrame(uint8_t* FrameBuf, uint16_t FrameBytes, CurrentFrame*
FrameStruct -> Flags = &FrameBuf[ISO15693_ADDR_FLAGS];
FrameStruct -> Command = &FrameBuf[ISO15693_REQ_ADDR_CMD];
if(!(FrameBuf[ISO15693_ADDR_FLAGS] & ISO15693_REQ_FLAG_INVENTORY)) /* if inventory flag is not set */
if(!(FrameBuf[ISO15693_ADDR_FLAGS] & ISO15693_REQ_FLAG_INVENTORY)) { /* if inventory flag is not set */
FrameStruct -> Addressed = (FrameBuf[ISO15693_ADDR_FLAGS] & ISO15693_REQ_FLAG_ADDRESS); /* check for addressed flag */
else /* otherwise always false */
FrameStruct -> Selected = (FrameBuf[ISO15693_ADDR_FLAGS] & ISO15693_REQ_FLAG_SELECT); /* check for selected flag */
} else { /* otherwise always false */
FrameStruct -> Addressed = false;
FrameStruct -> Selected = false;
}
if (FrameStruct -> Addressed)
/* UID sits between CMD and PARAM */
FrameStruct -> Parameters = &FrameBuf[ISO15693_REQ_ADDR_PARAM + ISO15693_GENERIC_UID_SIZE];
else
FrameStruct -> Parameters = &FrameBuf[ISO15693_REQ_ADDR_PARAM];
FrameStruct -> ParamLen = FrameBuf + (FrameBytes - ISO15693_CRC16_SIZE) - (FrameStruct -> Parameters);
if (FrameStruct -> Addressed && !ISO15693CompareUid(&FrameBuf[ISO15693_REQ_ADDR_PARAM], MyUid)) {
@@ -63,21 +63,29 @@
#define ISO15693_RES_INVENTORY_DSFID 0x00
#define ISO15693_MIN_FRAME_SIZE 0x05
#define ISO15693_MIN_FRAME_SIZE 0x04
#define ISO15693_GENERIC_UID_SIZE 0x08
#define ISO15693_GENERIC_MEM_SIZE 8192
#define ISO15693_CRC16_SIZE 2 /* Bytes */
#define ISO15693_CRC16_SIZE 0x2 /* Bytes */
#define ISO15693_CRC16_POLYNORMAL 0x8408
#define ISO15693_CRC16_PRESET 0xFFFF
/*
* The byte used for the lock status has its bits addressed as follow:
*
*/
#define ISO15693_MASK_USER_LOCK ( 1 << 0 )
#define ISO15693_MASK_FACTORY_LOCK ( 1 << 1 )
typedef struct {
uint8_t* Flags;
uint8_t* Command;
uint8_t* Parameters;
uint8_t ParamLen;
bool Addressed;
bool Selected;
} CurrentFrame;
void ISO15693AppendCRC(uint8_t* FrameBuf, uint16_t FrameBufSize);
@@ -32,6 +32,7 @@ void TITagitstandardAppInit(void)
FrameInfo.Parameters = NULL;
FrameInfo.ParamLen = 0;
FrameInfo.Addressed = false;
FrameInfo.Selected = false;
}
void TITagitstandardAppReset(void)
@@ -43,6 +44,7 @@ void TITagitstandardAppReset(void)
FrameInfo.Parameters = NULL;
FrameInfo.ParamLen = 0;
FrameInfo.Addressed = false;
FrameInfo.Selected = false;
}