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

往期知识点记录:

总体

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;

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习资源,请看下图提示:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值