跳转至

sle_common

SLE (Star Flash Low Energy) 提供星闪短距通信协议的公共类型定义与错误码,包括设备地址、链路类型、连接信息等数据结构。该模块同时定义 SLE 通用错误码和 SSAP (Service and Application Protocol) 协议错误码。

头文件清单

#include "middleware/services/bts/sle/sle_common.h"
#include "middleware/services/bts/sle/sle_errcode.h"

Enumerations

sle_addr_type_t

typedef enum {
    SLE_ADDRESS_TYPE_PUBLIC = 0,      /*!< 公有地址 */
    SLE_ADDRESS_TYPE_RANDOM = 6,      /*!< 随机地址 */
} sle_addr_type_t;
枚举成员 取值 描述
SLE_ADDRESS_TYPE_PUBLIC 0 公有地址
SLE_ADDRESS_TYPE_RANDOM 6 随机地址
typedef enum {
    SLE_ASYNCHRONOUS_CONNECTION = 0x00,     /*!< 异步链路 */
    SLE_SYNCHRONIZATION_CONNECTION = 0x01,  /*!< 同步链路 */
} sle_link_type_t;
枚举成员 取值 描述
SLE_ASYNCHRONOUS_CONNECTION 0x00 异步链路
SLE_SYNCHRONIZATION_CONNECTION 0x01 同步链路

errcode_sle_t

typedef enum {
    ERRCODE_SLE_SUCCESS = 0,                               /*!< 执行成功 */
    ERRCODE_SLE_CONTINUE = ERRCODE_SLE_COMMON_BASE,        /*!< 继续执行 */
    ERRCODE_SLE_DIRECT_RETURN,                             /*!< 直接返回 */
    ERRCODE_SLE_NO_ATTATION,                               /*!< 错误码 */
    ERRCODE_SLE_PARAM_ERR,                                 /*!< 参数错误 */
    ERRCODE_SLE_FAIL,                                      /*!< 配置失败 */
    ERRCODE_SLE_TIMEOUT,                                   /*!< 配置超时 */
    ERRCODE_SLE_UNSUPPORTED,                               /*!< 参数不支持 */
    ERRCODE_SLE_GETRECORD_FAIL,                            /*!< 获取当前记录失败 */
    ERRCODE_SLE_POINTER_NULL,                              /*!< 指针为空 */
    ERRCODE_SLE_NO_RECORD,                                 /*!< 无记录返回 */
    ERRCODE_SLE_STATUS_ERR,                                /*!< 状态错误 */
    ERRCODE_SLE_NOMEM,                                     /*!< 内存不足 */
    ERRCODE_SLE_AUTH_FAIL,                                 /*!< 认证失败 */
    ERRCODE_SLE_AUTH_PKEY_MISS,                            /*!< PIN码或密钥丢失致认证失败 */
    ERRCODE_SLE_RMT_DEV_DOWN,                              /*!< 对端设备关闭 */
    ERRCODE_SLE_PAIRING_REJECT,                            /*!< 配对拒绝 */
    ERRCODE_SLE_BUSY,                                      /*!< 系统繁忙 */
    ERRCODE_SLE_NOT_READY,                                 /*!< 系统未准备好 */
    ERRCODE_SLE_CONN_FAIL,                                 /*!< 连接失败 */
    ERRCODE_SLE_OUT_OF_RANGE,                              /*!< 越界 */
    ERRCODE_SLE_MEMCPY_FAIL,                               /*!< 拷贝失败 */
    ERRCODE_SLE_MALLOC_FAIL,                               /*!< 内存申请失败 */
    ERRCODE_SLE_CONN_EXIST,                                /*!< 对已经存在连接的设备创建链接 */
    ERRCODE_SLE_MAX = ERRCODE_SLE_COMMON_END               /*!< SLE错误码最大值 */
} errcode_sle_t;
枚举成员 取值 描述
ERRCODE_SLE_SUCCESS 0 执行成功
ERRCODE_SLE_CONTINUE 0x80006000 继续执行
ERRCODE_SLE_DIRECT_RETURN 0x80006001 直接返回
ERRCODE_SLE_NO_ATTATION 0x80006002 错误码
ERRCODE_SLE_PARAM_ERR 0x80006003 参数错误
ERRCODE_SLE_FAIL 0x80006004 配置失败
ERRCODE_SLE_TIMEOUT 0x80006005 配置超时
ERRCODE_SLE_UNSUPPORTED 0x80006006 参数不支持
ERRCODE_SLE_GETRECORD_FAIL 0x80006007 获取当前记录失败
ERRCODE_SLE_POINTER_NULL 0x80006008 指针为空
ERRCODE_SLE_NO_RECORD 0x80006009 无记录返回
ERRCODE_SLE_STATUS_ERR 0x8000600A 状态错误
ERRCODE_SLE_NOMEM 0x8000600B 内存不足
ERRCODE_SLE_AUTH_FAIL 0x8000600C 认证失败
ERRCODE_SLE_AUTH_PKEY_MISS 0x8000600D PIN码或密钥丢失致认证失败
ERRCODE_SLE_RMT_DEV_DOWN 0x8000600E 对端设备关闭
ERRCODE_SLE_PAIRING_REJECT 0x8000600F 配对拒绝
ERRCODE_SLE_BUSY 0x80006010 系统繁忙
ERRCODE_SLE_NOT_READY 0x80006011 系统未准备好
ERRCODE_SLE_CONN_FAIL 0x80006012 连接失败
ERRCODE_SLE_OUT_OF_RANGE 0x80006013 越界
ERRCODE_SLE_MEMCPY_FAIL 0x80006014 拷贝失败
ERRCODE_SLE_MALLOC_FAIL 0x80006015 内存申请失败
ERRCODE_SLE_CONN_EXIST 0x80006016 对已经存在连接的设备创建链接
ERRCODE_SLE_MAX 0x800067FF SLE错误码最大值

