OpenHarmony之分布式软总线discovery_service.h头文件

65 阅读3分钟

总体

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"},
};

DD一下:欢迎大家关注公众号<程序猿百晓生>,可以了解到以下知识点。

`欢迎大家关注公众号<程序猿百晓生>,可以了解到以下知识点。`
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......

定义了设备类型

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;