first
This commit is contained in:
43
include_lib/btstack/third_party/rcsp/JL_rcsp_api.h
vendored
Normal file
43
include_lib/btstack/third_party/rcsp/JL_rcsp_api.h
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
|
||||
#ifndef _JL_RCSP_LIB_API_H_
|
||||
#define _JL_RCSP_LIB_API_H_
|
||||
|
||||
#include "typedef.h"
|
||||
#include "uart.h"
|
||||
|
||||
#define USE_LITTLE_ENDIAN 0
|
||||
#define USE_BIG_ENDIAN 1
|
||||
|
||||
#define USE_ENDIAN_TYPE USE_LITTLE_ENDIAN
|
||||
|
||||
|
||||
#define AI_LICENCE_LEN 16
|
||||
|
||||
enum {
|
||||
TULING = 0,
|
||||
DEEPBRAIN,
|
||||
};
|
||||
|
||||
#pragma pack(1)
|
||||
struct _AI_platform {
|
||||
u8 platform;
|
||||
u8 license[AI_LICENCE_LEN];
|
||||
};
|
||||
#pragma pack()
|
||||
|
||||
u16 app_htons(u16 n);
|
||||
u16 app_ntohs(u16 n);
|
||||
|
||||
u32 app_htonl(u32 n);
|
||||
u32 app_ntohl(u32 n);
|
||||
|
||||
void JL_rcsp_auth_init(int (*send)(void *, u8 *, u16), u8 *link_key, u8 *addr);
|
||||
void JL_rcsp_auth_reset(void);
|
||||
u8 JL_rcsp_get_auth_flag(void);
|
||||
void JL_rcsp_set_auth_flag(u8 auth_flag);
|
||||
void JL_rcsp_auth_recieve(u8 *buffer, u16 len);
|
||||
|
||||
u8 get_rcsp_version(void);
|
||||
void get_ai_platform(struct _AI_platform *p, u8 platform);
|
||||
void smart_auth_res_pass(void);
|
||||
#endif //_JL_RCSP_LIB_H_
|
||||
102
include_lib/btstack/third_party/rcsp/JL_rcsp_packet.h
vendored
Normal file
102
include_lib/btstack/third_party/rcsp/JL_rcsp_packet.h
vendored
Normal file
@ -0,0 +1,102 @@
|
||||
#ifndef __JL_PACKET_H__
|
||||
#define __JL_PACKET_H__
|
||||
|
||||
#include "typedef.h"
|
||||
|
||||
|
||||
#define READ_BIG_U16(a) ((*((u8*)(a)) <<8) + *((u8*)(a)+1))
|
||||
#define READ_BIG_U32(a) ((*((u8*)(a)) <<24) + (*((u8*)(a)+1)<<16) + (*((u8*)(a)+2)<<8) + *((u8*)(a)+3))
|
||||
|
||||
#define READ_LIT_U16(a) (*((u8*)(a)) + (*((u8*)(a)+1)<<8))
|
||||
#define READ_LIT_U32(a) (*((u8*)(a)) + (*((u8*)(a)+1)<<8) + (*((u8*)(a)+2)<<16) + (*((u8*)(a)+3)<<24))
|
||||
|
||||
|
||||
#define WRITE_BIG_U16(a,src) {*((u8*)(a)+0) = (u8)(src>>8); *((u8*)(a)+1) = (u8)(src&0xff); }
|
||||
#define WRITE_BIG_U32(a,src) {*((u8*)(a)+0) = (u8)((src)>>24); *((u8*)(a)+1) = (u8)(((src)>>16)&0xff);*((u8*)(a)+2) = (u8)(((src)>>8)&0xff);*((u8*)(a)+3) = (u8)((src)&0xff);}
|
||||
|
||||
#define WRITE_LIT_U16(a,src) {*((u8*)(a)+1) = (u8)(src>>8); *((u8*)(a)+0) = (u8)(src&0xff); }
|
||||
#define WRITE_LIT_U32(a,src) {*((u8*)(a)+3) = (u8)((src)>>24); *((u8*)(a)+2) = (u8)(((src)>>16)&0xff);*((u8*)(a)+1) = (u8)(((src)>>8)&0xff);*((u8*)(a)+0) = (u8)((src)&0xff);}
|
||||
|
||||
|
||||
#pragma pack(1)
|
||||
typedef union __HEAD_BIT {
|
||||
struct {
|
||||
u16 _OpCode: 8; //OpCode val
|
||||
u16 _unsed : 6; //unsed
|
||||
u16 _resp : 1; //request for response
|
||||
u16 _type : 1; //command or response
|
||||
} _i;
|
||||
u16 _t;
|
||||
} HEAD_BIT;
|
||||
|
||||
struct __JL_PACKET {
|
||||
u8 tag[3];
|
||||
HEAD_BIT head;
|
||||
u16 length;
|
||||
u8 data[0];
|
||||
};
|
||||
#pragma pack()
|
||||
typedef struct __JL_PACKET JL_PACKET;
|
||||
|
||||
|
||||
#define JL_PACK_START_TAG0 (0xfe)
|
||||
#define JL_PACK_START_TAG1 (0xdc)
|
||||
#define JL_PACK_START_TAG2 (0xba)
|
||||
#define JL_PACK_END_TAG (0xef)
|
||||
#define JL_ONE_PACKET_LEN(n) (sizeof(JL_PACKET) + n + 1)
|
||||
|
||||
#ifdef JL_RCSP_UBOOT_LIB
|
||||
#define JL_MTU_RESV (540L)
|
||||
#define JL_MTU_SEND (128L)
|
||||
#define JL_RECIEVE_BUF_SIZE ((JL_MTU_RESV + sizeof(JL_PACKET))*2)
|
||||
#define JL_CMD_POOL_SIZE (JL_MTU_SEND)
|
||||
#define JL_RESP_POOL_SIZE (JL_MTU_SEND*2)
|
||||
#define JL_WAIT_RESP_POOL_SIZE (JL_MTU_SEND)
|
||||
#else
|
||||
#define JL_MTU_RESV (540L)
|
||||
#define JL_MTU_SEND (128L)
|
||||
#define JL_RECIEVE_BUF_SIZE (JL_MTU_RESV + sizeof(JL_PACKET) + 128)
|
||||
#define JL_CMD_POOL_SIZE (JL_MTU_SEND*4)
|
||||
#define JL_RESP_POOL_SIZE (JL_MTU_SEND*2)
|
||||
#define JL_WAIT_RESP_POOL_SIZE (JL_MTU_SEND*2)
|
||||
#endif
|
||||
|
||||
void set_jl_rcsp_recieve_buf_size(u16 size);
|
||||
u16 rcsp_packet_write_alloc_len(void);
|
||||
|
||||
u32 rcsp_packet_need_buf_size(void);
|
||||
u32 rcsp_packet_buf_init(u8 *buf, u32 len);
|
||||
|
||||
u16 JL_packet_get_rx_max_mtu(void);
|
||||
u16 JL_packet_get_tx_max_mtu(void);
|
||||
u16 JL_packet_set_mtu(u16 mtu);
|
||||
void JL_packet_recieve(void *buf, u16 len);
|
||||
u32 JL_pack_data_read_all(void *buf, u16 len);
|
||||
void JL_packet_clear_all_data(void);
|
||||
bool JL_packet_find(u8 *r_buf, JL_PACKET **packet);
|
||||
void JL_packet_init(void);
|
||||
void JL_packet_clear(void);
|
||||
|
||||
void JL_packet_packing(
|
||||
JL_PACKET *packet,
|
||||
u8 OpCode,
|
||||
u8 type,
|
||||
u8 request_rsp,
|
||||
u8 *extra_param,
|
||||
u16 extra_len,
|
||||
u8 *data,
|
||||
u16 len);
|
||||
|
||||
void set_jl_mtu_resv(u16 jl_mtu_resv_var);
|
||||
void set_jl_mtu_send(u16 jl_mtu_send_var);
|
||||
|
||||
extern u16 jl_mtu_resv;
|
||||
extern u16 jl_mtu_send;
|
||||
extern u16 jl_recieve_buf_size;
|
||||
extern u16 jl_cmd_pool_size;
|
||||
extern u16 jl_rcsp_pool_size;
|
||||
extern u16 jl_wait_rcsp_pool_size;
|
||||
|
||||
#endif//__JL_PACKET_H__
|
||||
|
||||
|
||||
217
include_lib/btstack/third_party/rcsp/JL_rcsp_protocol.h
vendored
Normal file
217
include_lib/btstack/third_party/rcsp/JL_rcsp_protocol.h
vendored
Normal file
@ -0,0 +1,217 @@
|
||||
#ifndef __JL_PROTOCOL_H__
|
||||
#define __JL_PROTOCOL_H__
|
||||
|
||||
#include "typedef.h"
|
||||
#include "JL_rcsp_packet.h"
|
||||
|
||||
#define ATTR_TYPE_PROTOCOL_VERSION (0)
|
||||
#define ATTR_TYPE_SYS_INFO (1)
|
||||
#define ATTR_TYPE_EDR_ADDR (2)
|
||||
#define ATTR_TYPE_PLATFORM (3)
|
||||
#define ATTR_TYPE_FUNCTION_INFO (4)
|
||||
#define ATTR_TYPE_DEV_VERSION (5)
|
||||
#define ATTR_TYPE_SDK_TYPE (6)
|
||||
#define ATTR_TYPE_UBOOT_VERSION (7)
|
||||
#define ATTR_TYPE_DOUBLE_PARITION (8)
|
||||
#define ATTR_TYPE_UPDATE_STATUS (9)
|
||||
#define ATTR_TYPE_DEV_VID_PID (10)
|
||||
#define ATTR_TYPE_DEV_AUTHKEY (11)
|
||||
#define ATTR_TYPE_DEV_PROCODE (12)
|
||||
#define ATTR_TYPE_DEV_MAX_MTU (13)
|
||||
#define ATTR_TEYP_BLE_ADDR (17)
|
||||
#define ATTR_TYPE_MD5_GAME_SUPPORT (19)
|
||||
|
||||
|
||||
|
||||
#define COMMON_INFO_ATTR_BATTERY (0)
|
||||
#define COMMON_INFO_ATTR_VOL (1)
|
||||
#define COMMON_INFO_ATTR_DEV (2)
|
||||
#define COMMON_INFO_ATTR_ERR_REPORT (3)
|
||||
#define COMMON_INFO_ATTR_EQ (4)
|
||||
#define COMMON_INFO_ATTR_FILE_BROWSE_TYPE (5)
|
||||
#define COMMON_INFO_ATTR_FUN_TYPE (6)
|
||||
#define COMMON_INFO_ATTR_LIGHT (7)
|
||||
#define COMMON_INFO_ATTR_FMTX (8)
|
||||
#define COMMON_INFO_ATTR_HIGH_LOW_SET (11)
|
||||
#define COMMON_INFO_ATTR_PRE_FETCH_ALL_EQ_INFO (12)
|
||||
#define COMMON_INFO_ATTR_ANC_VOICE (13)
|
||||
#define COMMON_INFO_ATTR_FETCH_ALL_ANC_VOICE (14)
|
||||
#define COMMON_INFO_ATTR_PHONE_SCO_STATE_INFO (15)
|
||||
#define COMMON_INFO_ATTR_ASSISTED_HEARING (20)
|
||||
#define COMMON_INFO_ATTR_ADAPTIVE_NOISE_REDUCTION (21)
|
||||
#define COMMON_INFO_ATTR_AI_NO_PICK (22)
|
||||
#define COMMON_INFO_ATTR_SCENE_NOISE_REDUCTION (23)
|
||||
#define COMMON_INFO_ATTR_WIND_NOISE_DETECTION (24)
|
||||
#define COMMON_INFO_ATTR_VOICE_ENHANCEMENT_MODE (25)
|
||||
|
||||
|
||||
|
||||
#define BT_INFO_ATTR_MUSIC_TITLE (0)
|
||||
#define BT_INFO_ATTR_MUSIC_ARTIST (1)
|
||||
#define BT_INFO_ATTR_MUSIC_ALBUM (2)
|
||||
#define BT_INFO_ATTR_MUSIC_NUMBER (3)
|
||||
#define BT_INFO_ATTR_MUSIC_TOTAL (4)
|
||||
#define BT_INFO_ATTR_MUSIC_GENRE (5)
|
||||
#define BT_INFO_ATTR_MUSIC_TIME (6)
|
||||
#define BT_INFO_ATTR_MUSIC_STATE (7)
|
||||
#define BT_INFO_ATTR_MUSIC_CURR_TIME (8)
|
||||
|
||||
#define BT_INFO_ATTR_01 (0)
|
||||
|
||||
#define MUSIC_INFO_ATTR_STATUS (0)
|
||||
#define MUSIC_INFO_ATTR_FILE_NAME (1)
|
||||
#define MUSIC_INFO_ATTR_FILE_PLAY_MODE (2)
|
||||
|
||||
#define RTC_INFO_ATTR_RTC_TIME (0)
|
||||
#define RTC_INFO_ATTR_RTC_ALRAM (1)
|
||||
|
||||
#define LINEIN_INFO_ATTR_STATUS (0)
|
||||
|
||||
|
||||
/***************************************/
|
||||
/* 注意:不能在这个枚举里加代码 */
|
||||
/* 注意:不能在这个枚举里加代码 */
|
||||
/* 注意:不能在这个枚举里加代码 */
|
||||
/***************************************/
|
||||
enum {
|
||||
JL_OPCODE_DATA = 0x01,
|
||||
JL_OPCODE_GET_TARGET_FEATURE_MAP = 0x02,
|
||||
JL_OPCODE_GET_TARGET_FEATURE = 0x03,
|
||||
// JL_OPCODE_SWITCH_DEVICE = 0x04,
|
||||
JL_OPCODE_DISCONNECT_EDR = 0x06,
|
||||
JL_OPCODE_SYS_INFO_GET = 0x07,
|
||||
JL_OPCODE_SYS_INFO_SET = 0x08,
|
||||
JL_OPCODE_SYS_INFO_AUTO_UPDATE = 0x09,
|
||||
JL_OPCODE_CALL_REQUEST = 0xa,
|
||||
JL_OPCODE_SWITCH_DEVICE = 0x0b,
|
||||
JL_OPCODE_FILE_BROWSE_REQUEST_START = 0x0C,
|
||||
JL_OPCODE_FILE_BROWSE_REQUEST_STOP = 0x0D,
|
||||
JL_OPCODE_FUNCTION_CMD = 0x0E,
|
||||
|
||||
JL_OPCODE_SYS_OPEN_BT_SCAN = 0x12,
|
||||
JL_OPCODE_SYS_UPDATE_BT_STATUS = 0X13,
|
||||
JL_OPCODE_SYS_STOP_BT_SCAN = 0X14,
|
||||
JL_OPCODE_SYS_BT_CONNECT_SPEC = 0X15,
|
||||
JL_OPCODE_SYS_EMITTER_BT_CONNECT_STATUS = 0XD3, // 临时调整, 被遗忘的指令
|
||||
JL_OPCODE_SYS_FIND_DEVICE = 0X19,
|
||||
|
||||
JL_OPCODE_EXTRA_FLASH_OPT = 0X1A,
|
||||
|
||||
//文件传输相关命令
|
||||
JL_OPCODE_FILE_TRANSFER_START = 0X1B,
|
||||
JL_OPCODE_FILE_TRANSFER_END = 0X1C,
|
||||
JL_OPCODE_FILE_TRANSFER = 0X1D,
|
||||
JL_OPCODE_FILE_TRANSFER_CANCEL = 0X1E,
|
||||
JL_OPCODE_FILE_DELETE = 0X1F,
|
||||
JL_OPCODE_FILE_RENAME = 0X20,
|
||||
|
||||
JL_OPCODE_ACTION_PREPARE = 0X21,//APP操作预处理
|
||||
JL_OPCODE_DEVICE_FORMAT = 0X22,//设备格式化
|
||||
JL_OPCODE_ONE_FILE_DELETE = 0x23,//删除一个文件
|
||||
JL_OPCODE_ONE_FILE_TRANS_BACK = 0x24,//回传一个文件
|
||||
JL_OPCODE_ALARM_EXTRA = 0x25,
|
||||
JL_OPCODE_FILE_BLUK_TRANSFER = 0x26,//批量大文件前准备
|
||||
JL_OPCODE_DEVICE_PARM_EXTRA = 0x27,//设备操作,如文件传输、文件删除、设备格式化参数扩展
|
||||
|
||||
JL_OPCODE_SIMPLE_FILE_TRANS = 0x28,
|
||||
|
||||
JL_OPCODE_SPORTS_DATA_INFO_GET = 0xA0,
|
||||
JL_OPCODE_SPORTS_DATA_INFO_SET = 0xA1,
|
||||
JL_OPCODE_SPORTS_DATA_INFO_AUTO_UPDATE = 0xA2,
|
||||
JL_OPCODE_SENSOR_LOG_DATA_AUTO_UPDATE = 0xA3,
|
||||
JL_OPCODE_SENSOR_NFC_FUNCTION_OPT = 0xA4,
|
||||
JL_OPCODE_SPORTS_DATA_INFO_OPT = 0xA5,
|
||||
JL_OPCODE_SPORTS_DATA_SYNC = 0xA6,
|
||||
|
||||
JL_OPCODE_NOTIFY_MTU = 0xD1,
|
||||
JL_OPCODE_GET_MD5 = 0xD4,
|
||||
JL_OPCODE_LOW_LATENCY_PARAM = 0xD5,
|
||||
JL_OPTCODE_EXTRA_FLASH_INFO = 0XD6,
|
||||
|
||||
JL_OPCODE_CUSTOMER_USER = 0xFF,
|
||||
};
|
||||
/***************************************/
|
||||
/***************************************/
|
||||
|
||||
enum {
|
||||
JL_NOT_NEED_RESPOND = 0,
|
||||
JL_NEED_RESPOND,
|
||||
};
|
||||
|
||||
enum {
|
||||
JL_AUTH_NOTPASS = 0,
|
||||
JL_AUTH_PASS,
|
||||
};
|
||||
|
||||
typedef enum __JL_ERR {
|
||||
JL_ERR_NONE = 0x0,
|
||||
JL_ERR_SEND_DATA_OVER_LIMIT,
|
||||
JL_ERR_SEND_BUSY,
|
||||
JL_ERR_SEND_NOT_READY,
|
||||
JL_ERR_EXIT,
|
||||
} JL_ERR;
|
||||
|
||||
typedef enum __JL_PRO_STATUS {
|
||||
JL_PRO_STATUS_SUCCESS = 0x0,
|
||||
JL_PRO_STATUS_FAIL,
|
||||
JL_PRO_STATUS_UNKOWN_CMD,
|
||||
JL_PRO_STATUS_BUSY,
|
||||
JL_PRO_STATUS_NO_RESPONSE,
|
||||
JL_PRO_STATUS_CRC_ERR,
|
||||
JL_PRO_STATUS_ALL_DATA_CRC_ERR,
|
||||
JL_PRO_STATUS_PARAM_ERR,
|
||||
JL_PRO_STATUS_RESP_DATA_OVER_LIMIT,
|
||||
|
||||
} JL_PRO_STATUS;
|
||||
|
||||
///*< JL_CMD、JL_CMD_response、JL_DATA、JL_DATA_response packet send functions>*/
|
||||
JL_ERR JL_CMD_send(u8 OpCode, u8 *data, u16 len, u8 request_rsp);
|
||||
JL_ERR JL_CMD_response_send(u8 OpCode, u8 status, u8 sn, u8 *data, u16 len);
|
||||
JL_ERR JL_DATA_send(u8 OpCode, u8 CMD_OpCode, u8 *data, u16 len, u8 request_rsp);
|
||||
JL_ERR JL_DATA_response_send(u8 OpCode, u8 status, u8 sn, u8 CMD_OpCode, u8 *data, u16 len);
|
||||
|
||||
///*<JL_CMD、JL_CMD_response、JL_DATA、JL_DATA_response recieve>*/
|
||||
typedef struct __JL_PRO_CB {
|
||||
/*send function callback, SPP or ble*/
|
||||
void *priv;
|
||||
bool (*fw_ready)(void *priv);
|
||||
s32(*fw_send)(void *priv, void *buf, u16 len);
|
||||
/*JL_CMD、JL_CMD_response、JL_DATA、JL_DATA_response packet recieve callback*/
|
||||
void (*CMD_resp)(void *priv, u8 OpCode, u8 OpCode_SN, u8 *data, u16 len);
|
||||
void (*DATA_resp)(void *priv, u8 OpCode_SN, u8 CMD_OpCode, u8 *data, u16 len);
|
||||
void (*CMD_no_resp)(void *priv, u8 OpCode, u8 *data, u16 len);
|
||||
void (*DATA_no_resp)(void *priv, u8 CMD_OpCode, u8 *data, u16 len);
|
||||
void (*CMD_recieve_resp)(void *priv, u8 OpCode, u8 status, u8 *data, u16 len);
|
||||
void (*DATA_recieve_resp)(void *priv, u8 status, u8 CMD_OpCode, u8 *data, u16 len);
|
||||
u8(*wait_resp_timeout)(void *priv, u8 OpCode, u8 counter);
|
||||
void (*auth_pass_callback)(void *priv);
|
||||
} JL_PRO_CB;
|
||||
|
||||
|
||||
extern u32 rcsp_fw_ready(void);
|
||||
extern u32 rcsp_protocol_need_buf_size(void);
|
||||
|
||||
extern void JL_protocol_init(u8 *buf, u32 len);
|
||||
extern void JL_protocol_exit(void);
|
||||
|
||||
extern void JL_protocol_dev_switch(const JL_PRO_CB *cb);
|
||||
|
||||
extern void JL_protocol_data_recieve(void *priv, void *buf, u16 len);
|
||||
extern void JL_protocol_resume(void);
|
||||
|
||||
extern void JL_protocol_process(void);
|
||||
|
||||
extern void set_auth_pass(u8 auth_pass);
|
||||
|
||||
extern void JL_set_cur_tick(u16 tick);
|
||||
|
||||
extern bool rcsp_send_list_is_empty(void);
|
||||
|
||||
|
||||
extern void JL_send_packet_process(void);
|
||||
extern void JL_recieve_packet_parse_process(void);
|
||||
|
||||
|
||||
#endif//__JL_PROTOCOL_H__
|
||||
|
||||
|
||||
15
include_lib/btstack/third_party/rcsp/attr.h
vendored
Normal file
15
include_lib/btstack/third_party/rcsp/attr.h
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
#ifndef __ATTR_H__
|
||||
#define __ATTR_H__
|
||||
#include "typedef.h"
|
||||
|
||||
typedef u32(*attr_get_func)(void *priv, u8 attr, u8 *buf, u16 buf_size, u32 offset);
|
||||
typedef void (*attr_set_func)(void *priv, u8 attr, u8 *data, u16 len);
|
||||
|
||||
u16 add_one_attr_huge(u8 *buf, u16 max_len, u8 offset, u8 type, u8 *data, u16 size);
|
||||
u8 add_one_attr(u8 *buf, u16 max_len, u8 offset, u8 type, u8 *data, u8 size);
|
||||
u8 add_one_attr_ex(u8 *buf, u16 max_len, u8 offset, u8 type, u8 *data, u8 size, u8 att_size);
|
||||
u8 add_one_attr_continue(u8 *buf, u16 max_len, u8 offset, u8 type, u8 *data, u8 size);
|
||||
u32 attr_get(void *priv, u8 *buf, u16 buf_size, const attr_get_func *func_tab, u8 attr_max, u32 mask);
|
||||
void attr_set(void *priv, u8 *data, u16 len, const attr_set_func *func_tab, u8 attr_max);
|
||||
|
||||
#endif//__ATTR_H__
|
||||
Reference in New Issue
Block a user