Skip to content

Commit 7050176

Browse files
committed
Release 1.2.1 - Add TX Mode to API 1.0.4
* Add TX mode to API * Fine tune TX data interval now that setting is in microseconds(via API only) * TX multiple packets(limited by devices RAM) * TX directly from log file view
1 parent c17c795 commit 7050176

File tree

4 files changed

+47
-20
lines changed

4 files changed

+47
-20
lines changed

Source Code/esprfidtool/api.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
void apiTX(String apiBIN, int apitxdelayus, int apitxdelayms, int wait) {
1+
void apiTX(String apiBIN, int apipulsewidth, int apidatainterval, int wait) {
22
wg.pause();
33
digitalWrite(DATA0, HIGH);
44
pinMode(DATA0,OUTPUT);
@@ -7,22 +7,21 @@ void apiTX(String apiBIN, int apitxdelayus, int apitxdelayms, int wait) {
77
for (int i=0; i<=apiBIN.length(); i++) {
88
if (apiBIN.charAt(i) == '0') {
99
digitalWrite(DATA0, LOW);
10-
delayMicroseconds(apitxdelayus);
10+
delayMicroseconds(apipulsewidth);
1111
digitalWrite(DATA0, HIGH);
1212
}
1313
else if (apiBIN.charAt(i) == '1') {
1414
digitalWrite(DATA1, LOW);
15-
delayMicroseconds(apitxdelayus);
15+
delayMicroseconds(apipulsewidth);
1616
digitalWrite(DATA1, HIGH);
1717
}
1818
if (apiBIN.charAt(i) == ',') {
1919
delayMicroseconds(wait);
2020
}
2121
else {
22-
delay(apitxdelayms);
22+
delayMicroseconds(apidatainterval);
2323
}
2424
}
25-
yield();
2625
apiBIN="";
2726
pinMode(DATA0, INPUT);
2827
pinMode(DATA1, INPUT);

Source Code/esprfidtool/api_server.h

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
server.on("/api/tx/bin", [](){
22
String api_binary="";
3-
int api_txdelayus=txdelayus;
4-
int api_txdelayms=txdelayms;
3+
int api_pulsewidth=txdelayus;
4+
int api_datainterval=(txdelayms*1000);
55
int prettify=0;
66
int api_wait=100000;
77
if (server.hasArg("binary")) {
88
api_binary=(server.arg("binary"));
99
}
1010
if (server.hasArg("pulsewidth")) {
11-
api_txdelayus=(server.arg("pulsewidth").toInt());
11+
api_pulsewidth=(server.arg("pulsewidth").toInt());
1212
}
1313
if (server.hasArg("interval")) {
14-
api_txdelayms=(server.arg("interval").toInt());
14+
api_datainterval=(server.arg("interval").toInt());
1515
}
1616
if (server.hasArg("wait")) {
1717
api_wait=(server.arg("wait").toInt());
@@ -29,16 +29,22 @@ server.on("/api/tx/bin", [](){
2929
apitxbin["API"] = APIversion;
3030

3131
JsonObject& apitxbinary = apitxbin.createNestedObject("Transmission");
32-
apitxbinary["Bit Count"]=api_binary.length();
32+
int commacount=0;
33+
for (int commalook=0; commalook<=api_binary.length(); commalook++) {
34+
if (api_binary.charAt(commalook)==',') {
35+
commacount++;
36+
}
37+
}
38+
apitxbinary["Bit Count"]=api_binary.length()-commacount;
3339
apitxbinary["Binary"]=api_binary;
34-
apitxbinary["Wiegand Data Pulse Width"]=String()+api_txdelayus+"us";
35-
apitxbinary["Wiegand Data Interval"]=String()+api_txdelayms+"ms";
40+
apitxbinary["Wiegand Data Pulse Width"]=String()+api_pulsewidth+"us";
41+
apitxbinary["Wiegand Data Interval"]=String()+api_datainterval+"us";
3642
apitxbinary["Delay Between Packets"]=String()+api_wait+"us";
3743

3844
if (api_binary=="") {
3945
server.send(200, "text/html", F(
4046
"Binary to tx not specified.<br>"
41-
"<small>Usage: [server]/api/tx/bin?binary=[binary]&pulsewidth=[delay_us]&interval=[delay_ms]&wait=[delay_us_between_packets]</small><br>"
47+
"<small>Usage: [server]/api/tx/bin?binary=[binary]&pulsewidth=[delay_us]&interval=[delay_us]&wait=[delay_us_between_packets]</small><br>"
4248
"<small>Use commas to separate the binary for transmitting multiple packets(useful for sending multiple keypresses for imitating keypads)</small><br>"
4349
"<small>Example to TX Pin Code 1337# waiting 100,000us between packets(keypresses): /api/tx/bin?binary=11100001,11000011,11000011,10000111,01001011&wait=100000&prettify=1</small><br>"
4450
));
@@ -53,9 +59,9 @@ server.on("/api/tx/bin", [](){
5359
}
5460
server.send(200, "application/json", API_Response);
5561
delay(50);
56-
apiTX(api_binary,api_txdelayus,api_txdelayms,api_wait);
62+
jsonAPIbuffer.clear();
63+
apiTX(api_binary,api_pulsewidth,api_datainterval,api_wait);
5764
}
58-
jsonAPIbuffer.clear();
5965
});
6066

6167
server.on("/api/help", [](){
@@ -75,8 +81,8 @@ server.on("/api/help", [](){
7581
"<b><a href=\"/api/listlogs?prettify=1\">/api/listlogs</a></b><br>"
7682
"<small>Usage: [server]/api/listlogs</small><br>"
7783
"<br>"
78-
"<b><a href=\"/api/tx/bin?binary=0001&pulsewidth=40&interval=2&prettify=1\">/api/tx/bin</a></b><br>"
79-
"<small>Usage: [server]/api/tx/bin?binary=[binary]&pulsewidth=[delay_us]&interval=[delay_ms]&wait=[delay_us_between_packets]</small><br>"
84+
"<b><a href=\"/api/tx/bin?binary=0001&pulsewidth=40&interval=2000&prettify=1\">/api/tx/bin</a></b><br>"
85+
"<small>Usage: [server]/api/tx/bin?binary=[binary]&pulsewidth=[delay_us]&interval=[delay_us]&wait=[delay_us_between_packets]</small><br>"
8086
"<small>Use commas to separate the binary for transmitting multiple packets(useful for sending multiple keypresses for imitating keypads)</small><br>"
8187
"<small>Example to TX Pin Code 1337# waiting 100,000us between packets(keypresses): /api/tx/bin?binary=11100001,11000011,11000011,10000111,01001011&wait=100000&prettify=1</small><br>"
8288
"<br>"

Source Code/esprfidtool/esprfidtool.ino

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1015,7 +1015,29 @@ void ViewLog(){
10151015
File f = SPIFFS.open(payload, "r");
10161016
String webString = f.readString();
10171017
f.close();
1018-
ShowPL = String()+F("<html><head></head><body><a href=\"/\"><- BACK TO INDEX</a><br><br><a href=\"/logs\">List Exfiltrated Data</a> - <a href=\"/experimental\">Experimental TX Mode</a> - <a href=\"/data-convert\">Data Conversion Tools</a><br><br><a href=\"")+payload+"\"><button>Download File</button><a> - <a href=\"/deletelog?payload="+payload+"\"><button>Delete File</button></a><br><br><small>Note: Preambles shown are only a guess based on card length and may not be accurate for every card format.</small><br><pre>"+payload+"\n-----\n"+webString+"</pre></body></html>";
1018+
ShowPL = String()+F(
1019+
"<html><head></head><body>"
1020+
"<a href=\"/\"><- BACK TO INDEX</a><br><br>"
1021+
"<a href=\"/logs\">List Exfiltrated Data</a> - <a href=\"/experimental\">Experimental TX Mode</a> - <a href=\"/data-convert\">Data Conversion Tools</a><br><br>"
1022+
"<FORM action=\"/api/tx/bin\" id=\"api_tx\" method=\"get\" target=\"_blank\">"
1023+
"<small>Binary: </small><INPUT form=\"api_tx\" type=\"text\" name=\"binary\" value=\"\" pattern=\"[01,]{1,}\" required title=\"Allowed characters(0,1,\",\"), must not be empty\" minlength=\"1\" size=\"52\"> "
1024+
"<INPUT form=\"api_tx\" type=\"submit\" value=\"Transmit\"><br>"
1025+
"<small>Pulse Width: </small><INPUT form=\"api_tx\" type=\"number\" name=\"pulsewidth\" value=\"40\" minlength=\"1\" min=\"0\" size=\"8\"><small>us</small> "
1026+
"<small>Data Interval: </small><INPUT form=\"api_tx\" type=\"number\" name=\"interval\" value=\"2000\" minlength=\"1\" min=\"0\" size=\"8\"><small>us</small> "
1027+
"<small>Delay Between Packets: </small><INPUT form=\"api_tx\" type=\"number\" name=\"wait\" value=\"100000\" minlength=\"1\" min=\"0\" size=\"8\"><small>us</small><br>"
1028+
"<INPUT form=\"api_tx\" type=\"hidden\" name=\"prettify\" id=\"prettify\" value=\"1\">"
1029+
"</FORM>"
1030+
"<small>Use commas to separate the binary for transmitting multiple packets(useful for sending multiple keypresses for imitating keypads)</small><br>"
1031+
"<hr>"
1032+
"<a href=\"")+payload+F("\"><button>Download File</button><a><small> - </small><a href=\"/deletelog?payload=")+payload+F("\"><button>Delete File</button></a>"
1033+
"<pre>")
1034+
+payload+
1035+
F("\n"
1036+
"Note: Preambles shown are only a guess based on card length and may not be accurate for every card format.\n"
1037+
"-----\n")
1038+
+webString+
1039+
F("</pre></body></html>")
1040+
;
10191041
webString="";
10201042
server.send(200, "text/html", ShowPL);
10211043
}

Source Code/esprfidtool/version.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
String version = "1.2.0";
2-
String APIversion = "1.0.3";
1+
String version = "1.2.1";
2+
String APIversion = "1.0.4";

0 commit comments

Comments
 (0)