errcode_sle_ssap_t

typedef enum {
    ERRCODE_SSAP_INVALID_PDU = ERRCODE_SLE_SSAP_BASE + 0x01,                      /*!< 服务端接收的PDU无效 */
    ERRCODE_SSAP_PDU_NOT_SUPPORT = ERRCODE_SLE_SSAP_BASE + 0x02,                  /*!< 服务端不支持处理接收的PDU */
    ERRCODE_SSAP_UNKNOW = ERRCODE_SLE_SSAP_BASE + 0x03,                           /*!< 服务端执行请求时发生未知错误 */
    ERRCODE_SSAP_INVALID_HANDLE = ERRCODE_SLE_SSAP_BASE + 0x04,                   /*!< 请求中的句柄无效 */
    ERRCODE_SSAP_INSUFFICIENT_RESOURCES = ERRCODE_SLE_SSAP_BASE + 0x05,           /*!< 服务端没有足够资源完成请求 */
    ERRCODE_SSAP_PROHIBIT_READING = ERRCODE_SLE_SSAP_BASE + 0x06,                 /*!< 服务端禁止客户端读取值 */
    ERRCODE_SSAP_PROHIBIT_WRITE = ERRCODE_SLE_SSAP_BASE + 0x07,                   /*!< 服务端禁止客户端写入值 */
    ERRCODE_SSAP_CLIENT_NOT_AUTHENTICATED = ERRCODE_SLE_SSAP_BASE + 0x08,         /*!< 客户端未经过认证 */
    ERRCODE_SSAP_CLIENT_NOT_AUTHORIZATION = ERRCODE_SLE_SSAP_BASE + 0x09,         /*!< 客户端未被授权 */
    ERRCODE_SSAP_BEARER_NOT_ENCRYPTED = ERRCODE_SLE_SSAP_BASE + 0x0A,             /*!< 传输PDU的承载未加密 */
    ERRCODE_SSAP_ENTRIES_NOT_FOUND = ERRCODE_SLE_SSAP_BASE + 0x0B,                /*!< 服务端未找到对应条目 */
    ERRCODE_SSAP_INVALID_METHOD_CALL = ERRCODE_SLE_SSAP_BASE + 0x0C,              /*!< 方法访问错误 */
    ERRCODE_SSAP_INCORRECT_DATA_TYPE = ERRCODE_SLE_SSAP_BASE + 0x0D,              /*!< 客户端发送写入数据类型不符 */
    ERRCODE_SSAP_INCORRECT_DATA_VALUE_LENGTH = ERRCODE_SLE_SSAP_BASE + 0x0E,      /*!< 客户端发送写入值长度不符 */
    ERRCODE_SSAP_VALUE_OUT_OF_RANGE = ERRCODE_SLE_SSAP_BASE + 0x0F,               /*!< 客户端写入的值超出范围 */
    ERRCODE_SSAP_SUBCONTRACT_NOT_SUPPORT = ERRCODE_SLE_SSAP_BASE + 0x10,          /*!< 服务端不支持信令的分包发送 */
    ERRCODE_SSAP_ATTRIBUTE_NUM_OVER_LIMIT = ERRCODE_SLE_SSAP_BASE + 0x11,         /*!< 请求数量超出服务端的支持能力 */
    ERRCODE_SSAP_FRAGMENT_NUMBER_NOT_SUPPORT = ERRCODE_SLE_SSAP_BASE + 0x12,      /*!< 服务端不支持信令分片序号功能 */
    ERRCODE_SSAP_SUBCONTRACT_NOT_FULLY_RECEIVE = ERRCODE_SLE_SSAP_BASE + 0x13,    /*!< 服务端未接收所有分包 */
    ERRCODE_SSAP_TRANSACTION_NUM_NOT_SUPPORT = ERRCODE_SLE_SSAP_BASE + 0x14,      /*!< 服务端不支持消息事务号 */
    ERRCODE_SSAP_RELIABLE_MODE_NOT_SUPPORT = ERRCODE_SLE_SSAP_BASE + 0x15,        /*!< 服务端不支持可靠模式 */
    ERRCODE_SSAP_UPPERLAYER_APPLICATION_ERROR_MIN = ERRCODE_SLE_SSAP_BASE + 0xAF, /*!< 预留给上层协议定义应用错误 */
    ERRCODE_SSAP_UPPERLAYER_APPLICATION_ERROR_MAX = ERRCODE_SLE_SSAP_BASE + 0xFF, /*!< 预留给上层协议定义应用错误 */
} errcode_sle_ssap_t;
枚举成员 取值 描述
ERRCODE_SSAP_INVALID_PDU 0x80006101 服务端接收的PDU无效
ERRCODE_SSAP_PDU_NOT_SUPPORT 0x80006102 服务端不支持处理接收的PDU
ERRCODE_SSAP_UNKNOW 0x80006103 服务端执行请求时发生未知错误
ERRCODE_SSAP_INVALID_HANDLE 0x80006104 请求中的句柄无效
ERRCODE_SSAP_INSUFFICIENT_RESOURCES 0x80006105 服务端没有足够资源完成请求
ERRCODE_SSAP_PROHIBIT_READING 0x80006106 服务端禁止客户端读取值
ERRCODE_SSAP_PROHIBIT_WRITE 0x80006107 服务端禁止客户端写入值
ERRCODE_SSAP_CLIENT_NOT_AUTHENTICATED 0x80006108 客户端未经过认证
ERRCODE_SSAP_CLIENT_NOT_AUTHORIZATION 0x80006109 客户端未被授权
ERRCODE_SSAP_BEARER_NOT_ENCRYPTED 0x8000610A 传输PDU的承载未加密
ERRCODE_SSAP_ENTRIES_NOT_FOUND 0x8000610B 服务端未找到对应条目
ERRCODE_SSAP_INVALID_METHOD_CALL 0x8000610C 方法访问错误
ERRCODE_SSAP_INCORRECT_DATA_TYPE 0x8000610D 客户端发送写入数据类型不符
ERRCODE_SSAP_INCORRECT_DATA_VALUE_LENGTH 0x8000610E 客户端发送写入值长度不符
ERRCODE_SSAP_VALUE_OUT_OF_RANGE 0x8000610F 客户端写入的值超出范围
ERRCODE_SSAP_SUBCONTRACT_NOT_SUPPORT 0x80006110 服务端不支持信令的分包发送
ERRCODE_SSAP_ATTRIBUTE_NUM_OVER_LIMIT 0x80006111 请求数量超出服务端的支持能力
ERRCODE_SSAP_FRAGMENT_NUMBER_NOT_SUPPORT 0x80006112 服务端不支持信令分片序号功能
ERRCODE_SSAP_SUBCONTRACT_NOT_FULLY_RECEIVE 0x80006113 服务端未接收所有分包
ERRCODE_SSAP_TRANSACTION_NUM_NOT_SUPPORT 0x80006114 服务端不支持消息事务号
ERRCODE_SSAP_RELIABLE_MODE_NOT_SUPPORT 0x80006115 服务端不支持可靠模式
ERRCODE_SSAP_UPPERLAYER_APPLICATION_ERROR_MIN 0x800061AF 预留给上层协议定义应用错误
ERRCODE_SSAP_UPPERLAYER_APPLICATION_ERROR_MAX 0x800061FF 预留给上层协议定义应用错误

