往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录)
✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
✏️ 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
✏️ 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
✏️ 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
✏️ 记录一场鸿蒙开发岗位面试经历~
✏️ 持续更新中……
nstackx_device.c 定义了配置与更新设备信息,以及注册设备能力和服务数据。
(一)设备信息结构
首先,在头文件nstackx.h中声明了远端与本地设备信息。
远端设备信息:
//远端设备信息
typedef struct NSTACKX_DeviceInfo {
char deviceId[NSTACKX_MAX_DEVICE_ID_LEN]; //设备ID
char deviceName[NSTACKX_MAX_DEVICE_NAME_LEN]; //设备名
uint32_t capabilityBitmapNum; //功能位图数量
uint32_t capabilityBitmap[NSTACKX_MAX_CAPABILITY_NUM]; //功能位图
uint8_t deviceType; //设备类型
char version[NSTACKX_MAX_HICOM_VERSION]; //版本
char reservedInfo[NSTACKX_MAX_RESERVED_INFO_LEN]; //保留信息
} NSTACKX_DeviceInfo;
本地设备信息
//本地设备信息
typedef struct {
char name[NSTACKX_MAX_DEVICE_NAME_LEN]; //设备名
char deviceId[NSTACKX_MAX_DEVICE_ID_LEN]; // 设备id
char btMacAddr[NSTACKX_MAX_MAC_STRING_LEN]; //蓝牙mac 地址
char wifiMacAddr[NSTACKX_MAX_MAC_STRING_LEN]; //wifi mac 地址
char networkIpAddr[NSTACKX_MAX_IP_STRING_LEN]; // ip地址
char networkName[NSTACKX_MAX_INTERFACE_NAME_LEN]; // 网络名
uint8_t is5GHzBandSupported; //是否支持5G
int deviceType; //设备类型
char version[NSTACKX_MAX_HICOM_VERSION]; //版本
} NSTACKX_LocalDeviceInfo;
在nstackx_device.h头文件中,声明设备信息结构体
typedef struct DeviceInfo {
char deviceName[NSTACKX_MAX_DEVICE_NAME_LEN]; //设备名
char deviceId[NSTACKX_MAX_DEVICE_ID_LEN]; // 设备ID
int deviceType; //设备类型
uint16_t portNumber; //端口号
NetChannelInfo netChannelInfo; //网络通道信息
/* Capability data */
uint32_t capabilityBitmapNum; // 功能位图数量
uint32_t capabilityBitmap[NSTACKX_MAX_CAPABILITY_NUM]; //功能位图
char version[NSTACKX_MAX_HICOM_VERSION]; // 版本
uint8_t mode;
char deviceHash[DEVICE_HASH_LEN]; //设备哈希值
char serviceData[NSTACKX_MAX_SERVICE_DATA_LEN]; //设备提供服务的数据
} DeviceInfo;
(二)设置与获取设备信息
在nstackx_device.h头文件中声明了设置、获取设备信息以及注册设备功能与服务数据。
//设置设备哈希值
void SetDeviceHash(uint64_t deviceHash);
//清楚本地设备信息
void ClearLocalData(void);
//配置本地设备信息
int ConfigureLocalDeviceInfo(const NSTACKX_LocalDeviceInfo *localDeviceInfo);
//更新本地本地网络接口
int UpdateLocalNetworkInterface(const NetworkInterfaceInfo *interfaceInfo);
//获取本地设备信息
const DeviceInfo *GetLocalDeviceInfo(void);
//是否接入到无线
uint8_t IsWifiApConnected(void);
//获取ip的点分十进制表示
int GetLocalIpString(char *ipString, size_t length);
//获取本地接口名
int GetLocalInterfaceName(char *ifName, size_t ifNameLength);
//注册设备功能
int RegisterCapability(uint32_t capabilityBitmapNum, const uint32_t capabilityBitmap[]);
//注册设备服务数据
int RegisterServiceData(const char* serviceData, int length);