3
3
#include " PN532_HSU.h"
4
4
#include " PN532_debug.h"
5
5
6
+
7
+
8
+ #ifdef ESP32
9
+
10
+ PN532_HSU::PN532_HSU (HardwareSerial &serial, int8_t rxPin, int8_t txPin)
11
+ {
12
+ hsu_serial = &serial;
13
+ command = 0 ;
14
+ _rxPin = rxPin;
15
+ _txPin = txPin;
16
+ }
17
+ #else
18
+ #ifdef USE_SOFT_SERIAL_PIN
19
+ PN532_HSU::PN532_HSU (SoftwareSerial &serial){
20
+ hsu_serial = &serial;
21
+ command = 0 ;
22
+ }
23
+ #else
6
24
PN532_HSU::PN532_HSU (HardwareSerial &serial)
7
25
{
8
- _serial = &serial;
26
+ hsu_serial = &serial;
9
27
command = 0 ;
10
28
}
29
+ #endif
30
+ #endif
11
31
12
32
void PN532_HSU::begin ()
13
33
{
14
- _serial->begin (115200 );
34
+
35
+ #ifdef ESP32
36
+ get_serial (hsu_serial)->begin (115200 , SERIAL_8N1, _rxPin, _txPin);
37
+ #else
38
+ #ifdef USE_SOFT_SERIAL_PIN
39
+ get_serial (hsu_serial)->begin (115200 );
40
+ #else
41
+ get_serial (hsu_serial)->begin (115200 );
42
+ #endif
43
+ #endif
15
44
}
16
45
17
46
void PN532_HSU::wakeup ()
18
47
{
19
- _serial ->write (0x55 );
20
- _serial ->write (0x55 );
21
- _serial ->write (uint8_t (0x00 ));
22
- _serial ->write (uint8_t (0x00 ));
23
- _serial ->write (uint8_t (0x00 ));
48
+ get_serial (hsu_serial) ->write (0x55 );
49
+ get_serial (hsu_serial) ->write (0x55 );
50
+ get_serial (hsu_serial) ->write (uint8_t (0x00 ));
51
+ get_serial (hsu_serial) ->write (uint8_t (0x00 ));
52
+ get_serial (hsu_serial) ->write (uint8_t (0x00 ));
24
53
25
54
/* * dump serial buffer */
26
- if (_serial ->available ())
55
+ if (get_serial (hsu_serial) ->available ())
27
56
{
28
57
DMSG (" Dump serial buffer: " );
29
58
}
30
- while (_serial ->available ())
59
+ while (get_serial (hsu_serial) ->available ())
31
60
{
32
- uint8_t ret = _serial ->read ();
61
+ uint8_t ret = get_serial (hsu_serial) ->read ();
33
62
DMSG_HEX (ret);
34
63
}
35
64
}
@@ -38,40 +67,40 @@ int8_t PN532_HSU::writeCommand(const uint8_t *header, uint8_t hlen, const uint8_
38
67
{
39
68
40
69
/* * dump serial buffer */
41
- if (_serial ->available ())
70
+ if (get_serial (hsu_serial) ->available ())
42
71
{
43
72
DMSG (" Dump serial buffer: " );
44
73
}
45
- while (_serial ->available ())
74
+ while (get_serial (hsu_serial) ->available ())
46
75
{
47
- uint8_t ret = _serial ->read ();
76
+ uint8_t ret = get_serial (hsu_serial) ->read ();
48
77
DMSG_HEX (ret);
49
78
}
50
79
51
80
command = header[0 ];
52
81
53
- _serial ->write (uint8_t (PN532_PREAMBLE));
54
- _serial ->write (uint8_t (PN532_STARTCODE1));
55
- _serial ->write (uint8_t (PN532_STARTCODE2));
82
+ get_serial (hsu_serial) ->write (uint8_t (PN532_PREAMBLE));
83
+ get_serial (hsu_serial) ->write (uint8_t (PN532_STARTCODE1));
84
+ get_serial (hsu_serial) ->write (uint8_t (PN532_STARTCODE2));
56
85
57
86
uint8_t length = hlen + blen + 1 ; // length of data field: TFI + DATA
58
- _serial ->write (length);
59
- _serial ->write (~length + 1 ); // checksum of length
87
+ get_serial (hsu_serial) ->write (length);
88
+ get_serial (hsu_serial) ->write (~length + 1 ); // checksum of length
60
89
61
- _serial ->write (PN532_HOSTTOPN532);
90
+ get_serial (hsu_serial) ->write (PN532_HOSTTOPN532);
62
91
uint8_t sum = PN532_HOSTTOPN532; // sum of TFI + DATA
63
92
64
93
DMSG (" \n Write: " );
65
94
66
- _serial ->write (header, hlen);
95
+ get_serial (hsu_serial) ->write (header, hlen);
67
96
for (uint8_t i = 0 ; i < hlen; i++)
68
97
{
69
98
sum += header[i];
70
99
71
100
DMSG_HEX (header[i]);
72
101
}
73
102
74
- _serial ->write (body, blen);
103
+ get_serial (hsu_serial) ->write (body, blen);
75
104
for (uint8_t i = 0 ; i < blen; i++)
76
105
{
77
106
sum += body[i];
@@ -80,8 +109,8 @@ int8_t PN532_HSU::writeCommand(const uint8_t *header, uint8_t hlen, const uint8_
80
109
}
81
110
82
111
uint8_t checksum = ~sum + 1 ; // checksum of TFI + DATA
83
- _serial ->write (checksum);
84
- _serial ->write (uint8_t (PN532_POSTAMBLE));
112
+ get_serial (hsu_serial) ->write (checksum);
113
+ get_serial (hsu_serial) ->write (uint8_t (PN532_POSTAMBLE));
85
114
86
115
return readAckFrame ();
87
116
}
@@ -195,7 +224,7 @@ int8_t PN532_HSU::receive(uint8_t *buf, int len, uint16_t timeout)
195
224
start_millis = millis ();
196
225
do
197
226
{
198
- ret = _serial ->read ();
227
+ ret = get_serial (hsu_serial) ->read ();
199
228
if (ret >= 0 )
200
229
{
201
230
break ;
0 commit comments