magicrfid 2.0.0.0
magicrfid.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef MAGICRFID_H
29#define MAGICRFID_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
35#include "drv_digital_out.h"
36#include "drv_digital_in.h"
37#include "drv_uart.h"
38
60#define MAGICRFID_OPCODE_VERSION 0x03
61#define MAGICRFID_OPCODE_SET_BAUD_RATE 0x06
62#define MAGICRFID_OPCODE_READ_TAG_ID_SINGLE 0x21
63#define MAGICRFID_OPCODE_READ_TAG_ID_MULTIPLE 0x22
64#define MAGICRFID_OPCODE_WRITE_TAG_ID 0x23
65#define MAGICRFID_OPCODE_WRITE_TAG_DATA 0x24
66#define MAGICRFID_OPCODE_KILL_TAG 0x26
67#define MAGICRFID_OPCODE_READ_TAG_DATA 0x28
68#define MAGICRFID_OPCODE_CLEAR_TAG_ID_BUFFER 0x2A
69#define MAGICRFID_OPCODE_MULTI_PROTOCOL_TAG_OP 0x2F
70#define MAGICRFID_OPCODE_GET_READ_TX_POWER 0x62
71#define MAGICRFID_OPCODE_GET_WRITE_TX_POWER 0x64
72#define MAGICRFID_OPCODE_GET_POWER_MODE 0x68
73#define MAGICRFID_OPCODE_GET_READER_OPTIONAL_PARAMS 0x6A
74#define MAGICRFID_OPCODE_GET_PROTOCOL_PARAM 0x6B
75#define MAGICRFID_OPCODE_SET_ANTENNA_PORT 0x91
76#define MAGICRFID_OPCODE_SET_TAG_PROTOCOL 0x93
77#define MAGICRFID_OPCODE_SET_READ_TX_POWER 0x92
78#define MAGICRFID_OPCODE_SET_WRITE_TX_POWER 0x94
79#define MAGICRFID_OPCODE_SET_REGION 0x97
80#define MAGICRFID_OPCODE_SET_READER_OPTIONAL_PARAMS 0x9A
81#define MAGICRFID_OPCODE_SET_PROTOCOL_PARAM 0x9B
82
83#define MAGICRFID_REGION_INDIA 0x04
84#define MAGICRFID_REGION_JAPAN 0x05
85#define MAGICRFID_REGION_CHINA 0x06
86#define MAGICRFID_REGION_EUROPE 0x08
87#define MAGICRFID_REGION_KOREA 0x09
88#define MAGICRFID_REGION_AUSTRALIA 0x0B
89#define MAGICRFID_REGION_NEWZEALAND 0x0C
90#define MAGICRFID_REGION_NORTHAMERICA 0x0D
91#define MAGICRFID_REGION_OPEN 0xFF
92
93#define MAGICRFID_TAG_PROTOCOL_NONE 0x00
94#define MAGICRFID_TAG_PROTOCOL_ISO180006B 0x03
95#define MAGICRFID_TAG_PROTOCOL_GEN2 0x05
96#define MAGICRFID_TAG_PROTOCOL_ISO180006B_UCODE 0x06
97#define MAGICRFID_TAG_PROTOCOL_IPX64 0x07
98#define MAGICRFID_TAG_PROTOCOL_IPX256 0x08
99#define MAGICRFID_TAG_PROTOCOL_ATA 0x1D
100
101#define MAGICRFID_COMMAND_TIME_OUT 2000
102
103#define MAGICRFID_NORMAL_DELAY_TIME 50
104#define MAGICRFID_LONG_DELAY_TIME 100
105
106#define MAGICRFID_UNIVERSAL_HEADER 0xFF
107
113#define DRV_BUFFER_SIZE 200
114 // magicrfid_cmd
116
131#define MAGICRFID_MAP_MIKROBUS( cfg, mikrobus ) \
132 cfg.tx_pin = MIKROBUS( mikrobus, MIKROBUS_TX ); \
133 cfg.rx_pin = MIKROBUS( mikrobus, MIKROBUS_RX ); \
134 cfg.en = MIKROBUS( mikrobus, MIKROBUS_CS )
135 // magicrfid_map // magicrfid
138
143typedef struct
144{
145 // Output pins
146 digital_out_t en;
148 // Modules
149 uart_t uart;
151 // Buffers
152 char uart_rx_buffer[ DRV_BUFFER_SIZE ];
153 char uart_tx_buffer[ DRV_BUFFER_SIZE ];
156
161typedef struct
162{
163 // Communication gpio pins
164 pin_name_t rx_pin;
165 pin_name_t tx_pin;
167 // Additional gpio pins
168 pin_name_t en;
170 // Static variable
171 uint32_t baud_rate;
173 uart_data_bits_t data_bit;
174 uart_parity_t parity_bit;
175 uart_stop_bits_t stop_bit;
178
183typedef struct
184{
185 uint8_t tag_buf[ 16 ];
186 uint8_t tag_rssi;
189 uint8_t drv_rsp_buff[ 200 ];
192
194
199typedef enum
200{
202 MAGICRFID_ERROR = -1
203
205
222
238
253
266err_t magicrfid_generic_write ( magicrfid_t *ctx, char *data_buf, uint16_t len );
267
280err_t magicrfid_generic_read ( magicrfid_t *ctx, char *data_buf, uint16_t max_len );
281
290
301void magicrfid_send_command ( magicrfid_t *ctx, uint8_t opcode, uint8_t *data_in, uint8_t size );
302
310
320
328
336
344
357void magicrfid_write_data ( magicrfid_t *ctx, uint8_t bank, uint32_t address, uint8_t *data_in,
358 uint8_t len, uint16_t timeout );
359
373void magicrfid_read_data ( magicrfid_t *ctx, uint8_t bank, uint32_t address, uint8_t *data_out,
374 uint8_t tx_len, uint8_t *rx_len, uint16_t time_out );
375
383uint16_t magicrfid_calculate_crc ( uint8_t *data_val, uint8_t len );
384
394void magicrfid_set_tag_protocol ( magicrfid_t *ctx, uint8_t protocol );
395
405void magicrfid_set_region ( magicrfid_t *ctx, uint8_t region );
406
416
426
436void magicrfid_set_baud_rate ( magicrfid_t *ctx, uint32_t baud_rate );
437
447void magicrfid_set_read_power ( magicrfid_t *ctx, uint16_t power_setting );
448
458void magicrfid_set_write_power ( magicrfid_t *ctx, uint16_t power_setting );
459
468void magicrfid_set_reader_configuration ( magicrfid_t *ctx, uint8_t option1, uint8_t option2 );
469
479
480#ifdef __cplusplus
481}
482#endif
483#endif // MAGICRFID_H
484 // magicrfid
486
487// ------------------------------------------------------------------------ END
#define DRV_BUFFER_SIZE
Magic RFID driver buffer size.
Definition: magicrfid.h:113
uint16_t magicrfid_calculate_crc(uint8_t *data_val, uint8_t len)
Magic RFID calculate CRC function.
void magicrfid_process(magicrfid_t *ctx, magicrfid_data_t *data_obj)
General collecting response function.
void magicrfid_set_antenna_search_list(magicrfid_t *ctx)
Magic RFID turn on antena search list function.
void magicrfid_set_antenna_port(magicrfid_t *ctx)
Magic RFID turn on antena port function.
void magicrfid_write_data(magicrfid_t *ctx, uint8_t bank, uint32_t address, uint8_t *data_in, uint8_t len, uint16_t timeout)
Magic RFID data writing function.
void magicrfid_tag_parser(magicrfid_data_t *data_obj)
Gets Tag value after parsing.
int8_t magicrfid_get_tag_rssi(magicrfid_data_t *data_obj)
Get Tag RSSI value.
void magicrfid_set_read_power(magicrfid_t *ctx, uint16_t power_setting)
Magic RFID set read function power.
void magicrfid_default_cfg(magicrfid_t *ctx)
Magic RFID default configuration function.
err_t magicrfid_generic_write(magicrfid_t *ctx, char *data_buf, uint16_t len)
Magic RFID data writing function.
void magicrfid_reset_data(magicrfid_data_t *data_obj)
Reset collecting data and start new measurement.
void magicrfid_set_baud_rate(magicrfid_t *ctx, uint32_t baud_rate)
Magic RFID set baud rate function.
uint8_t magicrfid_get_data_status(magicrfid_data_t *data_obj)
Get current data status.
void magicrfid_set_region(magicrfid_t *ctx, uint8_t region)
Magic RFID set region function.
void magicrfid_set_reader_configuration(magicrfid_t *ctx, uint8_t option1, uint8_t option2)
Magic RFID set reader configuration function.
void magicrfid_start_reading(magicrfid_t *ctx)
Magic RFID enable reading function.
void magicrfid_send_command(magicrfid_t *ctx, uint8_t opcode, uint8_t *data_in, uint8_t size)
Magic RFID send command function.
err_t magicrfid_init(magicrfid_t *ctx, magicrfid_cfg_t *cfg)
Magic RFID initialization function.
void magicrfid_set_tag_protocol(magicrfid_t *ctx, uint8_t protocol)
Magic RFID set protocol function.
void magicrfid_read_data(magicrfid_t *ctx, uint8_t bank, uint32_t address, uint8_t *data_out, uint8_t tx_len, uint8_t *rx_len, uint16_t time_out)
Magic RFID data read function.
void magicrfid_set_write_power(magicrfid_t *ctx, uint16_t power_setting)
Magic RFID set write function power.
err_t magicrfid_generic_read(magicrfid_t *ctx, char *data_buf, uint16_t max_len)
Magic RFID data reading function.
void magicrfid_cfg_setup(magicrfid_cfg_t *cfg)
Magic RFID configuration object setup function.
void magicrfid_device_reset(magicrfid_t *ctx)
Magic RFID device reset function.
magicrfid_return_value_t
Magic RFID Click return value data.
Definition: magicrfid.h:200
@ MAGICRFID_OK
Definition: magicrfid.h:201
@ MAGICRFID_ERROR
Definition: magicrfid.h:202
Magic RFID Click configuration object.
Definition: magicrfid.h:162
uint32_t baud_rate
Definition: magicrfid.h:171
bool uart_blocking
Definition: magicrfid.h:172
uart_data_bits_t data_bit
Definition: magicrfid.h:173
pin_name_t tx_pin
Definition: magicrfid.h:165
pin_name_t rx_pin
Definition: magicrfid.h:164
uart_stop_bits_t stop_bit
Definition: magicrfid.h:175
pin_name_t en
Definition: magicrfid.h:168
uart_parity_t parity_bit
Definition: magicrfid.h:174
Magic RFID Click data object.
Definition: magicrfid.h:184
uint8_t drv_rsp_flag
Definition: magicrfid.h:191
uint8_t drv_buff_cnt
Definition: magicrfid.h:190
uint8_t drv_new_data
Definition: magicrfid.h:187
uint8_t tag_rssi
Definition: magicrfid.h:186
uint8_t drv_start_package
Definition: magicrfid.h:188
Magic RFID Click context object.
Definition: magicrfid.h:144
uart_t uart
Definition: magicrfid.h:149
digital_out_t en
Definition: magicrfid.h:146