Skip to content

Commit 2ebc128

Browse files
committed
Added reader ID & CRC to JSON output
1 parent 7684e67 commit 2ebc128

File tree

1 file changed

+18
-10
lines changed
  • host/openbeacon-json/src

1 file changed

+18
-10
lines changed

host/openbeacon-json/src/main.c

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,13 @@ microtime (void)
109109

110110

111111
void
112-
print_error(FILE *out, double timestamp, struct sockaddr_in *reader_addr, char *error_msg, uint32_t error_code)
112+
print_error(FILE *out, double timestamp, struct sockaddr_in *reader_addr, uint16_t reader_id, char *error_msg, uint32_t error_code)
113113
{
114114
fprintf(out, "{");
115115

116-
fprintf(out, "\"reader\": {\"ip\":\"%s\",\"t\":%d},",
116+
fprintf(out, "\"reader\": {\"ip\":\"%s\",\"id\":%d,\"t\":%d},",
117117
inet_ntoa(reader_addr->sin_addr),
118+
reader_id,
118119
(uint32_t) timestamp);
119120

120121
fprintf(out, "\"error\": \"%s (%d)\"", error_msg, error_code);
@@ -126,22 +127,29 @@ print_error(FILE *out, double timestamp, struct sockaddr_in *reader_addr, char *
126127

127128

128129
void
129-
print_packet(FILE *out, double timestamp, struct sockaddr_in *reader_addr, const TBeaconNgTracker *track)
130+
print_packet(FILE *out, double timestamp, struct sockaddr_in *reader_addr, uint16_t reader_id, const uint8_t *signature, const TBeaconNgTracker *track)
130131
{
131132
uint32_t t;
133+
int j;
132134
const TBeaconNgSighting *slot;
133135

134136
fprintf(out, "{");
135137

136-
fprintf(out, "\"reader\": {\"ip\":\"%s\",\"t\":%d},",
138+
fprintf(out, "\"reader\": {\"ip\":\"%s\",\"id\":%d,\"t\":%d},",
137139
inet_ntoa(reader_addr->sin_addr),
140+
reader_id,
138141
(uint32_t) timestamp);
139142

140143
fprintf(out, "\"packet\": {\"id\":\"%08X\",\"t\":%d,",
141144
track->uid,
142145
track->epoch
143146
);
144147

148+
fprintf(out, "\"crc\":\"");
149+
for (j=0; j<CONFIG_SIGNATURE_SIZE; j++)
150+
fprintf(out, "%02X", signature[j]);
151+
fprintf(out, "\",");
152+
145153
/* show specific fields */
146154
switch(track->proto)
147155
{
@@ -204,30 +212,30 @@ parse_packet (double timestamp, struct sockaddr_in *reader_addr, const void *dat
204212
pkt = (const TBeaconLogSighting*)data;
205213
if(pkt->hdr.protocol != BEACONLOG_SIGHTING)
206214
{
207-
print_error(stdout, timestamp, reader_addr, "Invalid protocol", pkt->hdr.protocol);
215+
print_error(stdout, timestamp, reader_addr, ntohs(pkt->hdr.reader_id), "Invalid protocol", pkt->hdr.protocol);
208216
//fprintf(stderr, " Invalid protocol [0x%02X]\n\r", pkt->hdr.protocol);
209217
return len;
210218
}
211219

212220
t = ntohs(pkt->hdr.size);
213221
if(ntohs(t != sizeof(TBeaconLogSighting)))
214222
{
215-
print_error(stdout, timestamp, reader_addr, "Invalid packet size", t);
223+
print_error(stdout, timestamp, reader_addr, ntohs(pkt->hdr.reader_id), "Invalid packet size", t);
216224
//fprintf(stderr, " Invalid packet size (%u)\n\r", t);
217225
return len;
218226
}
219227

220228
if(ntohs(pkt->hdr.icrc16) != icrc16(&pkt->hdr.protocol, (sizeof(TBeaconLogSighting)-sizeof(pkt->hdr.icrc16))))
221229
{
222-
print_error(stdout, timestamp, reader_addr, "Invalid packet CRC", 0);
230+
print_error(stdout, timestamp, reader_addr, ntohs(pkt->hdr.reader_id), "Invalid packet CRC", 0);
223231
//fprintf(stderr, " Invalid packet CRC\n\r");
224232
return len;
225233
}
226234

227235
/* decrypt valid packet */
228236
if((t = aes_decr(&pkt->log, &track, sizeof(track), CONFIG_SIGNATURE_SIZE))!=0)
229237
{
230-
print_error(stdout, timestamp, reader_addr, "Packet decryption error", t);
238+
print_error(stdout, timestamp, reader_addr, ntohs(pkt->hdr.reader_id), "Packet decryption error", t);
231239
//fprintf(stderr, " Failed decrypting packet with error [%i]\n\r", t);
232240
return len;
233241
}
@@ -236,13 +244,13 @@ parse_packet (double timestamp, struct sockaddr_in *reader_addr, const void *dat
236244
if(!((track.proto == RFBPROTO_BEACON_NG_SIGHTING)||
237245
(track.proto == RFBPROTO_BEACON_NG_STATUS)))
238246
{
239-
print_error(stdout, timestamp, reader_addr, "Unkown packet protocol", track.proto);
247+
print_error(stdout, timestamp, reader_addr, ntohs(pkt->hdr.reader_id), "Unkown packet protocol", track.proto);
240248
//fprintf(stderr, " Unknown protocol [%i]\n\r", track.proto);
241249
return len;
242250
}
243251

244252
/* show & process latest packet */
245-
print_packet(stdout, timestamp, reader_addr, &track);
253+
print_packet(stdout, timestamp, reader_addr, ntohs(pkt->hdr.reader_id), ((uint8_t *) &pkt->log) + sizeof(track) - CONFIG_SIGNATURE_SIZE, &track);
246254

247255
return sizeof(TBeaconLogSighting);
248256
}

0 commit comments

Comments
 (0)