Structures

sle_addr_t

typedef struct {
    uint8_t type;                         /*!< SLE设备地址类型 */
    unsigned char addr[SLE_ADDR_LEN];     /*!< SLE设备地址 */
} sle_addr_t;

成员说明

成员名称 数据类型 描述
type uint8_t SLE设备地址类型
addr unsigned char[SLE_ADDR_LEN] SLE设备地址

sle_conn_info_t

typedef struct {
    uint8_t link_type;          /*!< 链路类型 */
    union {
        uint16_t conn_id;       /*!< 连接ID */
        struct {
            uint8_t conn_type;  /*!< 同步链路类型 */
            uint8_t group_id;   /*!< 同步链路组ID */
            uint16_t conn_id;   /*!< 连接ID */
            uint8_t member_id;  /*!< 同步链路的成员ID */
        } iso_conn_info;
    };
} sle_conn_info_t;

成员说明

成员名称 数据类型 描述
link_type uint8_t 链路类型
conn_id uint16_t 连接ID(异步链路时有效)
iso_conn_info struct 同步链路连接信息(同步链路时有效),包含conn_type、group_id、conn_id、member_id成员

Macros

SLE_ADDR_LEN

#define SLE_ADDR_LEN        6

SLE_NAME_MAX_LEN

#define SLE_NAME_MAX_LEN    31
#define SLE_LINK_KEY_LEN    16

SLE_CHANNEL_MAP_LEN

#define SLE_CHANNEL_MAP_LEN 10

SLE_STANDARD_FEATURES_LEN

#define SLE_STANDARD_FEATURES_LEN 10

SLE_PRIVATE_FEATURES_LEN

#define SLE_PRIVATE_FEATURES_LEN 16

ERRCODE_SLE_COMMON_BASE

#define ERRCODE_SLE_COMMON_BASE 0x80006000

ERRCODE_SLE_SSAP_BASE

#define ERRCODE_SLE_SSAP_BASE   0x80006100

ERRCODE_SLE_SSAP_END

#define ERRCODE_SLE_SSAP_END    0x800061FF

ERRCODE_SLE_SAF_BASE

#define ERRCODE_SLE_SAF_BASE   0x80006200

ERRCODE_SLE_SAF_END

#define ERRCODE_SLE_SAF_END   0x8000644F

ERRCODE_SLE_COMMON_END

#define ERRCODE_SLE_COMMON_END  0x800067FF