精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

小熊派添加自定義JS API接口流程(以點亮LED為例)

原創
系統 OpenHarmony
本文便介紹了如何自定義JS API從而調用自己開發的驅動。

??想了解更多內容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區??

??https://harmonyos.51cto.com??

一、前言

之前我們開發了小熊派的LED燈驅動,并且編寫了相應的代碼調用自己的開發驅動,但是自己寫的代碼只能在終端以命令的形式調用,顯然這樣十分的不太友好。假設小熊派是我們的一個智能設備,這個LED是我們的手電筒,通過命令行的形式打開手電筒肯定不是我們所期待的,我們更希望能夠在圖像界面上點一個按鈕從而打開我們的手電筒,而目前OpenHarmony大多數采用JS開發應用,如果我們想要在圖形界面上打開我們的手電筒,就需要自己定義一個JS的API接口來調用我們的LED。本文便介紹了如何自定義JS API從而調用自己開發的驅動。

二、流程總覽

添加JS API接口–>編寫接口代碼–>配置HDF頭文件路徑–>添加編譯依賴

三、添加JS API接口

打開文件foundation\ace\ace_engine_lite\frameworks\src\core\modules\app_module.h,在32行處添加如下代碼

static JSIValue ToggleLed(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum);

如圖所示

在65行處添加如下代碼

JSI::SetModuleAPI(exports, "ledcontrol", AppModule::ToggleLed);

四、編寫對應的驅動代碼

打開foundation\ace\ace_engine_lite\frameworks\src\core\modules\app_module.cpp文件,需要在兩個位置添加我們自己API的代碼

4.1添加頭文件

在頭文件導入處添加如下頭文件

#include "hdf_sbuf.h"
#include "hdf_io_service_if.h"

#define LED_WRITE_READ 1
#define LED_SERVICE "hdf_led"

如圖所示

4.2添加API的代碼

在適當位置加入以下代碼,建議在JSIValue AppModule::GetInfo函數之前

static int OnDevEventReceived(void *priv, uint32_t id, struct HdfSBuf *data)
{
uint32_t value;
HdfSbufReadUint32(data, &value);
HILOG_ERROR(HILOG_MODULE_ACE,"%s: dev event received: %u %u\n", (char *)priv, id, value);

return HDF_SUCCESS;
}

static int GpioWriteRead(struct HdfIoService *serv, int32_t eventData, int32_t *val)
{
int ret = HDF_FAILURE;
struct HdfSBuf *data = HdfSBufObtainDefaultSize();
struct HdfSBuf *reply = HdfSBufObtainDefaultSize();

if (data == NULL || reply == NULL) {
HILOG_ERROR(HILOG_MODULE_ACE,"fail to obtain sbuf data\n");
return ret;
}

if (!HdfSbufWriteUint8(data, (uint8_t)eventData))
{
HILOG_ERROR(HILOG_MODULE_ACE,"fail to write sbuf\n");
HdfSBufRecycle(data);
HdfSBufRecycle(reply);
return ret;
}

ret = serv->dispatcher->Dispatch(&serv->object, LED_WRITE_READ, data, reply);
if (ret != HDF_SUCCESS)
{
HILOG_ERROR(HILOG_MODULE_ACE,"fail to send service call\n");
HdfSBufRecycle(data);
HdfSBufRecycle(reply);
return ret;
}
if (!HdfSbufReadInt32(reply, val))
{
HILOG_ERROR(HILOG_MODULE_ACE,"fail to get service call reply\n");
ret = HDF_ERR_INVALID_OBJECT;
HdfSBufRecycle(data);
HdfSBufRecycle(reply);
return ret;
}
HILOG_ERROR(HILOG_MODULE_ACE,"Get reply is: %d\n", val);

HdfSBufRecycle(data);
HdfSBufRecycle(reply);
return ret;
}

