<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sdkwiki.wizarpos.com/index.php?action=history&amp;feed=atom&amp;title=Contactless_card_interface.h</id>
	<title>Contactless card interface.h - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sdkwiki.wizarpos.com/index.php?action=history&amp;feed=atom&amp;title=Contactless_card_interface.h"/>
	<link rel="alternate" type="text/html" href="http://sdkwiki.wizarpos.com/index.php?title=Contactless_card_interface.h&amp;action=history"/>
	<updated>2026-04-11T15:07:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>http://sdkwiki.wizarpos.com/index.php?title=Contactless_card_interface.h&amp;diff=127&amp;oldid=prev</id>
		<title>Mahong at 03:25, 9 April 2018</title>
		<link rel="alternate" type="text/html" href="http://sdkwiki.wizarpos.com/index.php?title=Contactless_card_interface.h&amp;diff=127&amp;oldid=prev"/>
		<updated>2018-04-09T03:25:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:25, 9 April 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;syntaxhighlight lang=&quot;c&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   /*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   /*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    * contactless_card_interface.h&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    * contactless_card_interface.h&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l267&quot;&gt;Line 267:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 268:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   #endif /* CONTACTLESS_CARD_INTERFACE_H_ */&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   #endif /* CONTACTLESS_CARD_INTERFACE_H_ */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;/syntaxhighlight &gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key media_wiki-wk:diff::1.12:old-104:rev-127 --&gt;
&lt;/table&gt;</summary>
		<author><name>Mahong</name></author>
	</entry>
	<entry>
		<id>http://sdkwiki.wizarpos.com/index.php?title=Contactless_card_interface.h&amp;diff=104&amp;oldid=prev</id>
		<title>Mahong at 09:05, 8 April 2018</title>
		<link rel="alternate" type="text/html" href="http://sdkwiki.wizarpos.com/index.php?title=Contactless_card_interface.h&amp;diff=104&amp;oldid=prev"/>
		<updated>2018-04-08T09:05:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:05, 8 April 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    * contactless_card_interface.h&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    * contactless_card_interface.h&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    *&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    *&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key media_wiki-wk:diff::1.12:old-103:rev-104 --&gt;
