1 /****************************************************************************** 2 * 3 * Copyright (C) 2009-2014 Broadcom Corporation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 /****************************************************************************** 20 * 21 * This file contains the common data types shared by Reader/Writer mode 22 * and Card Emulation. 23 * 24 ******************************************************************************/ 25 26 #ifndef TAGS_INT_H 27 #define TAGS_INT_H 28 29 /****************************************************************************** 30 // T1T command and response definitions 31 ******************************************************************************/ 32 33 typedef struct { 34 uint8_t opcode; 35 uint8_t cmd_len; 36 uint8_t uid_offset; 37 uint8_t rsp_len; 38 } tT1T_CMD_RSP_INFO; 39 40 typedef struct { 41 uint8_t tag_model; 42 uint8_t tms; 43 uint8_t b_dynamic; 44 uint8_t lock_tlv[3]; 45 uint8_t mem_tlv[3]; 46 } tT1T_INIT_TAG; 47 48 typedef struct { 49 uint8_t manufacturer_id; 50 bool b_multi_version; 51 uint8_t version_block; 52 uint16_t version_no; 53 uint16_t version_bmask; 54 uint8_t b_calc_cc; 55 uint8_t tms; 56 bool b_otp; 57 uint8_t default_lock_blpb; 58 } tT2T_INIT_TAG; 59 60 typedef struct { 61 uint8_t opcode; 62 uint8_t cmd_len; 63 uint8_t rsp_len; 64 uint8_t nack_rsp_len; 65 } tT2T_CMD_RSP_INFO; 66 67 extern const uint8_t 68 t4t_v10_ndef_tag_aid[]; /* V1.0 Type 4 Tag Applicaiton ID */ 69 extern const uint8_t 70 t4t_v20_ndef_tag_aid[]; /* V2.0 Type 4 Tag Applicaiton ID */ 71 72 extern const tT1T_CMD_RSP_INFO t1t_cmd_rsp_infos[]; 73 extern const tT1T_INIT_TAG t1t_init_content[]; 74 extern const tT1T_CMD_RSP_INFO* t1t_cmd_to_rsp_info(uint8_t opcode); 75 extern const tT1T_INIT_TAG* t1t_tag_init_data(uint8_t tag_model); 76 extern uint8_t t1t_info_to_evt(const tT1T_CMD_RSP_INFO* p_info); 77 78 extern const tT2T_INIT_TAG* t2t_tag_init_data(uint8_t manufacturer_id, 79 bool b_valid_ver, 80 uint16_t version_no); 81 extern const tT2T_CMD_RSP_INFO t2t_cmd_rsp_infos[]; 82 extern const tT2T_CMD_RSP_INFO* t2t_cmd_to_rsp_info(uint8_t opcode); 83 extern uint8_t t2t_info_to_evt(const tT2T_CMD_RSP_INFO* p_info); 84 85 extern const char* t1t_info_to_str(const tT1T_CMD_RSP_INFO* p_info); 86 extern const char* t2t_info_to_str(const tT2T_CMD_RSP_INFO* p_info); 87 extern int tags_pow(int x, int y); 88 extern unsigned int tags_log2(unsigned int x); 89 90 #endif /* TAGS_INT_H */ 91