往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录)
✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
✏️ 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
✏️ 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
✏️ 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
✏️ 记录一场鸿蒙开发岗位面试经历~
✏️ 持续更新中……
总体
discovery_service.h头文件提供与设备服务发布相关的功能,包括发布服务、取消发布服务、设置设备参数。当发现附近的多个设备并将其联网后,可以使用这些接口进行业务发布的相关操作。
枚举服务分布的媒介。
typedef enum {
/** Automatic medium selection */
AUTO = 0,
/** Bluetooth */
BLE = 1,
/** Wi-Fi */
COAP = 2,
/** USB */
USB = 3,
} ExchangeMedium;
服务发布的频率
typedef enum {
/** Low */
LOW = 0,
/** Medium */
MID = 1,
/** High */
HIGH = 2,
/** Super-high */
SUPER_HIGH = 3,
} ExchangeFreq;
服务发布模式(被动、主动)
typedef enum {
DISCOVER_MODE_PASSIVE = 0x55,
DISCOVER_MODE_ACTIVE = 0xAA
} DiscoverMode;
声明PublishInfo 表示发布信息
typedef struct PublishInfo {
int publishId; //发布ID
int mode; // 发布模式
ExchangeMedium medium; //发布媒介
ExchangeFreq freq; // 发布频率
const char *capability; // 功能
unsigned char *capabilityData; //功能数据
unsigned int dataLen; //数据长度
} PublishInfo;
PublishFailReason 为发布失败的原因。发布失败的原因在发布失败后,会在发布失败回调函数输出原因
typedef enum {
PUBLISH_FAIL_REASON_NOT_SUPPORT_MEDIUM = 1,
PUBLISH_FAIL_REASON_PARAMETER_INVALID = 2,
PUBLISH_FAIL_REASON_UNKNOWN = 0xFF
} PublishFailReason;
DataBitMap 为设备发布支持的功能
typedef enum {
HICALL_CAPABILITY_BITMAP = 0,
PROFILE_CAPABILITY_BITMAP = 1,
HOMEVISIONPIC_CAPABILITY_BITMAP = 2,
CASTPLUS_CAPABILITY_BITMAP,
AA_CAPABILITY_BITMAP,
DVKIT_CAPABILITY_BITMAP,
DDMP_CAPABILITY_BITMAP
} DataBitMap;
定义了支持的功能和位图之间的映射。
typedef struct {
DataBitMap bitmap;
char *capability;
} CapabilityMap;
static const CapabilityMap g_capabilityMap[] = {
{HICALL_CAPABILITY_BITMAP, (char *)"hicall"},
{PROFILE_CAPABILITY_BITMAP, (char *)"profile"},
{CASTPLUS_CAPABILITY_BITMAP, (char *)"castPlus"},
{HOMEVISIONPIC_CAPABILITY_BITMAP, (char *)"homevisionPic"},
{AA_CAPABILITY_BITMAP, (char *)"aaCapability"},
{DVKIT_CAPABILITY_BITMAP, (char *)"dvKit"},
{DDMP_CAPABILITY_BITMAP, (char *)"ddmpCapability"},
};
定义了设备类型
typedef enum DeviceTypeEnum {
UNKOWN = 0x00,
PHONE = 0x0E,
PAD = 0x11,
TV = 0x9C,
PC = 0x0C,
AUDIO = 0x0A,
CAR = 0x83,
L0 = 0xF1,
L1 = 0xF2,
} DeviceType;
定义设备类型枚举和设备类型名称之间的映射
typedef struct {
char *value;
DeviceType devType;
} DeviceMap;
static const DeviceMap g_devMap[] = {
{(char *)"PHONE", PHONE},
{(char *)"PAD", PAD},
{(char *)"TV", TV},
{(char *)"PC", PC},
{(char *)"AUDIO", AUDIO},
{(char *)"CAR", CAR},
{(char *)"L0", L0},
{(char *)"L1", L1}
};
发布回掉函数(成功,失败)
typedef struct IPublishCallback {
void (*onPublishSuccess)(int publishId);
void (*onPublishFail)(int publishId, PublishFailReason reason);
} IPublishCallback;
枚举设备信息,如其标识、类型和名称。
typedef enum {
COMM_DEVICE_KEY_DEVID = 0, //id
COMM_DEVICE_KEY_DEVTYPE = 1, //type
COMM_DEVICE_KEY_DEVNAME = 2, //name
COMM_DEVICE_KEY_MAX
} CommonDeviceKey;
定义要设置的设备的类型和内容
typedef struct CommonDeviceInfo {
CommonDeviceKey key;
const char *value;
} CommonDeviceInfo;