Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2010-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 LLCP definitions
     22  *
     23  ******************************************************************************/
     24 #ifndef LLCP_DEFS_H
     25 #define LLCP_DEFS_H
     26 
     27 /*
     28 ** LLCP PDU Descriptions
     29 */
     30 
     31 #define LLCP_PDU_HEADER_SIZE 2 /* DSAP:PTYPE:SSAP excluding Sequence */
     32 
     33 #define LLCP_GET_DSAP(u16) (((u16)&0xFC00) >> 10)
     34 #define LLCP_GET_PTYPE(u16) (((u16)&0x03C0) >> 6)
     35 #define LLCP_GET_SSAP(u16) (((u16)&0x003F))
     36 
     37 #define LLCP_GET_PDU_HEADER(dsap, ptype, ssap) \
     38   (((uint16_t)(dsap) << 10) | ((uint16_t)(ptype) << 6) | (uint16_t)(ssap))
     39 
     40 #define LLCP_GET_NS(u8) ((uint8_t)(u8) >> 4)
     41 #define LLCP_GET_NR(u8) ((uint8_t)(u8)&0x0F)
     42 #define LLCP_GET_SEQUENCE(NS, NR) (((uint8_t)(NS) << 4) | (uint8_t)(NR))
     43 #define LLCP_SEQUENCE_SIZE 1
     44 
     45 #define LLCP_PDU_SYMM_TYPE 0
     46 #define LLCP_PDU_PAX_TYPE 1
     47 #define LLCP_PDU_AGF_TYPE 2
     48 #define LLCP_PDU_UI_TYPE 3
     49 #define LLCP_PDU_CONNECT_TYPE 4
     50 #define LLCP_PDU_DISC_TYPE 5
     51 #define LLCP_PDU_CC_TYPE 6
     52 #define LLCP_PDU_DM_TYPE 7
     53 #define LLCP_PDU_FRMR_TYPE 8
     54 #define LLCP_PDU_SNL_TYPE 9
     55 #define LLCP_PDU_I_TYPE 12
     56 #define LLCP_PDU_RR_TYPE 13
     57 #define LLCP_PDU_RNR_TYPE 14
     58 
     59 #define LLCP_PDU_SYMM_SIZE 2
     60 #define LLCP_PDU_DISC_SIZE 2
     61 #define LLCP_PDU_DM_SIZE 3
     62 #define LLCP_PDU_FRMR_SIZE 6
     63 #define LLCP_PDU_RR_SIZE 3
     64 #define LLCP_PDU_RNR_SIZE 3
     65 #define LLCP_PDU_AGF_LEN_SIZE 2 /* 2 bytes of length in AGF PDU */
     66 
     67 #define LLCP_SAP_DM_REASON_RESP_DISC 0x00
     68 #define LLCP_SAP_DM_REASON_NO_ACTIVE_CONNECTION 0x01
     69 #define LLCP_SAP_DM_REASON_NO_SERVICE 0x02
     70 #define LLCP_SAP_DM_REASON_APP_REJECTED 0x03
     71 #define LLCP_SAP_DM_REASON_PERM_REJECT_THIS 0x10
     72 #define LLCP_SAP_DM_REASON_PERM_REJECT_ANY 0x11
     73 #define LLCP_SAP_DM_REASON_TEMP_REJECT_THIS 0x20
     74 #define LLCP_SAP_DM_REASON_TEMP_REJECT_ANY 0x21
     75 
     76 #define LLCP_FRMR_W_ERROR_FLAG 0x08 /* Well-formedness Error */
     77 #define LLCP_FRMR_I_ERROR_FLAG 0x04 /* Information Field Error */
     78 #define LLCP_FRMR_R_ERROR_FLAG 0x02 /* Receive Sequence Error */
     79 #define LLCP_FRMR_S_ERROR_FLAG 0x01 /* Send Sequence Error */
     80 
     81 /*
     82 ** LLCP Parameter Descriptions
     83 */
     84 
     85 /* Version */
     86 #define LLCP_VERSION_TYPE 0x01
     87 #define LLCP_VERSION_LEN 0x01
     88 #define LLCP_GET_MAJOR_VERSION(u8) (((uint8_t)(u8) >> 4) & 0x0F)
     89 #define LLCP_GET_MINOR_VERSION(u8) ((uint8_t)(u8)&0x0F)
     90 #define LLCP_MIN_MAJOR_VERSION 0x01
     91 #define LLCP_MIN_SNL_MAJOR_VERSION 0x01
     92 #define LLCP_MIN_SNL_MINOR_VERSION 0x01
     93 
     94 /* LLCP Version 1.2 */
     95 #define LLCP_VERSION_MAJOR 0x01
     96 #define LLCP_VERSION_MINOR 0x02
     97 #define LLCP_VERSION_VALUE ((LLCP_VERSION_MAJOR << 4) | LLCP_VERSION_MINOR)
     98 
     99 /* Maximum Information Unit Extension */
    100 #define LLCP_MIUX_TYPE 0x02
    101 #define LLCP_MIUX_LEN 0x02
    102 #define LLCP_MIUX_MASK 0x07FF /* MIUX bit 10:0 */
    103 #define LLCP_DEFAULT_MIU 128  /* if local LLC doesn't receive MIUX */
    104 #define LLCP_MAX_MIU 2175     /* 2047 (11bits) + 128 */
    105 
    106 /* Well-Known Service */
    107 #define LLCP_WKS_TYPE 0x03
    108 #define LLCP_WKS_LEN 0x02
    109 
    110 /* Well-Known Service Bitmap */
    111 #define LLCP_WKS_MASK_LM 0x0001  /* Link Management */
    112 
    113 /* Well-Known Service Access Points */
    114 #define LLCP_SAP_LM 0x00  /* Link Management */
    115 #define LLCP_SAP_SDP 0x01 /* Service Discovery "urn:nfc:sn:sdp" */
    116 
    117 /* Link Timeout, LTO */
    118 #define LLCP_LTO_TYPE 0x04
    119 #define LLCP_LTO_LEN 0x01
    120 /* default 100ms. It should be sufficiently larget than RWT */
    121 #define LLCP_DEFAULT_LTO_IN_MS 100
    122 #define LLCP_LTO_UNIT 10        /* 10 ms */
    123 #define LLCP_MAX_LTO_IN_MS 2550 /* 2550 ms; 8bits * 10ms */
    124 
    125 /* Receive Window Size, RW */
    126 #define LLCP_RW_TYPE 0x05
    127 #define LLCP_RW_LEN 0x01
    128 #define LLCP_DEFAULT_RW 1 /* if local LLC doesn't receive RW */
    129 
    130 /* Service Name, SN */
    131 #define LLCP_SN_TYPE 0x06
    132 
    133 /* Option, OPT */
    134 #define LLCP_OPT_TYPE 0x07
    135 #define LLCP_OPT_LEN 0x01
    136 
    137 /* Service Discovery Request, SDREQ */
    138 #define LLCP_SDREQ_TYPE 0x08
    139 /* type(1 byte), length(1 byte), TID(1 byte) */
    140 #define LLCP_SDREQ_MIN_LEN 0x03
    141 
    142 /* Service Discovery Response, SDRES */
    143 #define LLCP_SDRES_TYPE 0x09
    144 #define LLCP_SDRES_LEN 0x02
    145 
    146 /* Link Service Class */
    147 #define LLCP_LSC_UNKNOWN 0x00
    148 #define LLCP_LSC_1 0x01
    149 #define LLCP_LSC_2 0x02
    150 #define LLCP_LSC_3 0x03
    151 
    152 #define LLCP_MAGIC_NUMBER_LEN 3
    153 #define LLCP_MAGIC_NUMBER_BYTE0 0x46
    154 #define LLCP_MAGIC_NUMBER_BYTE1 0x66
    155 #define LLCP_MAGIC_NUMBER_BYTE2 0x6D
    156 
    157 #define LLCP_SEQ_MODULO 16
    158 
    159 #define LLCP_NUM_SAPS 64
    160 #define LLCP_UPPER_BOUND_WK_SAP 0x0F
    161 #define LLCP_LOWER_BOUND_SDP_SAP 0x10
    162 #define LLCP_UPPER_BOUND_SDP_SAP 0x1F
    163 #define LLCP_LOWER_BOUND_LOCAL_SAP 0x20
    164 #define LLCP_UPPER_BOUND_LOCAL_SAP 0x3F
    165 
    166 /* Max Payload */
    167 /* Maximum Payload size, Length Reduction LRi/LRt */
    168 #define LLCP_NCI_MAX_PAYL_SIZE 254
    169 
    170 #define LLCP_MAX_GEN_BYTES 48
    171 
    172 #endif /* LLCP_DEFS_H */
    173