aboutsummaryrefslogtreecommitdiffstats
path: root/csocketevents.c
diff options
context:
space:
mode:
Diffstat (limited to 'csocketevents.c')
-rw-r--r--csocketevents.c81
1 files changed, 57 insertions, 24 deletions
diff --git a/csocketevents.c b/csocketevents.c
index e1e32e1..85b840b 100644
--- a/csocketevents.c
+++ b/csocketevents.c
@@ -886,6 +886,17 @@ PWC_SETKEYS(LED)
INC_KEYCOUNT(currentLimitEcho, -1)
phid->currentLimitEcho = value;
}
+ else if(KEYNAME("CurrentLimitIndexed"))
+ {
+ if(CHKINDEX(led.numLEDs, LED_MAXLEDS))
+ {
+ GET_DOUBLE_VAL;
+ INC_KEYCOUNT(LED_CurrentLimit[index], PUNI_DBL)
+ phid->LED_CurrentLimit[index] = value;
+ }
+ else
+ ret = EPHIDGET_OUTOFBOUNDS;
+ }
else{
PWC_BAD_SETTYPE(LED);
}
@@ -1181,46 +1192,68 @@ PWC_SETKEYS(RFID)
}
else if(KEYNAME("LastTag"))
{
- unsigned char tagData[5];
+ char *endPtr;
+ CPhidgetRFID_Tag tag = {0};
+ tag.protocol = (CPhidgetRFID_Protocol)strtol(state, &endPtr, 10);
+ strncpy(tag.tagString, endPtr+1, 25);
+
INC_KEYCOUNT(lastTagValid, PUNI_BOOL)
- phid->lastTagValid = PTRUE;
+ if(tag.protocol != 0)
+ phid->lastTagValid = PTRUE;
+ else
+ phid->lastTagValid = PFALSE;
- tagData[0] = (hexval(state[0])<<4)|hexval(state[1]);
- tagData[1] = (hexval(state[2])<<4)|hexval(state[3]);
- tagData[2] = (hexval(state[4])<<4)|hexval(state[5]);
- tagData[3] = (hexval(state[6])<<4)|hexval(state[7]);
- tagData[4] = (hexval(state[8])<<4)|hexval(state[9]);
+ if(tag.protocol == PHIDGET_RFID_PROTOCOL_EM4100)
+ {
+ tag.tagData[0] = (hexval(tag.tagString[0])<<4)|hexval(tag.tagString[1]);
+ tag.tagData[1] = (hexval(tag.tagString[2])<<4)|hexval(tag.tagString[3]);
+ tag.tagData[2] = (hexval(tag.tagString[4])<<4)|hexval(tag.tagString[5]);
+ tag.tagData[3] = (hexval(tag.tagString[6])<<4)|hexval(tag.tagString[7]);
+ tag.tagData[4] = (hexval(tag.tagString[8])<<4)|hexval(tag.tagString[9]);
+ }
- memcpy(phid->lastTag, tagData, 5);
+ phid->lastTag = tag;
}
- else if(KEYNAME("Tag"))
+ else if(KEYNAME("Tag2"))
{
- unsigned char tagData[5];
- //always increment on tagPresent==PUNI_BOOL before setting it!
+ char *endPtr;
+ CPhidgetRFID_Tag tag = {0};
+ tag.protocol = (CPhidgetRFID_Protocol)strtol(state, &endPtr, 10);
+ strncpy(tag.tagString, endPtr+1, 25);
+
INC_KEYCOUNT(tagPresent, PUNI_BOOL)
- phid->tagPresent = 1;
+ phid->tagPresent = PTRUE;
- tagData[0] = (hexval(state[0])<<4)|hexval(state[1]);
- tagData[1] = (hexval(state[2])<<4)|hexval(state[3]);
- tagData[2] = (hexval(state[4])<<4)|hexval(state[5]);
- tagData[3] = (hexval(state[6])<<4)|hexval(state[7]);
- tagData[4] = (hexval(state[8])<<4)|hexval(state[9]);
+ INC_KEYCOUNT(lastTagValid, PUNI_BOOL)
+ phid->lastTagValid = PTRUE;
- FIRE(Tag, tagData);
+ if(tag.protocol == PHIDGET_RFID_PROTOCOL_EM4100)
+ {
+ tag.tagData[0] = (hexval(tag.tagString[0])<<4)|hexval(tag.tagString[1]);
+ tag.tagData[1] = (hexval(tag.tagString[2])<<4)|hexval(tag.tagString[3]);
+ tag.tagData[2] = (hexval(tag.tagString[4])<<4)|hexval(tag.tagString[5]);
+ tag.tagData[3] = (hexval(tag.tagString[6])<<4)|hexval(tag.tagString[7]);
+ tag.tagData[4] = (hexval(tag.tagString[8])<<4)|hexval(tag.tagString[9]);
+ FIRE(Tag, tag.tagData);
+ }
+
+ FIRE(Tag2, tag.tagString, tag.protocol);
- memcpy(phid->lastTag, tagData, 5);
+ phid->lastTag = tag;
}
- else if(KEYNAME("TagLoss"))
+ else if(KEYNAME("TagLoss2"))
{
- //always increment on tagPresent==PUNI_BOOL before setting it!
INC_KEYCOUNT(tagPresent, PUNI_BOOL)
- phid->tagPresent = 0;
- FIRE(TagLost, phid->lastTag);
+ phid->tagPresent = PFALSE;
+
+ if(phid->lastTag.protocol == PHIDGET_RFID_PROTOCOL_EM4100)
+ FIRE(TagLost, phid->lastTag.tagData);
+ FIRE(TagLost2, phid->lastTag.tagString, phid->lastTag.protocol);
}
else if(KEYNAME("TagState"))
{
GET_INT_VAL;
- //always increment on tagPresent==PUNI_BOOL before setting it!
+
INC_KEYCOUNT(tagPresent, PUNI_BOOL)
phid->tagPresent = value;
}