JSIValue AppModule::ToggleLed(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum)
{
HILOG_ERROR(HILOG_MODULE_ACE, "led button pressed.");

struct HdfIoService *serv = HdfIoServiceBind(LED_SERVICE);
if (serv == NULL)
{
HILOG_ERROR(HILOG_MODULE_ACE,"fail to get service2 %s\n", LED_SERVICE);
return JSI::CreateUndefined();
}

if ((args == nullptr) || (argsNum == 0) || (JSI::ValueIsUndefined(args[0]))) {
return JSI::CreateUndefined();
}

JSIValue success = JSI::GetNamedProperty(args[0], CB_SUCCESS);
JSIValue fail = JSI::GetNamedProperty(args[0], CB_FAIL);
JSIValue complete = JSI::GetNamedProperty(args[0], CB_COMPLETE);

int32_t num = (int32_t)JSI::GetNumberProperty(args[0], "code");

int32_t replyData = 0;

if (GpioWriteRead(serv, num, &replyData))
{
HILOG_ERROR(HILOG_MODULE_ACE,"fail to send event\n");
JSI::CallFunction(fail, thisVal, nullptr, 0);
JSI::CallFunction(complete, thisVal, nullptr, 0);
JSI::ReleaseValueList(success, fail, complete);
return JSI::CreateUndefined();
}

JSIValue result = JSI::CreateObject();
JSI::SetNumberProperty(result, "led_status", replyData);

JSIValue argv[ARGC_ONE] = {result};
JSI::CallFunction(success, thisVal, argv, ARGC_ONE);
JSI::CallFunction(complete, thisVal, nullptr, 0);
JSI::ReleaseValueList(success, fail, complete, result);

HdfIoServiceRecycle(serv);

return JSI::CreateUndefined();
}

代碼推薦添加位置如圖所示

五、配置HDF頭文件路徑

打開foundation\ace\ace_engine_lite\ace_lite.gni文件,在大約80行處添加如下配置

ace_lite_include_dirs += [
"http://drivers/framework/ability/sbuf/include",
"http://drivers/framework/include/core",
"http://drivers/framework/include/utils",
"http://drivers/adapter/uhdf/posix/include",
]

![](C:\Users\33124\Desktop\博客素材\小熊派開發JS API\HDF配置.png)

六、添加編譯依賴

打開foundation\ace\ace_engine_lite\frameworks\BUILD.gn,在public_deps中添加以下代碼

"http://drivers/adapter/uhdf/manager:hdf_core",

打開foundation\ace\ace_engine_lite\test\ace_test_config.gni,在extra_deps中添加以下代碼

"http://drivers/adapter/uhdf/manager:hdf_core",

??想了解更多內容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區??

??https://harmonyos.51cto.com??


責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2022-02-25 14:33:03

JS接口鴻蒙應用開發

2022-02-14 14:28:57

驅動開發鴻蒙系統

2022-02-16 15:55:21

驅動調用操作系統鴻蒙

2019-09-06 14:51:40

Python數據庫腳本語言

2015-02-12 15:33:43

微信SDK

2016-12-20 12:34:46

存儲MySQL流程

2015-02-12 15:38:26

微信SDK

2009-07-22 15:27:39

ASP.NET MVC自定義路由

2013-01-10 09:36:19

NagiosNagios插件

2013-04-10 18:40:59

微信公眾平臺接口開發

2022-02-21 15:16:30

HarmonyOS鴻蒙操作系統

2021-09-15 10:19:15

鴻蒙HarmonyOS應用

2021-12-30 16:12:07

鴻蒙HarmonyOS應用

2011-10-21 09:11:41

百度地圖API

2020-06-08 10:05:09

云計算云平臺

2022-02-16 15:25:31

JS代碼Canvas鴻蒙

2022-02-16 16:09:12

鴻蒙游戲操作系統

2021-11-01 10:21:36

鴻蒙HarmonyOS應用

2021-11-01 17:31:21

Camera2 相機開發

2021-08-02 09:50:47

Vetur源碼SMART
點贊
收藏

51CTO技術棧公眾號

