Home | History | Annotate | Download | only in health
      1 /*
      2  *
      3  *  MCAP for BlueZ - Bluetooth protocol stack for Linux
      4  *
      5  *  Copyright (C) 2010 GSyC/LibreSoft, Universidad Rey Juan Carlos.
      6  *  Copyright (C) 2010 Signove
      7  *
      8  *  Authors:
      9  *  Santiago Carot-Nemesio <sancane at gmail.com>
     10  *  Jose Antonio Santos-Cadenas <santoscadenas at gmail.com>
     11  *  Elvis Pftzenreuter <epx at signove.com>
     12  *
     13  *  This program is free software; you can redistribute it and/or modify
     14  *  it under the terms of the GNU General Public License as published by
     15  *  the Free Software Foundation; either version 2 of the License, or
     16  *  (at your option) any later version.
     17  *
     18  *  This program is distributed in the hope that it will be useful,
     19  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     20  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     21  *  GNU General Public License for more details.
     22  *
     23  *  You should have received a copy of the GNU General Public License
     24  *  along with this program; if not, write to the Free Software
     25  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     26  *
     27  */
     28 
     29 #ifndef __MCAP_H
     30 #define __MCAP_H
     31 
     32 #ifdef __cplusplus
     33 extern "C" {
     34 #endif
     35 
     36 #define MCAP_VERSION	0x0100	/* current version 01.00 */
     37 
     38 /* bytes to get MCAP Supported Procedures */
     39 #define MCAP_SUP_PROC	0x06
     40 
     41 /* maximum transmission unit for channels */
     42 #define MCAP_CC_MTU	48
     43 #define MCAP_DC_MTU	L2CAP_DEFAULT_MTU
     44 
     45 /* MCAP Standard Op Codes */
     46 #define MCAP_ERROR_RSP			0x00
     47 #define MCAP_MD_CREATE_MDL_REQ		0x01
     48 #define MCAP_MD_CREATE_MDL_RSP		0x02
     49 #define MCAP_MD_RECONNECT_MDL_REQ	0x03
     50 #define MCAP_MD_RECONNECT_MDL_RSP	0x04
     51 #define MCAP_MD_ABORT_MDL_REQ		0x05
     52 #define MCAP_MD_ABORT_MDL_RSP		0x06
     53 #define MCAP_MD_DELETE_MDL_REQ		0x07
     54 #define MCAP_MD_DELETE_MDL_RSP		0x08
     55 
     56 /* MCAP Clock Sync Op Codes */
     57 #define MCAP_MD_SYNC_CAP_REQ		0x11
     58 #define MCAP_MD_SYNC_CAP_RSP		0x12
     59 #define MCAP_MD_SYNC_SET_REQ		0x13
     60 #define MCAP_MD_SYNC_SET_RSP		0x14
     61 #define MCAP_MD_SYNC_INFO_IND		0x15
     62 
     63 /* MCAP Response codes */
     64 #define MCAP_SUCCESS			0x00
     65 #define MCAP_INVALID_OP_CODE		0x01
     66 #define MCAP_INVALID_PARAM_VALUE	0x02
     67 #define MCAP_INVALID_MDEP		0x03
     68 #define MCAP_MDEP_BUSY			0x04
     69 #define MCAP_INVALID_MDL		0x05
     70 #define MCAP_MDL_BUSY			0x06
     71 #define MCAP_INVALID_OPERATION		0x07
     72 #define MCAP_RESOURCE_UNAVAILABLE	0x08
     73 #define MCAP_UNSPECIFIED_ERROR		0x09
     74 #define MCAP_REQUEST_NOT_SUPPORTED	0x0A
     75 #define MCAP_CONFIGURATION_REJECTED	0x0B
     76 
     77 /* MDL IDs */
     78 #define MCAP_MDLID_RESERVED		0x0000
     79 #define MCAP_MDLID_INITIAL		0x0001
     80 #define MCAP_MDLID_FINAL		0xFEFF
     81 #define MCAP_ALL_MDLIDS			0xFFFF
     82 
     83 /* MDEP IDs */
     84 #define MCAP_MDEPID_INITIAL		0x00
     85 #define MCAP_MDEPID_FINAL		0x7F
     86 
     87 /* CSP special values */
     88 #define MCAP_BTCLOCK_IMMEDIATE		0xffffffffUL
     89 #define MCAP_TMSTAMP_DONTSET		0xffffffffffffffffULL
     90 #define MCAP_BTCLOCK_MAX		0x0fffffff
     91 #define MCAP_BTCLOCK_FIELD		(MCAP_BTCLOCK_MAX + 1)
     92 
     93 /*
     94  * MCAP Request Packet Format
     95  */
     96 
     97 typedef struct {
     98 	uint8_t		op;
     99 	uint16_t	mdl;
    100 	uint8_t		mdep;
    101 	uint8_t		conf;
    102 } __attribute__ ((packed)) mcap_md_create_mdl_req;
    103 
    104 typedef struct {
    105 	uint8_t		op;
    106 	uint16_t	mdl;
    107 } __attribute__ ((packed)) mcap_md_req;
    108 
    109 /*
    110  * MCAP Response Packet Format
    111  */
    112 
    113 typedef struct {
    114 	uint8_t		op;
    115 	uint8_t		rc;
    116 	uint16_t	mdl;
    117 	uint8_t		data[0];
    118 } __attribute__ ((packed)) mcap_rsp;
    119 
    120 /*
    121  * MCAP Clock Synchronization Protocol
    122  */
    123 
    124 typedef struct {
    125 	uint8_t		op;
    126 	uint16_t	timest;
    127 } __attribute__ ((packed)) mcap_md_sync_cap_req;
    128 
    129 typedef struct {
    130 	uint8_t		op;
    131 	uint8_t		rc;
    132 } __attribute__ ((packed)) mcap_md_sync_rsp;
    133 
    134 typedef struct {
    135         uint8_t         op;
    136 	uint8_t         rc;
    137 	uint8_t         btclock;
    138         uint16_t        sltime;
    139 	uint16_t        timestnr;
    140 	uint16_t        timestna;
    141 } __attribute__ ((packed)) mcap_md_sync_cap_rsp;
    142 
    143 typedef struct {
    144 	uint8_t		op;
    145 	uint8_t		timestui;
    146 	uint32_t	btclock;
    147 	uint64_t	timestst;
    148 } __attribute__ ((packed)) mcap_md_sync_set_req;
    149 
    150 typedef struct {
    151 	int8_t		op;
    152 	uint8_t		rc;
    153 	uint32_t	btclock;
    154 	uint64_t	timestst;
    155 	uint16_t	timestsa;
    156 } __attribute__ ((packed)) mcap_md_sync_set_rsp;
    157 
    158 typedef struct {
    159 	uint8_t		op;
    160 	uint32_t	btclock;
    161 	uint64_t	timestst;
    162 	uint16_t	timestsa;
    163 } __attribute__ ((packed)) mcap_md_sync_info_ind;
    164 
    165 #ifdef __cplusplus
    166 }
    167 #endif
    168 
    169 #endif /* __MCAP_H */
    170