&lt;/table&gt;</summary>
		<author><name>Mahong</name></author>
	</entry>
	<entry>
		<id>http://sdkwiki.wizarpos.com/index.php?title=Contactless_card_interface.h&amp;diff=103&amp;oldid=prev</id>
		<title>Mahong: Created page with &quot;/*    * contactless_card_interface.h    *    *  Created on: 2012-7-11    *      Author: yaomaobiao    */      #ifndef CONTACTLESS_CARD_INTERFACE_H_   #define CONTACTLESS_CARD_...&quot;</title>
		<link rel="alternate" type="text/html" href="http://sdkwiki.wizarpos.com/index.php?title=Contactless_card_interface.h&amp;diff=103&amp;oldid=prev"/>
		<updated>2018-04-08T09:05:17Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;* contactless_card_interface.h    *    *  Created on: 2012-7-11    *      Author: yaomaobiao: &lt;/span&gt;      #ifndef CONTACTLESS_CARD_INTERFACE_H_   #define CONTACTLESS_CARD_...&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/*&lt;br /&gt;
   * contactless_card_interface.h&lt;br /&gt;
   *&lt;br /&gt;
   *  Created on: 2012-7-11&lt;br /&gt;
   *      Author: yaomaobiao&lt;br /&gt;
   */&lt;br /&gt;
  &lt;br /&gt;
  #ifndef CONTACTLESS_CARD_INTERFACE_H_&lt;br /&gt;
  #define CONTACTLESS_CARD_INTERFACE_H_&lt;br /&gt;
  &lt;br /&gt;
  #ifdef __cplusplus&lt;br /&gt;
  extern &amp;quot;C&amp;quot;&lt;br /&gt;
  {&lt;br /&gt;
  #endif&lt;br /&gt;
  &lt;br /&gt;
  #define CONTACTLESS_CARD_MODE_AUTO		0&lt;br /&gt;
  #define CONTACTLESS_CARD_MODE_TYPE_A	1&lt;br /&gt;
  #define CONTACTLESS_CARD_MODE_TYPE_B	2&lt;br /&gt;
  #define CONTACTLESS_CARD_MODE_TYPE_C	3&lt;br /&gt;
  &lt;br /&gt;
  #define CONTACTLESS_CARD_EVENT_FOUND_CARD		0&lt;br /&gt;
  #define CONTACTLESS_CARD_EVENT_TIME_OUT			1&lt;br /&gt;
  #define CONTACTLESS_CARD_EVENT_COMM_ERROR		2&lt;br /&gt;
  #define CONTACTLESS_CARD_EVENT_USER_CANCEL		3&lt;br /&gt;
  /*&lt;br /&gt;
   * this is an inner event, user will never receive this event.&lt;br /&gt;
   */&lt;br /&gt;
  #define CONTACTLESS_CARD_EVENT_NO_CARD			0xFF&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * When we found a card, the event data is ATR.&lt;br /&gt;
   */&lt;br /&gt;
  typedef void (*CONTACTLESS_CARD_NOTIFIER)(void* pUserData, int nEvent, unsigned char* pEventData, int nDataLength);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * Initialize the contactless card reader&lt;br /&gt;
   * @param[in] : CONTACTLESS_CARD_NOTIFIER fNotifier : it is called when some events happen.&lt;br /&gt;
   * @param[in] : void* pUserData : user data, it is the first parameter of call back function&lt;br /&gt;
   * @param[out] : int* pErrorCode : error code if return value is equal to zero&lt;br /&gt;
   * return value : == 0, error&lt;br /&gt;
   * 				  != 0 , correct handle&lt;br /&gt;
   */&lt;br /&gt;
  typedef void* (*contactless_card_open)(CONTACTLESS_CARD_NOTIFIER fNotifier, void* pUserData, int* pErrorCode);&lt;br /&gt;
  /*&lt;br /&gt;
   * Close the contactless card reader&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * return vlaue : &amp;gt;= 0, success&lt;br /&gt;
   * 				  &amp;lt; 0, error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_close)(int nHandle);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * Start searching the contactless card&lt;br /&gt;
   * If you set the nCardMode is auto, reader will try to activate card in type A, type B and type successively;&lt;br /&gt;
   * If you set the nCardMode is type A, type B, or type C, reader only try to activate card in the specified way.&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : int nCardMode : possible value :&lt;br /&gt;
   * 								CONTACTLESS_CARD_MODE_AUTO&lt;br /&gt;
   *								CONTACTLESS_CARD_MODE_TYPE_A&lt;br /&gt;
   *								CONTACTLESS_CARD_MODE_TYPE_B&lt;br /&gt;
   *								CONTACTLESS_CARD_MODE_TYPE_C&lt;br /&gt;
   * @param[in] : int nFlagSearchAll : 0 : signal user if we find one card in the field&lt;br /&gt;
   * 									 1 : signal user only we find all card in the field&lt;br /&gt;
   * @param[in] : nTimeout_MS : time out in milliseconds.&lt;br /&gt;
   * 							  if nTimeout_MS is less then zero, the searching process is infinite.&lt;br /&gt;
   * 							  You can terminate it using the function of contactless_card_search_target_end.&lt;br /&gt;
   * return value : &amp;gt;= 0, success in starting the process.&lt;br /&gt;
   * 				  &amp;lt; 0 , error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_search_target_begin)(int nHandle, int nCardMode, int nFlagSearchAll, int nTimeout_MS);&lt;br /&gt;
  /*&lt;br /&gt;
   * Stop the process of searching card.&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_search_target_end)(int nHandle);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * Attach the target before transmitting apdu command&lt;br /&gt;
   * In this process, the target(card) is activated and return ATR&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : unsigned char* pATRBuffer : ATR buffer, if you set it null, you can not get the data.&lt;br /&gt;
   * @param[in] : unsigned int nATRBufferLength : length of ATR buffer.&lt;br /&gt;
   * return value : &amp;gt;= 0, success, length of ATR.&lt;br /&gt;
   * 				  &amp;lt; 0 , error code&lt;br /&gt;
   */&lt;br /&gt;
  &lt;br /&gt;
  typedef int (*contactless_card_attach_target)(int nHandle, unsigned char* pATRBuffer, unsigned int nATRBufferLength);&lt;br /&gt;
  /*&lt;br /&gt;
   * Detach the target. If you want to send APDU again, you should attach it.&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * return value : &amp;gt;= 0, success, length of ATR.&lt;br /&gt;
   * 				  &amp;lt; 0 , error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_detach_target)(int nHandle);&lt;br /&gt;
  /*&lt;br /&gt;
   * Transmit APDU command and get the response&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in]		: unsigned char* pAPDU : command of APDU&lt;br /&gt;
   * @param[in]		: unsigned int nAPDULength : length of command of APDU&lt;br /&gt;
   * @param[out]		: unsigned char* pResponse : response of command of APDU&lt;br /&gt;
   * @param[in][out]	: unsigned int* pResponseLength : [in], buffer length of response&lt;br /&gt;
   * 													  [out], length of response&lt;br /&gt;
   * return value : &amp;gt;= 0, success&lt;br /&gt;
   * 				  &amp;lt; 0 , error code&lt;br /&gt;
   */&lt;br /&gt;
  &lt;br /&gt;
  typedef int (*contactless_card_transmit)(int nHandle, unsigned char* pAPDU, unsigned int nAPDULength, unsigned char* pResponse, unsigned int *pResponseLength);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * Send control command.&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : unsigned int nCmdID : id of command&lt;br /&gt;
   * @param[in][out] : unsigned char* pCmdData : data associated with command&lt;br /&gt;
   * 					[in] : data associated with command, if no data, you can set it NULL&lt;br /&gt;
   * 					[out]: response data&lt;br /&gt;
   *&lt;br /&gt;
   * @param[in] : unsigned int nDataLength : data length of command&lt;br /&gt;
   * return value : &amp;gt;= 0, success, response data length if any.&lt;br /&gt;
   * 				  &amp;lt; 0 , error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_send_control_command)(int nHandle, unsigned int nCmdID, unsigned char* pCmdData, unsigned int nDataLength);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * Verify pin&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : unsigned int nSectorIndex : sector index&lt;br /&gt;
   * @param[in] : unsigned int nPinType : 0 : A type&lt;br /&gt;
   * 										1 : B type&lt;br /&gt;
   * @param[in] : unsigned char* strPin : password of this pin&lt;br /&gt;
   * @param[in] : unsigned int nPinLength : length of password&lt;br /&gt;
   * return value : &amp;gt;= 0 : success&lt;br /&gt;
   * 				  &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_mc_verify_pin)(int nHandle, unsigned int nSectorIndex, unsigned int nPinType, unsigned char* strPin, unsigned int nPinLength);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * Read data&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : unsigned int nSectorIndex : sector index&lt;br /&gt;
   * @param[in] : unsigned int nBlockIndex : block index&lt;br /&gt;
   * @param[out] : unsigned char* pDataBuffer : data buffer&lt;br /&gt;
   * @param[in] : unsigned int nDataBufferLength : buffer length&lt;br /&gt;
   * return value : &amp;gt;= 0 : data length&lt;br /&gt;
   * 				  &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_mc_read)(int nHandle, unsigned int nSectorIndex, unsigned int nBlockIndex, unsigned char* pDataBuffer, unsigned int nDataBufferLength);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * Write data&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : unsigned int nSectorIndex : sector index&lt;br /&gt;
   * @param[in] : unsigned int nBlockIndex : block index&lt;br /&gt;
   * @param[in] : unsigned char* pData : data&lt;br /&gt;
   * @param[in] : unsigned int nDataLength : data length&lt;br /&gt;
   * return value : &amp;gt;= 0 : success&lt;br /&gt;
   *                &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  &lt;br /&gt;
  typedef int (*contactless_card_mc_write)(int nHandle, unsigned int nSectorIndex, unsigned int nBlockIndex, unsigned char* pData, unsigned int nDataLength);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[out] : unsigned int* pHasMoreCards :&lt;br /&gt;
   *                              0 : only one PICC in the field&lt;br /&gt;
   *                              0x0A : more cards in the field(type A)&lt;br /&gt;
   *                              0x0B : more cards in the field(type B)&lt;br /&gt;
   *                              0xAB : more cards in the field(type A and type B)&lt;br /&gt;
             @param[out] : unsigned int * pCardType :&lt;br /&gt;
                                          CONTACTLESS_CARD_TYPE_A_CPU             0x0000&lt;br /&gt;
                                          CONTACTLESS_CARD_TYPE_B_CPU             0x0100&lt;br /&gt;
                                          CONTACTLESS_CARD_TYPE_A_CLASSIC_MINI    0x0001&lt;br /&gt;
                                          CONTACTLESS_CARD_TYPE_A_CLASSIC_1K      0x0002&lt;br /&gt;
                                          CONTACTLESS_CARD_TYPE_A_CLASSIC_4K      0x0003&lt;br /&gt;
                                          CONTACTLESS_CARD_TYPE_A_UL_64           0x0004&lt;br /&gt;
                                          CONTACTLESS_CARD_TYPE_A_UL_192          0x0005&lt;br /&gt;
                                          CONTACTLESS_CARD_TYPE_A_MP_2K_SL1       0x0006&lt;br /&gt;
                                          CONTACTLESS_CARD_TYPE_A_MP_4K_SL1       0x0007&lt;br /&gt;
                                          CONTACTLESS_CARD_TYPE_A_MP_2K_SL2       0x0008&lt;br /&gt;
                                          CONTACTLESS_CARD_TYPE_A_MP_4K_SL2       0x0009&lt;br /&gt;
                                          CONTACTLESS_CARD_UNKNOWN                0x00FF&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_query_info)(int nHandle, int* pHasMoreCards, int* pCardType);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * Read value from a block&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : unsigned int nSectorIndex : sector index&lt;br /&gt;
   * @param[in] : unsigned int nBlockIndex : block index&lt;br /&gt;
   * @param[out] : unsigned char* pValue : buffer for saving value. LSB, 4bytes&lt;br /&gt;
   * @param[in] : unsigned int nValueBufLength : must be greater than 4&lt;br /&gt;
   * @param[out] : unsigned char* pAddrData : one byte, for saving a user data&lt;br /&gt;
   *&lt;br /&gt;
   * return value : &amp;gt;= 0 : success&lt;br /&gt;
   *                &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_mc_read_value)(int nHandle, unsigned int nSectorIndex, unsigned int nBlockIndex, unsigned char* pValue, unsigned int nValueBufLength, unsigned char* pAddrData);&lt;br /&gt;
  /*&lt;br /&gt;
   * Write value to a block&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : unsigned int nSectorIndex : sector index&lt;br /&gt;
   * @param[in] : unsigned int nBlockIndex : block index&lt;br /&gt;
   * @param[in] : unsigned char* pValue : data for saving value. LSB, 4bytes&lt;br /&gt;
   * @param[in] : unsigned int nValueBufLength : must be 4&lt;br /&gt;
   * @param[in] : unsigned char* pAddrData : one byte, for saving a user data&lt;br /&gt;
   *&lt;br /&gt;
   * return value : &amp;gt;= 0 : success&lt;br /&gt;
   *                &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_mc_write_value)(int nHandle, unsigned int nSectorIndex, unsigned int nBlockIndex, unsigned char* pValue, unsigned int nValueLength, unsigned char bAddrData);&lt;br /&gt;
  /*&lt;br /&gt;
   * Increment value to a block, using it with the API : hal_contactless_card_mc_restore and hal_contactless_card_mc_transfer&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : unsigned int nSectorIndex : sector index&lt;br /&gt;
   * @param[in] : unsigned int nBlockIndex : block index&lt;br /&gt;
   * @param[in] : unsigned char* pValue : buffer for saving value. LSB, 4bytes&lt;br /&gt;
   * @param[in] : unsigned int nValueBufLength : must be greater than 4&lt;br /&gt;
   *&lt;br /&gt;
   * return value : &amp;gt;= 0 : success&lt;br /&gt;
   *                &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_mc_increment)(int nHandle, unsigned int nSectorIndex, unsigned int nBlockIndex, unsigned char* pValue, unsigned int nValueLength);&lt;br /&gt;
  /*&lt;br /&gt;
   * Decrement value to a block, using it with the API : hal_contactless_card_mc_restore and hal_contactless_card_mc_transfer&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : unsigned int nSectorIndex : sector index&lt;br /&gt;
   * @param[in] : unsigned int nBlockIndex : block index&lt;br /&gt;
   * @param[in] : unsigned char* pValue : buffer for saving value. LSB, 4bytes&lt;br /&gt;
   * @param[in] : unsigned int nValueBufLength : must be greater than 4&lt;br /&gt;
   *&lt;br /&gt;
   * return value : &amp;gt;= 0 : success&lt;br /&gt;
   *                &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_mc_decrement)(int nHandle, unsigned int nSectorIndex, unsigned int nBlockIndex, unsigned char* pValue, unsigned int nValueLength);&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
   * Save the value to the block from temporary buffer&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : unsigned int nSectorIndex : sector index&lt;br /&gt;
   * @param[in] : unsigned int nBlockIndex : block index&lt;br /&gt;
   *&lt;br /&gt;
   * return value : &amp;gt;= 0 : success&lt;br /&gt;
   *                &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_mc_transfer)(int nHandle, unsigned int nSectorIndex, unsigned int nBlockIndex);&lt;br /&gt;
  /*&lt;br /&gt;
   * Read the value to the temporary from the block&lt;br /&gt;
   * @param[in] : int nHandle : handle of this card reader&lt;br /&gt;
   * @param[in] : unsigned int nSectorIndex : sector index&lt;br /&gt;
   * @param[in] : unsigned int nBlockIndex : block index&lt;br /&gt;
   *&lt;br /&gt;
   * return value : &amp;gt;= 0 : success&lt;br /&gt;
   *                &amp;lt; 0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_mc_restore)(int nHandle,unsigned int nSectorIndex, unsigned int nBlockIndex);&lt;br /&gt;
  &lt;br /&gt;
  /**&lt;br /&gt;
   * Check whether this is a card on the rfcard reader&lt;br /&gt;
   * return value : == 0 : no card&lt;br /&gt;
   * 				  &amp;gt;0 : find a card&lt;br /&gt;
   * 				  &amp;lt;0 : error code&lt;br /&gt;
   */&lt;br /&gt;
  typedef int (*contactless_card_final_touch_card)(int nHandle);&lt;br /&gt;
  &lt;br /&gt;
  #ifdef __cplusplus&lt;br /&gt;
  }&lt;br /&gt;
  #endif&lt;br /&gt;
  &lt;br /&gt;
  #endif /* CONTACTLESS_CARD_INTERFACE_H_ */&lt;/div&gt;</summary>
		<author><name>Mahong</name></author>
	</entry>
</feed>