一区精品在线播放| 在线精品在线| 欧美军同video69gay| 久久av秘一区二区三区| 国产乱淫av片免费| 影音先锋久久久| 亚洲小视频在线观看| 国内自拍第二页| www.综合| 国产精品麻豆欧美日韩ww| 51精品国产人成在线观看| 久草国产精品视频| 亚洲大全视频| 国产亚洲激情视频在线| 国产乱淫av麻豆国产免费| 不卡一二三区| 亚洲伊人色欲综合网| 色播五月综合| 欧美熟妇另类久久久久久不卡 | 成人国产精品视频| 国产精品高清网站| 成人免费区一区二区三区| 亚洲成人av| 在线观看精品国产视频| 亚洲黄色在线网站| 日韩三级久久| 欧美日韩高清影院| 成人羞羞国产免费网站| 人妖欧美1区| 中文字幕制服丝袜一区二区三区| 玖玖玖精品中文字幕| 亚洲精品中文字幕成人片 | 亚洲一级Av无码毛片久久精品| 草莓视频成人appios| 天天爽夜夜爽夜夜爽精品视频| 亚洲av首页在线| 中文字幕在线播放| 国产日韩欧美一区二区三区综合| 久久99精品久久久水蜜桃| 亚洲精品久久久久久久久久久久久久| 精品一区二区三区不卡| 国产精品99久久久久久白浆小说| 好吊妞视频一区二区三区| 亚洲视屏一区| 久久免费国产视频| 国产精品对白一区二区三区| 日韩精品一区二区亚洲av性色 | 正义之心1992免费观看全集完整版| 日韩在线一区二区三区四区| 国产精品12区| 亚洲qvod图片区电影| 亚洲专区第一页| 蜜臀av性久久久久蜜臀aⅴ流畅| 人人爽久久涩噜噜噜网站| 日韩精品一区二区三区国语自制| 国产综合自拍| 97在线看福利| 欧美日韩乱国产| 亚洲一级在线| 日本欧美一级片| 中文字幕精品无| 全国精品久久少妇| 成人国产亚洲精品a区天堂华泰| 精品乱码一区内射人妻无码| 日本大胆欧美人术艺术动态| 国产精品天天狠天天看| 97国产成人无码精品久久久| 麻豆精品久久精品色综合| 91精品久久久久久久久久久久久久| 中文字幕网址在线| 国产综合色视频| 成人av免费看| 天天影院图片亚洲| 国产亚洲va综合人人澡精品| 亚洲欧美日韩在线综合 | 懂色av成人一区二区三区| 成熟亚洲日本毛茸茸凸凹| 久久久久久亚洲精品不卡4k岛国| 精品美女视频在线观看免费软件| 国产精品网曝门| 国产又粗又大又爽的视频| 俄罗斯一级**毛片在线播放| 欧美日韩国产在线| 黄色手机在线视频| 亚洲精品aⅴ| 亚洲精品自产拍| 正在播放国产对白害羞| 欧美黄色一区| 国产成人短视频| 国产精品自拍电影| 91捆绑美女网站| 制服国产精品| 国产免费拔擦拔擦8x在线播放| 在线视频综合导航| 绯色av蜜臀vs少妇| 嫩草一区二区三区| 久久成人在线视频| 亚洲天堂男人av| 国产精品一区专区| 欧美精品亚洲| 天堂8中文在线| 欧美在线视频不卡| 成人在线观看一区二区| 欧美一区二区麻豆红桃视频| 久久久久久欧美| 中文字幕在线观看高清| av欧美精品.com| 中文字幕一区二区三区四区五区人| 成人在线黄色电影| 欧美精品在线一区二区| 日本高清www| 狠狠爱www人成狠狠爱综合网| 国产成人在线精品| 日本美女一级视频| 亚洲色图一区二区三区| 一区二区三区国产免费| 黄色欧美网站| 久久影视免费观看| www.亚洲激情| 久久综合中文字幕| 欧美成人精品免费| 国产亚洲观看| 深夜成人在线观看| 7799精品视频天天看| 成人h动漫精品一区二区| 久久久国产精华液999999| 伊人色综合一区二区三区影院视频| 欧美一区二区在线不卡| 亚洲色图日韩精品| 久久一区视频| 欧美精品成人一区二区在线观看| 3d动漫一区二区三区| av片免费观看| 91美女精品福利| 亚洲色成人www永久在线观看| 亚洲免费一区| 在线性视频日韩欧美| av大全在线观看| 成人免费va视频| 日本黄大片在线观看| 婷婷综合国产| 久久国产精品电影| av高清一区二区| 中文字幕在线不卡一区二区三区| www.亚洲高清| 日韩精品四区| 成人欧美一区二区三区黑人| 日本在线视频观看| 678五月天丁香亚洲综合网| 妖精视频在线观看免费| 日本成人在线电影网| 深夜福利成人| jvid一区二区三区| 日韩中文综合网| 国产三级漂亮女教师| 亚洲日本在线观看| 伊人av在线播放| 国产精品v亚洲精品v日韩精品| 99影视tv| 日韩电影免费看| 亚洲欧洲高清在线| 日韩不卡高清视频| 国产精品国产三级国产有无不卡| 午夜在线观看av| 天天操综合网| www日韩av| 牛牛精品在线视频| 亚洲国产中文字幕久久网| 免费观看成人毛片| 欧美日韩蜜桃| www.亚洲在线| 色哺乳xxxxhd奶水米仓惠香| 精品国产亚洲一区二区三区大结局| 久久天天躁狠狠躁夜夜躁| 午夜久久久久久久久久| 午夜久久久久久| 国产aⅴ激情无码久久久无码| 蜜桃视频一区二区三区在线观看 | 亚洲AV成人精品| 91久久亚洲| 日韩亚洲视频在线| 欧美日本三级| 欧美最近摘花xxxx摘花| 91在线品视觉盛宴免费| 日韩一级免费一区| 中文字幕亚洲精品在线| 国产精品丝袜在线| 无码人妻一区二区三区精品视频| 噜噜噜久久亚洲精品国产品小说| 在线观看一区二区三区三州 | 日韩欧美一级片| 日韩精品久久久久久久酒店| 国产女主播一区| 9191在线视频| 日韩国产精品久久久久久亚洲| 中文字幕成人一区| 全球av集中精品导航福利| 国产欧美婷婷中文| 国产自产自拍视频在线观看| 中文字幕亚洲图片| 欧美一级淫片aaaaaa| 欧美日韩一区二区在线观看视频| 久久久久久久久久久网| 欧美国产日韩一二三区| 久久久久亚洲av无码网站| 日韩制服丝袜av| www.国产在线播放| 99精品全国免费观看视频软件| 精品一区二区三区自拍图片区 | 国产伦精品一区| 国外成人福利视频| 欧美在线视频网| 高h视频在线播放| www国产精品com| 你懂的在线看| 亚洲成人久久一区| 99久久夜色精品国产亚洲| 色婷婷久久综合| 国产午夜福利片| 亚洲精品亚洲人成人网在线播放| 亚洲色图欧美色| 99精品欧美一区二区蜜桃免费| 国产高清av片| 蜜桃在线一区二区三区| 黄色国产小视频| 中文在线一区| 97干在线视频| 国产精品大片免费观看| 91手机视频在线| 国产高清久久| 相泽南亚洲一区二区在线播放 | 五月婷婷中文字幕| 亚洲一区在线视频| 久久久www成人免费毛片| 亚洲欧洲精品一区二区精品久久久 | 欧美一级视频免费观看| 亚洲综合色区另类av| 国产精品丝袜一区二区| 中文字幕日韩av资源站| 蜜桃av免费观看| 国产精品污污网站在线观看| 亚洲性猛交xxxx乱大交| 久久精品视频在线看| 香蕉视频黄色在线观看| 91偷拍与自偷拍精品| 91av在线免费| 91色婷婷久久久久合中文| 粉嫩av懂色av蜜臀av分享| 成a人片国产精品| 中国免费黄色片| 9l国产精品久久久久麻豆| 美女扒开腿免费视频| 波多野洁衣一区| 中文字幕免费高清视频| 91丨九色丨尤物| 久久久久久亚洲中文字幕无码| 久久人人爽人人爽| 亚洲av成人无码久久精品| 国产日韩欧美一区二区三区综合| 国产精成人品免费观看| 欧美激情一区二区三区不卡| 人妻无码一区二区三区免费| 国产精品久久久久影院老司| 欧美一级片在线视频| 一区二区三区不卡在线观看| 国产精品成人av久久| 精品国产老师黑色丝袜高跟鞋| 久久国产视频播放| 在线免费观看视频一区| 一级做a爱片久久毛片| 欧美一区二区三区视频免费| www.久久精品.com| 日韩成人av在线| av一区在线观看| 欧美福利视频网站| 在线观看网站免费入口在线观看国内| 国产97在线|亚洲| crdy在线观看欧美| 国产欧美日韩综合精品二区| 国产亚洲电影| av磁力番号网| 国产日本精品| 一区二区三区 欧美| 国产乱国产乱300精品| wwwxx日本| 国产视频不卡一区| 久久人人爽人人爽人人| 色综合天天综合网天天看片| 国产剧情精品在线| 日韩精品视频在线观看免费| 亚洲免费视频一区二区三区| 久久久久久久亚洲精品| 成人免费av电影| 成人免费视频网站| 成人婷婷网色偷偷亚洲男人的天堂| 青青草综合在线| 日韩高清一区二区| 风韵丰满熟妇啪啪区老熟熟女| 中文字幕乱码日本亚洲一区二区| 久久亚洲AV无码| 欧美日韩一区二区电影| 日本国产在线观看| 日韩午夜在线视频| 亚洲精品一区| 粉嫩av四季av绯色av第一区 | 国产天堂视频在线观看| 免费黄网站欧美| 亚洲精品中文字幕在线播放| 亚洲欧洲美洲综合色网| 成人a v视频| 日韩av在线免费播放| 国产不卡在线| 国产精品高清在线| 亚洲高清极品| 东北少妇不带套对白| 国产在线观看免费一区| 丰满的亚洲女人毛茸茸| 欧美特级www| 日本wwwxxxx| 久久99久久99精品中文字幕| 福利一区在线| 欧美一区视久久| 国产欧美一区二区三区国产幕精品| 色婷婷一区二区三区在线观看| 欧美激情自拍偷拍| 国产精品人人人人| 亚洲第一精品福利| 国精一区二区三区| 91pron在线| 亚洲最新av| 在线免费看污网站| 中文字幕一区免费在线观看| 久久人人爽人人爽人人片av免费| 日韩精品免费在线视频观看| 波多野结衣在线观看| 99视频免费观看蜜桃视频| 中文精品久久| 日本中文字幕在线不卡| 综合久久国产九一剧情麻豆| 中文字幕一区二区三区免费看| 亚洲欧美日韩直播| 婷婷六月国产精品久久不卡| 欧美国产视频在线观看| 国产欧美一区二区色老头| 成人手机在线免费视频| 欧美日韩国产一区中文午夜| 香蕉视频成人在线| 8x海外华人永久免费日韩内陆视频| 国内自拍欧美| 国产精品久久国产| 成人av在线观| 亚洲国产成人精品激情在线| 亚洲国模精品私拍| 亚洲最大网站| 日韩精品欧美专区| 九色综合国产一区二区三区| 黄色一级大片在线免费观看| 91精品国产手机| 国产高清在线a视频大全| 狠狠色狠狠色综合人人| 亚洲尤物精选| 国产欧美一区二区三区在线观看视频| 欧美在线不卡视频| 国产福利在线播放麻豆| 成人综合色站| 国产精品免费看| 黄色av免费播放| 69堂成人精品免费视频| 欧美videos另类精品| 精品乱子伦一区二区三区| 久久中文在线| 欧洲美女女同性互添| 精品成人私密视频| 综合另类专区| 亚洲一区二区精品在线观看| 国产精品一二三四五| 久久露脸国语精品国产91| 国产一区二区日韩| 精品国产亚洲一区二区三区| 日本福利视频在线| 欧美国产日韩在线观看| va婷婷在线免费观看| 欧美亚洲第一区| 色综合天天爱| 亚洲天堂2024| 欧美午夜电影网| 男人天堂亚洲| 任我爽在线视频精品一| 国产精品主播直播| 天堂网中文字幕| 欧美成人免费视频| 亚洲+变态+欧美+另类+精品| 亚洲综合av在线播放| 婷婷开心久久网| 欧洲美女少妇精品| 精品久久蜜桃| 国产乱码精品一区二区三区av| 日本高清不卡码| 欧美xxxx18性欧美| 国产日产精品_国产精品毛片|