pinebuds/services/bt_profiles_enhanced/inc/btlib_type.h

321 lines
11 KiB
C
Raw Normal View History

2022-08-15 04:20:27 -05:00
/***************************************************************************
*
* Copyright 2015-2019 BES.
* All rights reserved. All unpublished rights reserved.
*
* No part of this work may be used or reproduced in any form or by any
* means, or stored in a database or retrieval system, without prior written
* permission of BES.
*
* Use of this work is governed by a license granted by BES.
* This work contains confidential and proprietary information of
* BES. which is protected by copyright, trade secret,
* trademark and other intellectual property rights.
*
****************************************************************************/
#ifndef __BTLIB_TYPE_H__
#define __BTLIB_TYPE_H__
#ifndef NULL
#define NULL 0
#endif
#ifndef SUCCESS
#define SUCCESS 0
#endif
#ifndef FAILURE
#define FAILURE 1
#endif
#ifndef INPROGRESS
#define INPROGRESS 2
#endif
#ifndef L2C_DISCONNECT_ITSELF
#define L2C_DISCONNECT_ITSELF (0x5E)
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
typedef unsigned char BtStatus;
#define BT_STATUS_SUCCESS 0 /* Successful and complete */
#define BT_STATUS_FAILED 1 /* Operation failed */
#define BT_STATUS_PENDING 2 /* Successfully started but pending */
#define BT_STATUS_DISCONNECT 3 /* Link disconnected */
#define BT_STATUS_NO_LINK 4 /* No Link layer Connection exists */
#define BT_STATUS_IN_USE 5 /* Operation failed - already in use. */
/* IrDA specific return codes */
#define BT_STATUS_MEDIA_BUSY 6 /* IRDA: Media is busy */
#define BT_STATUS_MEDIA_NOT_BUSY 7 /* IRDA: Media is not busy */
#define BT_STATUS_NO_PROGRESS 8 /* IRDA: IrLAP not making progress */
#define BT_STATUS_LINK_OK 9 /* IRDA: No progress condition cleared */
#define BT_STATUS_SDU_OVERRUN 10 /* IRDA: Sent more data than current SDU size */
/* Bluetooth specific return codes */
#define BT_STATUS_BUSY 11
#define BT_STATUS_NO_RESOURCES 12
#define BT_STATUS_NOT_FOUND 13
#define BT_STATUS_DEVICE_NOT_FOUND 14
#define BT_STATUS_CONNECTION_FAILED 15
#define BT_STATUS_TIMEOUT 16
#define BT_STATUS_NO_CONNECTION 17
#define BT_STATUS_INVALID_PARM 18
#define BT_STATUS_IN_PROGRESS 19
#define BT_STATUS_RESTRICTED 20
#define BT_STATUS_INVALID_TYPE 21
#define BT_STATUS_HCI_INIT_ERR 22
#define BT_STATUS_NOT_SUPPORTED 23
#define BT_STATUS_CONTINUE 24
#define BT_STATUS_CANCELLED 25
/* The last defined status code */
#define BT_STATUS_LAST_CODE 25
#define BIT0 0x00000001
#define BIT1 0x00000002
#define BIT2 0x00000004
#define BIT3 0x00000008
#define BIT4 0x00000010
#define BIT5 0x00000020
#define BIT6 0x00000040
#define BIT7 0x00000080
#define BIT8 0x00000100
#define BIT9 0x00000200
#define BIT10 0x00000400
#define BIT11 0x00000800
#define BIT12 0x00001000
#define BIT13 0x00002000
#define BIT14 0x00004000
#define BIT15 0x00008000
#define BIT16 0x00010000
#define BIT17 0x00020000
#define BIT18 0x00040000
#define BIT19 0x00080000
#define BIT20 0x00100000
#define BIT21 0x00200000
#define BIT22 0x00400000
#define BIT23 0x00800000
#define BIT24 0x01000000
#define BIT25 0x02000000
#define BIT26 0x04000000
#define BIT27 0x08000000
#define BIT28 0x10000000
#define BIT29 0x20000000
#define BIT30 0x40000000
#define BIT31 0x80000000
typedef unsigned char byte; /* Unsigned 8 bit quantity */
typedef unsigned char uint8; /* Unsigned 8 bit quantity */
typedef unsigned char uint8_t; /* Unsigned 8 bit quantity */
typedef signed char int8; /* Signed 8 bit quantity */
typedef unsigned short uint16; /* Unsigned 16 bit quantity */
typedef signed short int16; /* Signed 16 bit quantity */
typedef unsigned int uint32; /* Unsigned 32 bit quantity */
typedef signed int int32; /* Signed 32 bit quantity */
typedef unsigned char BOOLEAN;
typedef unsigned char INT8U; /* Unsigned 8 bit quantity */
typedef signed char INT8S; /* Signed 8 bit quantity */
typedef unsigned short INT16U; /* Unsigned 16 bit quantity */
typedef signed short INT16S; /* Signed 16 bit quantity */
typedef unsigned int INT32U; /* Unsigned 32 bit quantity */
typedef signed int INT32S; /* Signed 32 bit quantity */
typedef float FP32; /* Single precision floating point */
typedef double FP64; /* Double precision floating point */
typedef unsigned char u8;
#if 0
typedef signed char s8;
typedef unsigned short u16;
typedef signed short s16;
typedef unsigned int u32;
typedef signed int s32;
typedef unsigned long long u64;
typedef signed long long s64;
#endif
typedef uint16 CNH;
typedef struct {
uint8 A[6];
} __attribute__ ((packed)) BD_ADDR;
typedef struct{
uint8 A[10];
} __attribute__ ((packed)) CHANMAP;
typedef struct {
uint8 A[3];
} __attribute__ ((packed)) LAP;
typedef struct {
uint8 A[3];
} __attribute__ ((packed)) CLASS;
typedef struct {
uint8 A[16];
} __attribute__ ((packed)) PIN_CODE;
typedef struct {
uint8 A[16];
} __attribute__ ((packed)) LINK_KEY;
typedef struct {
uint8 A[4];
} __attribute__ ((packed)) SRES;
typedef struct {
uint8 A[12];
} __attribute__ ((packed)) ACO;
typedef struct {
uint8 A[8];
} __attribute__ ((packed)) FEATURES;
typedef struct {
uint8 A[14];
} __attribute__ ((packed)) NAME_VEC;
struct bdaddr_t {
uint8 addr[6];
}__attribute__ ((packed));
struct class_of_device_t {
uint8 A[3];
}__attribute__ ((packed));
struct link_key_t{
uint8 A[16];
}__attribute__ ((packed));
#define STR_BE32(buff,num) ( (((U8*)buff)[0] = (U8) ((num)>>24)), \
(((U8*)buff)[1] = (U8) ((num)>>16)), \
(((U8*)buff)[2] = (U8) ((num)>>8)), \
(((U8*)buff)[3] = (U8) (num)) )
#define STR_BE16(buff,num) ( (((U8*)buff)[0] = (U8) ((num)>>8)), \
(((U8*)buff)[1] = (U8) (num)) )
#define BEtoHost16(ptr) (U16)( ((U16) *((U8*)(ptr)) << 8) | \
((U16) *((U8*)(ptr)+1)) )
#define BEtoHost32(ptr) (U32)( ((U32) *((U8*)(ptr)) << 24) | \
((U32) *((U8*)(ptr)+1) << 16) | \
((U32) *((U8*)(ptr)+2) << 8) | \
((U32) *((U8*)(ptr)+3)) )
/* Store value into a buffer in Little Endian format */
#define StoreLE16(buff,num) ( ((buff)[1] = (U8) ((num)>>8)), \
((buff)[0] = (U8) (num)) )
#define StoreLE32(buff,num) ( ((buff)[3] = (U8) ((num)>>24)), \
((buff)[2] = (U8) ((num)>>16)), \
((buff)[1] = (U8) ((num)>>8)), \
((buff)[0] = (U8) (num)) )
/* Store value into a buffer in Big Endian format */
#define StoreBE16(buff,num) ( ((buff)[0] = (U8) ((num)>>8)), \
((buff)[1] = (U8) (num)) )
#define StoreBE32(buff,num) ( ((buff)[0] = (U8) ((num)>>24)), \
((buff)[1] = (U8) ((num)>>16)), \
((buff)[2] = (U8) ((num)>>8)), \
((buff)[3] = (U8) (num)) )
#define LEtoHost16(ptr) (U16)(((U16) *((U8*)(ptr)+1) << 8) | \
(U16) *((U8*)(ptr)))
#define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
#define BDADDR_ALL (&(bdaddr_t) {{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}})
#define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}})
#define CTX_INIT(buff) \
POSSIBLY_UNUSED unsigned int __offset = 2; \
POSSIBLY_UNUSED unsigned char *__buff = buff;
#define CTX_STR_BUF(buff,len) \
memcpy(__buff+__offset, buff, len); \
__offset += len;
#define CTX_LDR_BUF(buff,len) \
memcpy(buff, __buff+__offset, len); \
__offset += len;
#define CTX_STR_VAL8(v) \
__buff[__offset] = v&0xFF; \
__offset += 1;
#define CTX_LDR_VAL8(v) \
v = __buff[__offset]; \
__offset += 1;
#define CTX_STR_VAL16(v) \
__buff[__offset] = v&0xFF; \
__buff[__offset+1] = (v>>8)&0xFF; \
__offset += 2;
#define CTX_LDR_VAL16(v) \
v = __buff[__offset]; \
v |= __buff[__offset+1]<<8; \
__offset += 2;
#define CTX_STR_VAL32(v) \
__buff[__offset] = v&0xFF; \
__buff[__offset+1] = (v>>8)&0xFF; \
__buff[__offset+2] = (v>>16)&0xFF; \
__buff[__offset+3] = (v>>24)&0xFF; \
__offset += 4;
#define CTX_LDR_VAL32(v) \
v = __buff[__offset]; \
v |= __buff[__offset+1]<<8; \
v |= __buff[__offset+2]<<16; \
v |= __buff[__offset+3]<<24; \
__offset += 4;
#define CTX_GET_BUF_CURR() __buff
#define CTX_GET_BUF_HEAD() __buff
#define CTX_GET_OFFSET() __offset
#define CTX_GET_DATA_LEN() (__buff[0] | __buff[1]<<8)
#define CTX_GET_TOTAL_LEN() (CTX_GET_DATA_LEN()+2)
#define CTX_SAVE_UPDATE_DATA_LEN() \
__buff[0] = (__offset-2)&0xFF; \
__buff[1] = ((__offset-2)>>8)&0xFF;
struct ctx_content {
uint8 *buff;
uint32 buff_len;
};
#endif /* __BTLIB_TYPE_H__ */