ModuleReader.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864
  1. #ifndef MODULE_READER
  2. #define MODULE_READER
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. typedef enum
  7. {
  8. MT_OK_ERR = 0,
  9. MT_IO_ERR = 1,
  10. MT_INTERNAL_DEV_ERR = 2,
  11. MT_CMD_FAILED_ERR = 3,
  12. MT_CMD_NO_TAG_ERR = 4,
  13. MT_M5E_FATAL_ERR = 5,
  14. MT_OP_NOT_SUPPORTED = 6,
  15. MT_INVALID_PARA = 7,
  16. MT_INVALID_READER_HANDLE = 8,
  17. MT_HARDWARE_ALERT_ERR_BY_HIGN_RETURN_LOSS = 9,
  18. MT_HARDWARE_ALERT_ERR_BY_TOO_MANY_RESET = 10,
  19. MT_HARDWARE_ALERT_ERR_BY_NO_ANTENNAS = 11,
  20. MT_HARDWARE_ALERT_ERR_BY_HIGH_TEMPERATURE = 12,
  21. MT_HARDWARE_ALERT_ERR_BY_READER_DOWN = 13,
  22. MT_HARDWARE_ALERT_ERR_BY_UNKNOWN_ERR = 14,
  23. M6E_INIT_FAILED = 15,
  24. MT_OP_EXECING = 16,
  25. MT_UNKNOWN_READER_TYPE = 17,
  26. MT_OP_INVALID = 18,
  27. MT_HARDWARE_ALERT_BY_FAILED_RESET_MODLUE = 19,
  28. MT_MAX_ERR_NUM = 20,
  29. MT_TEST_DEV_FAULT_1 = 51,
  30. MT_TEST_DEV_FAULT_2 = 52,
  31. MT_TEST_DEV_FAULT_3 = 53,
  32. MT_TEST_DEV_FAULT_4 = 54,
  33. MT_TEST_DEV_FAULT_5 = 55,
  34. MT_FREQUENT_ERR = 60,
  35. MT_UPDFWFROMSP_OPENFILE_FAILED = 80,
  36. MT_UPDFWFROMSP_FILE_FORMAT_ERR = 81,
  37. MT_JNI_INVALID_PARA = 101,
  38. MT_MAX_INT_NUM = 0x7FFFFFFF,
  39. }READER_ERR;
  40. typedef enum
  41. {
  42. MODOULE_NONE,
  43. MODOULE_R902_M1S,
  44. MODOULE_R902_M2S,
  45. MODOULE_M5E,
  46. MODOULE_M5E_C,
  47. MODOULE_M6E,
  48. MODOULE_PR9000,
  49. MODOULE_M5E_PRC,
  50. MODOULE_M6E_PRC,
  51. MODOULE_M6E_MICRO,
  52. MODOULE_SLR1100,
  53. MODOULE_SLR1200,
  54. MODOULE_SLR1300,
  55. MODOULE_SLR3000,
  56. MODOULE_SLR5100,
  57. MODOULE_SLR5200,
  58. MODOULE_SLR3100,
  59. MODOULE_SLR3200,
  60. MODOULE_SLR5300,
  61. MODOULE_SLR5900,
  62. MODOULE_SLR5800,
  63. MODOULE_SLR6000,
  64. MODOULE_SLR6100,
  65. MODOULE_SIM7100,
  66. MODOULE_SIM7200,
  67. MODOULE_SIM7300,
  68. MODOULE_SIM7400,
  69. MODOULE_SIM7500,
  70. MODOULE_SIM7600,
  71. MODOULE_SIM3100,
  72. MODOULE_SIM3200,
  73. MODOULE_SIM3300,
  74. MODOULE_SIM3400,
  75. MODOULE_SIM3500,
  76. MODOULE_SIM3600,
  77. MODOULE_SIM5100,
  78. MODOULE_SIM5200,
  79. MODOULE_SIM5300,
  80. MODOULE_SIM5400,
  81. MODOULE_SIM5500,
  82. MODOULE_SIM5600,
  83. MODOULE_SIM3110,
  84. }Module_Type;
  85. typedef enum
  86. {
  87. MAINBOARD_NONE,
  88. MAINBOARD_ARM7,
  89. MAINBOARD_SERIAL,
  90. MAINBOARD_WIFI,
  91. MAINBOARD_ARM9,
  92. MAINBOARD_ARM9_WIFI,
  93. MAINBOARD_INTEGRATED_SERIAL,
  94. MAINBOARD_ARM9_V2,
  95. MAINBOARD_ARM9_WIFI_V2,
  96. } MaindBoard_Type;
  97. typedef enum
  98. {
  99. MODULE_TWO_ANTS,
  100. MODULE_FOUR_ANTS,
  101. MODULE_THREE_ANTS,
  102. MODULE_ONE_ANT,
  103. PR9000,
  104. MODULE_ARM7_TWO_ANTS,
  105. MODULE_ARM7_FOUR_ANTS,
  106. M6E_ARM7_FOUR_ANTS,
  107. M56_ARM7_FOUR_ANTS,
  108. R902_M1S,
  109. R902_M2S,
  110. ARM7_16ANTS,
  111. SL_COMMN_READER,
  112. ANT_ONE_EXT_MULTIPORTS,
  113. } Reader_Type;
  114. typedef struct
  115. {
  116. Module_Type module;
  117. MaindBoard_Type board;
  118. Reader_Type logictype;
  119. int selfcheckants;
  120. } HardwareDetails;
  121. typedef enum
  122. {
  123. SL_TAG_PROTOCOL_NONE = 0x00,
  124. SL_TAG_PROTOCOL_ISO180006B = 0x03,
  125. SL_TAG_PROTOCOL_GEN2 = 0x05,
  126. SL_TAG_PROTOCOL_ISO180006B_UCODE = 0x06,
  127. SL_TAG_PROTOCOL_IPX64 = 0x07,
  128. SL_TAG_PROTOCOL_IPX256 = 0x08,
  129. } SL_TagProtocol;
  130. typedef enum
  131. {
  132. RG_NONE = 0x0,
  133. RG_NA = 0x01,
  134. RG_EU = 0x02,
  135. RG_EU2 = 0X07,
  136. RG_EU3 = 0x08,
  137. RG_KR = 0x03,
  138. RG_PRC = 0x06,
  139. RG_PRC2 = 0x0A,
  140. RG_OPEN = 0xFF,
  141. RG_IN=0x04,
  142. RG_JP=0x05,
  143. RG_CE_HIGH = 0x0C,
  144. RG_HK = 0x0D,
  145. RG_TAIWAN = 0x0E,
  146. RG_MALAYSIA = 0x0F,
  147. RG_SOUTH_AFRICA = 0x10,
  148. RG_BRAZIL = 0x11,
  149. RG_THAILAND = 0x12,
  150. RG_SINGAPORE = 0x13,
  151. RG_AUSTRALIA=0x14,
  152. RG_URUGUAY = 0x16,
  153. RG_VIETNAM = 0x17,
  154. RG_ISRAEL = 0x18,
  155. RG_PHILIPPINES = 0x19,
  156. RG_INDONESIA = 0x1A,
  157. RG_NEW_ZEALAND = 0x1B,
  158. RG_PERU = 0x1C,
  159. RG_RUSSIA = 0x1D,
  160. RG_CE_LOW_HIGH=0x1E,
  161. } Region_Conf;
  162. typedef enum
  163. {
  164. MTR_PARAM_POTL_GEN2_SESSION,
  165. MTR_PARAM_POTL_GEN2_Q,
  166. MTR_PARAM_POTL_GEN2_TAGENCODING,
  167. MTR_PARAM_POTL_GEN2_MAXEPCLEN,
  168. MTR_PARAM_RF_ANTPOWER,
  169. MTR_PARAM_RF_MAXPOWER,
  170. MTR_PARAM_RF_MINPOWER,
  171. MTR_PARAM_TAG_FILTER,
  172. MTR_PARAM_TAG_EMBEDEDDATA,
  173. MTR_PARAM_TAG_INVPOTL,
  174. MTR_PARAM_READER_CONN_ANTS,
  175. MTR_PARAM_READER_AVAILABLE_ANTPORTS,
  176. MTR_PARAM_READER_IS_CHK_ANT,
  177. MTR_PARAM_READER_VERSION,
  178. MTR_PARAM_READER_IP,
  179. MTR_PARAM_FREQUENCY_REGION,
  180. MTR_PARAM_FREQUENCY_HOPTABLE,
  181. MTR_PARAM_POTL_GEN2_BLF,
  182. MTR_PARAM_POTL_GEN2_WRITEMODE,
  183. MTR_PARAM_POTL_GEN2_TARGET, //0:A; 1:B; 2:A->B; 3:B->A
  184. MTR_PARAM_TAGDATA_UNIQUEBYANT,
  185. MTR_PARAM_TAGDATA_UNIQUEBYEMDDATA,
  186. MTR_PARAM_TAGDATA_RECORDHIGHESTRSSI,
  187. MTR_PARAM_RF_TEMPERATURE,
  188. MTR_PARAM_RF_HOPTIME,
  189. MTR_PARAM_RF_LBT_ENABLE,
  190. MTR_PARAM_RF_SUPPORTEDREGIONS,
  191. MTR_PARAM_POTL_SUPPORTEDPROTOCOLS,
  192. MTR_PARAM_POTL_ISO180006B_BLF,
  193. MTR_PARAM_POTL_GEN2_TARI, //0:Tari of 25 microseconds;1:Tari of 12.5 microseconds;2:Tari of 6.25 microseconds
  194. MTR_PARAM_TRANS_TIMEOUT,
  195. MTR_PARAM_TAG_EMDSECUREREAD,
  196. MTR_PARAM_TRANSMIT_MODE,
  197. MTR_PARAM_POWERSAVE_MODE,
  198. MTR_PARAM_TAG_SEARCH_MODE,
  199. MTR_PARAM_POTL_ISO180006B_MODULATION_DEPTH,
  200. MTR_PARAM_POTL_ISO180006B_DELIMITER,
  201. MTR_PARAM_RF_ANTPORTS_VSWR,
  202. //alter by dkg
  203. MTR_PARAM_SAVECONFIGURATION,
  204. MTR_PARAM_MAXINDEX,
  205. //by dkg
  206. MTR_PARAM_INTERNALSAVECONFIGURATION,
  207. MTR_PARAM_CUSTOM,
  208. MTR_PARAM_READER_WATCHDOG,
  209. MTR_PARAM_READER_ERRORDATA,
  210. MTR_PARAM_RF_HOPANTTIME,
  211. MTR_PARAM_TAG_MULTISELECTORS,
  212. MTR_PARAM_SAVEINMODULE,
  213. MTR_PARAM_SAVEINMODULE_BAUD,
  214. }Mtr_Param;
  215. typedef enum
  216. {
  217. TAGOP_EMBEDDEDSPEC_NONE = 0,
  218. TAGOP_MONZA4_QTPEEK2PRIVATE = 1,
  219. TAGOP_MONZA4_QTPEEK2PUBLIC = 2,
  220. TAGOP_U8=3,
  221. } TagOpEmbeddedSpecReq_Code;
  222. #define MAXANTCNT 16
  223. #define MAXIPSTRLEN 50
  224. #define HOPTABLECNT 100
  225. #define MAXEPCBYTESCNT 62
  226. #define MAXEMBDATALEN 128
  227. #define MAXINVPOTLSCNT 6
  228. #define MAXGPICNT 8
  229. typedef struct
  230. {
  231. int GpiId;
  232. int State;
  233. } GpiState_ST;
  234. typedef struct
  235. {
  236. int gpiCount;
  237. GpiState_ST gpiStats[MAXGPICNT];
  238. } GpiInfo_ST;
  239. typedef struct
  240. {
  241. void *pCusParam;
  242. int CParamlen;
  243. } CustomParam_ST;
  244. typedef struct
  245. {
  246. unsigned int ReadCnt;
  247. int RSSI;
  248. unsigned char AntennaID;
  249. unsigned int Frequency;
  250. unsigned int TimeStamp;
  251. unsigned short EmbededDatalen;
  252. unsigned char EmbededData[MAXEMBDATALEN];
  253. unsigned char Res[2];
  254. unsigned short Epclen;
  255. unsigned char PC[2];
  256. unsigned char CRC[2];
  257. unsigned char EpcId[MAXEPCBYTESCNT];
  258. int Phase;
  259. SL_TagProtocol protocol;
  260. } TAGINFO;
  261. typedef struct
  262. {
  263. int tagtype;
  264. int pwdtype;
  265. int ApIndexStartBitsInEpc;
  266. int ApIndexBitsNumInEpc;
  267. int bank;
  268. int address;
  269. int blkcnt;
  270. unsigned int accesspwd;
  271. } EmbededSecureRead_ST;
  272. typedef struct
  273. {
  274. char ip[50];
  275. char mask[50];
  276. char gateway[50];
  277. } Reader_Ip;
  278. typedef struct
  279. {
  280. char ver[20];
  281. } Reader_Ver;
  282. typedef struct
  283. {
  284. int bank;
  285. unsigned int startaddr;
  286. int flen;
  287. unsigned char *fdata;
  288. int isInvert;
  289. } TagFilter_ST;
  290. #define MaxTagSelBytesCount 32
  291. typedef struct
  292. {
  293. int bank;
  294. unsigned int startaddr;
  295. int slen;
  296. unsigned char sdata[MaxTagSelBytesCount];
  297. } TagSelector_ST;
  298. #define MaxTagSelcetorCount 16
  299. typedef struct
  300. {
  301. TagSelector_ST multiselectors[MaxTagSelcetorCount];
  302. int selectorcnt;
  303. } MultiTagSelectors_ST;
  304. typedef struct
  305. {
  306. int bank;
  307. int startaddr;
  308. int bytecnt;
  309. unsigned char *accesspwd;
  310. } EmbededData_ST;
  311. typedef struct
  312. {
  313. int antid;
  314. unsigned short readPower;
  315. unsigned short writePower;
  316. } AntPower;
  317. typedef struct
  318. {
  319. int antcnt;
  320. AntPower Powers[MAXANTCNT];
  321. }AntPowerConf;
  322. typedef struct
  323. {
  324. int andid;
  325. unsigned short power;
  326. Region_Conf region;
  327. int frequencys[HOPTABLECNT];
  328. unsigned char vswrs[HOPTABLECNT];
  329. int frecount;
  330. } AntPortsVSWR;
  331. typedef struct
  332. {
  333. int antcnt;
  334. int connectedants[MAXANTCNT];
  335. } ConnAnts_ST;
  336. typedef struct
  337. {
  338. unsigned int htb[HOPTABLECNT];
  339. int lenhtb;
  340. }HoptableData_ST;
  341. typedef struct
  342. {
  343. SL_TagProtocol potl;
  344. int weight;
  345. } Inv_Potl;
  346. typedef struct
  347. {
  348. int potlcnt;
  349. Inv_Potl potls[MAXINVPOTLSCNT];
  350. } Inv_Potls_ST;
  351. int GetSDKVersion(void);
  352. #if !defined (__SCM__)
  353. typedef struct
  354. {
  355. Mtr_Param key;
  356. void *customkey;
  357. int isdefault;
  358. void* val;
  359. //int valen;
  360. }Default_Param;
  361. READER_ERR GetHardwareDetails(int hReader, HardwareDetails *phd);
  362. READER_ERR GetHardwareDetails_BaseType(int hReader, unsigned char *outbuf);
  363. READER_ERR InitReader_Notype(int *hReader, char * src, int antscnt);
  364. READER_ERR AuthPassword(int hReader, unsigned char *pwd, int pwdlen);
  365. #endif
  366. READER_ERR InitReader(int *hReader, char * src, Reader_Type rtype);
  367. void CloseReader(int hReader);
  368. READER_ERR GetTagData(int hReader, int ant,
  369. unsigned char bank, unsigned int address,
  370. int blkcnt, unsigned char *data,
  371. unsigned char *accesspasswd, unsigned short timeout);
  372. READER_ERR GetTagDataEx(int hReader, int ant,
  373. unsigned char bank, unsigned int address,
  374. int blkcnt, unsigned char *data,
  375. unsigned char *accesspasswd, unsigned short timeout,
  376. int option, void *pSpec);
  377. READER_ERR WriteTagData(int hReader, int ant,
  378. unsigned char bank, unsigned int address,
  379. unsigned char *data, int datalen,
  380. unsigned char *accesspasswd, unsigned short timeout);
  381. READER_ERR WriteTagEpcEx(int hReader, int ant, unsigned char *Epc,
  382. int epclen, unsigned char *accesspwd, unsigned short timeout);
  383. READER_ERR TagInventory_Count(int hReader, int *ants, int antcnt, unsigned short timeout,
  384. int *tagcnt, int isclearbuf);
  385. READER_ERR TagInventory(int hReader, int *ants, int antcnt, unsigned short timeout,
  386. TAGINFO *pTInfo, int *tagcnt);
  387. READER_ERR TagInventory_Raw(int hReader, int *ants, int antcnt, unsigned short timeout,
  388. int *tagcnt);
  389. READER_ERR TagInventory_BaseType(int hReader, int *ants, int antcnt, unsigned short timeout,
  390. unsigned char *outbuf, int *tagcnt);
  391. READER_ERR GetNextTag(int hReader, TAGINFO *pTInfo);
  392. READER_ERR GetNextTag_BaseType(int hReader, unsigned char *outbuf);
  393. READER_ERR PsamTransceiver(int hReader, int soltid, int coslen,
  394. unsigned char *cos, int *cosresplen, unsigned char *cosresp,
  395. unsigned char *errcode, unsigned short timeout);
  396. READER_ERR GetReaderAddress(int hReader, char *addr);
  397. READER_ERR ReadTagTemperature(int hReader, int ant,unsigned char bank,
  398. int wordAddress, int wordCount, int alltime, int timeselwait,
  399. int timereadwait, unsigned short metaflag, unsigned char *accesspasswd,
  400. unsigned char *getdata,int *datalen);
  401. READER_ERR ReadTagLED(int hReader, int ant,unsigned short metaflag,
  402. unsigned short timeout,unsigned char *getdata,int *datalen);
  403. char* LookupErrorString(int derrcode);
  404. READER_ERR GetLastDetailError(int hReader, int *derrcode, char **errstring);
  405. typedef enum
  406. {
  407. GPITRIGGER_NONE = 0,
  408. GPITRIGGER_TRI1START_TRI2STOP = 1,
  409. GPITRIGGER_TRI1START_TIMEOUTSTOP = 2,
  410. GPITRIGGER_TRI1ORTRI2START_TIMEOUTSTOP = 3,
  411. GPITRIGGER_TRI1ORTRI2START_TRI1ORTRI2STOP = 4,
  412. } GpiTrigger_Type;
  413. #if !defined (__SCM__)
  414. typedef void (*ReadingErrorHandler)(int hReader, READER_ERR errcode, void* cookie);
  415. typedef struct
  416. {
  417. ReadingErrorHandler handler;
  418. void *cookie;
  419. } OnReadingErrorBlock;
  420. READER_ERR SetReadingErrorHandler(int hReader, OnReadingErrorBlock bok);
  421. typedef void (*TagReadHandler)(int hReader, TAGINFO *tag, void* cookie);
  422. typedef struct
  423. {
  424. TagReadHandler handler;
  425. void *cookie;
  426. } OnTagReadBlock;
  427. READER_ERR SetTagReadHandler(int hReader, OnTagReadBlock bok);
  428. typedef void (*GpiStateHandler)(int hReader, int triggerid, GpiInfo_ST *gpist, void* cookie);
  429. /*
  430. bordertype:1,开始盘点;2,停止盘点
  431. reason:1,gpi触发;2,超时
  432. */
  433. typedef void (*GpiTriggerBoundaryHandler)(int hReader, int bordertype, int reason, void* cookie);
  434. typedef struct
  435. {
  436. //满足触发条件1和2时进行通知
  437. GpiStateHandler gshandler;
  438. //通知读写器开始和停止盘存的触发原因和读写器状态
  439. GpiTriggerBoundaryHandler gtbhandler;
  440. void *cookie;
  441. } OnGpiTriggerBlock;
  442. READER_ERR SetGpiTriggerHandler(int hReader, OnGpiTriggerBlock bok);
  443. typedef void (*InvIdleHandler)(int hReader, void* cookie);
  444. typedef struct
  445. {
  446. InvIdleHandler handler;
  447. void *cookie;
  448. } OnInvIdleBlock;
  449. READER_ERR SetInvIdleHandler(int hReader, OnInvIdleBlock bok);
  450. typedef int (*SwitchNextAntHandler)(void *pData, int *nextchan, int *nextlogant, int *invants, int antcnt);
  451. typedef int (*SwitchAntBoundaryHandler)(void *pData);
  452. typedef int (*CustomFuncHandler) (void *pRPData, void *pSPData);
  453. typedef struct
  454. {
  455. SwitchNextAntHandler SwitchHandler;
  456. void *pSwitchData;
  457. SwitchAntBoundaryHandler PreSwitchHandler;
  458. void *pPreSwitchData;
  459. SwitchAntBoundaryHandler AftSwitchHandler;
  460. void *pAftSwitchData;
  461. CustomFuncHandler CustomHandler;
  462. void *pCustomData;
  463. } MFRAntSwitchBlock;
  464. READER_ERR SetSwitchNextAntHandler(int hReader, MFRAntSwitchBlock blk);
  465. typedef struct
  466. {
  467. int IsAntennaID;
  468. int IsReadCnt;
  469. int IsRSSI;
  470. int IsFrequency;
  471. int IsTimestamp;
  472. int IsRFU;
  473. int IsEmdData;
  474. } TagMetaFlags;
  475. typedef struct
  476. {
  477. GpiInfo_ST GpiTrigger1States;
  478. GpiInfo_ST GpiTrigger2States;
  479. GpiTrigger_Type GpiTriggerType;
  480. int StopTriggerTimeout;
  481. } GPITrigger;
  482. typedef struct
  483. {
  484. unsigned short ReadDuration;
  485. unsigned int ReadInterval;
  486. int IsFastRead;
  487. unsigned char FastReadDutyRation;
  488. TagMetaFlags TMFlags;
  489. GPITrigger GpiTrigger;
  490. int IsGPITrigger;
  491. } BackReadOption;
  492. READER_ERR StartReading(int hReader, int *ants, int antcnt, BackReadOption *pBRO);
  493. READER_ERR StopReading(int hReader);
  494. READER_ERR AsyncStartReading(int hReader, int *ants, int antcnt, int option);
  495. READER_ERR AsyncGetTagCount(int hReader, int *tagcnt);
  496. READER_ERR AsyncGetNextTag(int hReader, TAGINFO *pTInfo);
  497. READER_ERR AsyncStopReading(int hReader);
  498. READER_ERR FirmwareLoadFromSerialPort(char *serialportpath, char *filepath);
  499. READER_ERR RebootReader(char *address);
  500. READER_ERR GetDeviceVersion(char *serialportpath, unsigned char *sfver);
  501. #endif
  502. typedef enum
  503. {
  504. LOCK_OBJECT_KILL_PASSWORD = 0x01, //锁定对象为销毁密码
  505. LOCK_OBJECT_ACCESS_PASSWD = 0x02, //锁定对象为访问密码
  506. LOCK_OBJECT_BANK1 = 0x04, //锁定对象为bank1
  507. LOCK_OBJECT_BANK2 = 0x08, //锁定对象为bank2
  508. LOCK_OBJECT_BANK3 = 0x10, //锁定对象为bank3
  509. } Lock_Obj;
  510. typedef enum
  511. {
  512. KILL_PASSWORD_UNLOCK = 0x0000,
  513. KILL_PASSWORD_LOCK = 0x0200, //销毁密码密码锁定
  514. KILL_PASSWORD_PERM_LOCK = 0x0300, //销毁密码永久锁定
  515. ACCESS_PASSWD_UNLOCK = 0x00,
  516. ACCESS_PASSWD_LOCK = 0x80, //访问密码密码锁定
  517. ACCESS_PASSWD_PERM_LOCK = 0xC0, //访问密码永久锁定
  518. BANK1_UNLOCK = 0x00,
  519. BANK1_LOCK = 0x20, //bank1密码锁定
  520. BANK1_PERM_LOCK = 0x30, //bank1永久锁定
  521. BANK2_UNLOCK = 0x00,
  522. BANK2_LOCK = 0x08, //bank2密码锁定
  523. BANK2_PERM_LOCK = 0x0C,//bank2永久锁定
  524. BANK3_UNLOCK = 0x00,
  525. BANK3_LOCK = 0x02, //bank3密码锁定
  526. BANK3_PERM_LOCK = 0x03, //bank3永久锁定
  527. } Lock_Type;
  528. READER_ERR LockTag(int hReader, int ant,
  529. unsigned char lockobjects, unsigned short locktypes,
  530. unsigned char *accesspasswd, unsigned short timeout);
  531. READER_ERR KillTag(int hReader, int ant,
  532. unsigned char *killpasswd,
  533. unsigned short timeout);
  534. READER_ERR Lock180006BTag(int hReader, int ant, int startblk,
  535. int blkcnt, unsigned short timeout);
  536. READER_ERR BlockPermaLock(int hReader, int ant, int readlock, int startblk,
  537. int blkrange, unsigned char *mask, unsigned char *pwd, unsigned short timeout);
  538. READER_ERR BlockErase(int hReader, int ant, int bank, int wordaddr, int wordcnt,
  539. unsigned char *pwd, unsigned short timeout);
  540. READER_ERR SetGPO(int hReader, int gpoid, int state);
  541. READER_ERR GetGPI(int hReader, int gpiid, int *state);
  542. READER_ERR GetGPIEx(int hReader, GpiInfo_ST *gpiinfo);
  543. typedef enum
  544. {
  545. NXP_SetReadProtect,
  546. NXP_ResetReadProtect,
  547. NXP_ChangeEAS,
  548. NXP_EASAlarm,
  549. NXP_Calibrate,
  550. ALIEN_Higgs2_PartialLoadImage,
  551. ALIEN_Higgs2_FullLoadImage,
  552. ALIEN_Higgs3_FastLoadImage,
  553. ALIEN_Higgs3_LoadImage,
  554. ALIEN_Higgs3_BlockReadLock,
  555. ALIEN_Higgs3_BlockPermaLock,
  556. IMPINJ_M4_Qt,
  557. YiLian_Temperature,
  558. YiLian_Led,
  559. NXP_U8_InventoryMode = 20,
  560. } CustomCmdType;
  561. typedef struct
  562. {
  563. unsigned char AccessPwd[4];
  564. int CmdType; //0 = read the QT control bits in cache;1 = write the QT control bits
  565. int MemType; //0 = Tag uses Private Memory Map;1 = Tag uses Public Memory Map
  566. int PersistType; //0 = write the QT Control to volatile memory;1 = write the QT Control to nonvolatile memory
  567. int RangeType; //0 = Tag does not reduce range;1 = Tag reduces range if in or about to be in OPEN or SECURED state
  568. unsigned short TimeOut;
  569. } IMPINJM4QtPara;
  570. typedef struct
  571. {
  572. int MemType;//0 = Tag uses Private Memory Map;1 = Tag uses Public Memory Map
  573. int RangeType;//0 = Tag does not reduce range;1 = Tag reduces range if in or about to be in OPEN or SECURED state
  574. } IMPINJM4QtResult;
  575. typedef struct
  576. {
  577. unsigned char AccessPwd[4];
  578. int isSet;
  579. unsigned short TimeOut;
  580. } NXPChangeEASPara;
  581. typedef struct
  582. {
  583. unsigned char DR;
  584. unsigned char MC;
  585. unsigned char TrExt;
  586. unsigned short TimeOut;
  587. } NXPEASAlarmPara;
  588. typedef struct
  589. {
  590. unsigned char EASdata[8];
  591. } NXPEASAlarmResult;
  592. typedef struct
  593. {
  594. unsigned char AccessPwd[4];
  595. unsigned char BlkBits;
  596. unsigned short TimeOut;
  597. } ALIENHiggs3BlockReadLockPara;
  598. READER_ERR SyncStartFastReading(int hReader, int* ants, int antcnt, int option);
  599. READER_ERR SyncGetNextTag(int hReader, TAGINFO *tag);
  600. READER_ERR SyncStopFastReading(int hReader);
  601. #if !defined (__SCM__)
  602. READER_ERR ResetRfidModule(int hReader);
  603. READER_ERR AsyncGetNextTag_BaseType(int hReader, unsigned char *outbuf);
  604. READER_ERR GetLastDetailError_BaseType(int hReader, unsigned char *outbuf);
  605. READER_ERR GetGPIEx_BaseType(int hReader, unsigned char *outbuf);
  606. /*
  607. data:要发送的数据
  608. datalen:要发送数据的长度,单位字节
  609. timeout:超时时间,单位毫秒
  610. 返回值:0表示成功,-1表示失败
  611. */
  612. int DataTransportSend(int hReader, unsigned char *data, int datalen, int timeout);
  613. /*
  614. data:接收缓冲区
  615. datalen:要接收数据的长度,单位字节
  616. timeout:超时时间,单位毫秒
  617. 返回值:0表示成功,-1表示失败
  618. */
  619. int DataTransportRecv(int hReader, unsigned char *data, int datalen, int timeout);
  620. READER_ERR SaveDataOnReader(int hReader, int address, unsigned char *data, int datalen);
  621. READER_ERR ReadDataOnReader(int hReader, int address, unsigned char *data, int datalen);
  622. READER_ERR EraseDataOnReader(int hReader);
  623. READER_ERR GetReaderDetails(int hReader, unsigned char *info);
  624. #endif
  625. READER_ERR CustomCmd(int hReader, int ant, CustomCmdType cmdtype, void *CustomPara, void *CustomRet);
  626. READER_ERR CustomCmd_BaseType(int hReader, int ant, int cmdtype, unsigned char *CustomPara, unsigned char *CustomRet);
  627. READER_ERR ParamGet(int hReader, Mtr_Param key, void *val);
  628. READER_ERR ParamSet(int hReader, Mtr_Param key, void *val);
  629. void Hex2Str(unsigned char *buf, int len, char *out);
  630. void Str2Hex(const char *buf, int len, unsigned char *hexbuf);
  631. void Str2Binary(const char *buf,int len,unsigned char *binarybuf);
  632. #if defined (__SCM__)
  633. typedef struct
  634. {
  635. unsigned int seconds;
  636. unsigned int milisecs;
  637. } SCM_TIME_ST;
  638. typedef void SCM_GetSysClock(SCM_TIME_ST *time);
  639. typedef void SCM_Sleep(int milisecs);
  640. typedef int SCM_Trans_Recv(unsigned char *data, unsigned int len, unsigned int timeout);
  641. typedef int SCM_Trans_Send(unsigned char *data, unsigned int len, unsigned int timeout);
  642. typedef int SCM_Trans_Open();
  643. typedef int SCM_Trans_Close();
  644. typedef int SCM_Trans_SetPhySpeed(unsigned int speed);
  645. typedef int SCM_Trans_ClearRecvBuffer();
  646. typedef int SCM_Trans_Flush();
  647. typedef int SCM_Trans_IsFinResp(unsigned char *resp);
  648. typedef struct
  649. {
  650. SCM_GetSysClock *scmGetSysClock;
  651. SCM_Sleep *scmSleep;
  652. SCM_Trans_Recv *scmTransRecv;
  653. SCM_Trans_Send *scmTransSend;
  654. SCM_Trans_Open *scmTransOpen;
  655. SCM_Trans_Close *scmTransClose;
  656. SCM_Trans_SetPhySpeed *scmTransSetPhySpeed;
  657. SCM_Trans_ClearRecvBuffer *scmTransClearRecvBuffer;
  658. SCM_Trans_Flush *scmTransFlush;
  659. SCM_Trans_IsFinResp *scmTransIsFinResp;
  660. } SCM_READER_CLK_TRANS;
  661. READER_ERR SCMInitEnv(SCM_READER_CLK_TRANS clk_trans);
  662. READER_ERR SCMSetDgPrintf(int pt);
  663. READER_ERR StartTagInventory(int hReader, int *ants, int antcnt, unsigned short timeout);
  664. READER_ERR IsFinTagInventory(int hReader, int *tagcnt);
  665. READER_ERR StartGetTagData(int hReader, int ant,
  666. unsigned char bank, unsigned int address,
  667. int blkcnt, unsigned char *accesspasswd, unsigned short timeout);
  668. READER_ERR IsFinGetTagData(int hReader, unsigned char *data);
  669. #endif
  670. /*
  671. 以下这些函数的功能已经被ParamGet和ParamSet所代替,不建议再使用了
  672. */
  673. READER_ERR WriteTagEpc(int hReader, int ant,
  674. unsigned char *Epc, int epclen, unsigned short timeout);
  675. READER_ERR SetInvPotl(int hReader, int potlcnt, SL_TagProtocol *potls, int *pweithts);
  676. READER_ERR SetFilter(int hReader, int bank, unsigned int startaddr,
  677. unsigned char *filterdata, int datalen, int isInvert);
  678. READER_ERR ResetFilter(int hReader);
  679. READER_ERR SetEmbededData(int hReader, int bank, int startaddr, int bytecnt,
  680. unsigned char *accesspwd);
  681. READER_ERR ResetEmbededData(int hReader);
  682. READER_ERR GetAllAnts(int hReader, int *ants, int *antscnt);
  683. READER_ERR GetAntsPower(int hReader, int *antcnt, unsigned short *rpwrs, unsigned short *wpwrs);
  684. READER_ERR GetIpInfo(int hReader, char *ip, char *subnet, char *gateway);
  685. READER_ERR GetGen2Session(int hReader, int *sess);
  686. READER_ERR SetRegion(int hReader, Region_Conf rg);
  687. READER_ERR SetIpInfo(int hReader, char *ip, char *subnet, char *gateway);
  688. READER_ERR SetReadPower(int hReader, unsigned short power);
  689. READER_ERR SetWritePower(int hReader, unsigned short power);
  690. READER_ERR SetEPCLength(int hReader, int len);
  691. READER_ERR SetGen2Session(int hReader, int sess);
  692. READER_ERR SetGen2MVal(int hReader, int mval);
  693. READER_ERR SetAntsPower(int hReader, int *ants, int antcnt, unsigned short *rpwrs, unsigned short *wpwrs);
  694. READER_ERR GetPowerLimit(int hReader, unsigned short *MaxPower, unsigned short *MinPower);
  695. #ifdef __cplusplus
  696. }
  697. #endif
  698. #endif