From f13494a6afb1cd16b66f8a86c694057587bd9d71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E7=8F=9E=E9=A3=8E?= Date: Wed, 22 Jun 2022 02:47:05 +0000 Subject: [PATCH 1/2] Description:The watch pulls up the phone FA. Sig:aafwk Feature or Bugfix:Bugfix Binary Source:No #I5DH4Y; Signed-off-by: wuluofeng --- .../abilitymgr_lite/include/ability_service.h | 5 ++ .../abilitymgr_lite/src/ability_service.cpp | 65 ++++++++++++++++++- 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/services/abilitymgr_lite/include/ability_service.h b/services/abilitymgr_lite/include/ability_service.h index 23d668f..862b814 100644 --- a/services/abilitymgr_lite/include/ability_service.h +++ b/services/abilitymgr_lite/include/ability_service.h @@ -22,6 +22,7 @@ #include "ability_record.h" #include "ability_stack.h" #include "adapter.h" +#include "dmsfwk_interface.h" #include "js_app_host.h" #include "nocopyable.h" #include "want.h" @@ -29,6 +30,8 @@ #include "ability_state.h" namespace OHOS { +typedef void (*OnRequestCallbackFunc)(const void *data, int32_t ret); + struct AbilitySvcInfo { char *bundleName; char *path; @@ -68,6 +71,7 @@ private: int32_t StartAbility(AbilitySvcInfo *info); int32_t PreCheckStartAbility(const char *bundleName, const char *path, const void *data, uint16_t dataLength); bool CheckResponse(const char *bundleName); + static int32 StartRemoteAbility(const Want *want, OnRequestCallbackFunc callback); int32_t SchedulerLifecycle(uint64_t token, int32_t state); int32_t SchedulerLifecycleInner(const AbilityRecord *record, int32_t state); void SchedulerAbilityLifecycle(SliteAbility *ability, const Want &want, int32_t state); @@ -82,6 +86,7 @@ private: int32_t ForceStopBundleInner(uint16_t token); bool IsValidAbility(AbilityInfo *abilityInfo); + static IDmsListener *myCallback_; uint16_t pendingToken_ { 0 }; AbilityList abilityList_ {}; AbilityStack abilityStack_ {}; diff --git a/services/abilitymgr_lite/src/ability_service.cpp b/services/abilitymgr_lite/src/ability_service.cpp index 2fd14b9..e37e555 100644 --- a/services/abilitymgr_lite/src/ability_service.cpp +++ b/services/abilitymgr_lite/src/ability_service.cpp @@ -21,6 +21,11 @@ #include "ability_message_id.h" #include "ability_mgr_service.h" #include "ability_mgr_slite_feature.h" + +#include "ability_connect_trans_param.h" +#include "ability_callback_utils.h" + +#include "samgr_lite.h" #include "ability_record.h" #include "ability_stack.h" #include "ability_state.h" @@ -42,6 +47,8 @@ constexpr char LAUNCHER_BUNDLE_NAME[] = "com.huawei.launcher"; constexpr uint16_t LAUNCHER_TOKEN = 0; constexpr int32_t QUEUE_LENGTH = 32; constexpr int32_t APP_TASK_PRI = 25; +IDmsListener* AbilityService::myCallback_ = nullptr; +#define EC_INVALID -9; AbilityService::LifecycleFuncStr AbilityService::lifecycleFuncList_[] = { {STATE_UNINITIALIZED, &AbilityService::OnDestroyDone}, @@ -91,6 +98,52 @@ bool AbilityService::IsValidAbility(AbilityInfo *abilityInfo) return true; } +int32 AbilityService::StartRemoteAbility(const Want *want, OnRequestCallbackFunc callback) +{ + void *origin; + pid_t uid = GetCallingUid(origin); + char *bundleName = want->element->bundleName; + IUnknown *iUnknown = SAMGR_GetInstance()->GetFeatureApi(DISTRIBUTED_SCHEDULE_SERVICE, DMSLITE_FEATURE); + DmsProxy *dmsInterface = NULL; + if (iUnknown == NULL) { + return EC_INVALID; + } + int32 retVal = iUnknown->QueryInterface(iUnknown, DEFAULT_VERSION, (void**) &dmsInterface); + if (retVal != EC_SUCCESS) { + return ; + } + CallerInfo callerInfo = { + .uid = uid + }; + + if (callback != nullptr) { + if (myCallback_ == nullptr) { + myCallback_ = new IDmsListener(); + } + myCallback_ -> OnResultCallback = callback; + retVal = dmsInterface->StartRemoteAbility((Want *)want, &callerInfo, myCallback_); + } else { + retVal = dmsInterface->StartRemoteAbility((Want *)want, &callerInfo, NULL); + } + return retVal; +} + +void AbilityService::OnRequestCallback(const void *data, int32_t ret) +{ + IpcIo io; + char ipcData[IPC_IO_DATA_MAX]; + IpcIo reply; + IpcIoInit(&io, ipcData, IPC_IO_DATA_MAX, 0); + IpcIoPushInt32(&io, static_cast(ret)); + int32_t transRet = Transact(NULL, svc_, START_ABILITY_CALLBACK, &io, &reply, LITEIPC_FLAG_ONEWAY, NULL); + if (transRet != LITEIPC_OK) { + HILOG_ERROR(HILOG_MODULE_APP, "AbilityMgrFeature InnerSelfTransact fialed %{public}d\n", ret); + } + #ifdef __LINUX__ + BinderRelease(svc_.ipcContext, svc_.handle); + #endif +} + int32_t AbilityService::StartAbility(const Want *want) { if (want == nullptr || want->element == nullptr) { @@ -138,7 +191,17 @@ int32_t AbilityService::StartAbility(const Want *want) info->data = OHOS::Utils::Memdup(want->data, want->dataLength); info->dataLength = want->dataLength; - auto ret = StartAbility(info); + + int32 ret = 0; + const char *deviceId = want->element->deviceId; + if (deviceId != nullptr && *deviceId != '\0') { + HILOG_ERROR(HILOG_MODULE_AAFWK, "StartRemoteAbility"); + ret = StartRemoteAbility(want, nullptr); + } else { + ret = StartAbility(info); + HILOG_ERROR(HILOG_MODULE_AAFWK, "StartAbility"); + } + AdapterFree(info->bundleName); AdapterFree(info->path); AdapterFree(info->data); -- Gitee From 79f718da341451b02d4dfc577c8795ce69439158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E7=8F=9E=E9=A3=8E?= Date: Mon, 27 Jun 2022 03:50:31 +0000 Subject: [PATCH 2/2] Signed-off-by: wuluofeng --- README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/README.md b/README.md index 61a910d..a338ec8 100755 --- a/README.md +++ b/README.md @@ -1,3 +1,45 @@ +setenv bootargs 'mem=128M console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootfstype=ext4 rootwait blkdevparts=mmcblk0:1M(boot), 9M(kernel), 50M(rootfs), 50M(userfs)' +setenv bootcmd "mmc read 0x0 0x82000000 0x800 0x4800;bootm 0x82000000" +Save +go 0x82000000 + + + +LiteOS +setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x4800;mmc read 0x0 0x82000000 0x800 0x4800; mw 0x10FF0044 0x0600; mw 0x120D2010 0x00000000; mw 0x120D2400 0x000000ff; mw 0x120D2010 0x00000000; go 0x80000000"; +setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=20M rw"; +saveenv +go 0x80000000 + +setenv bootcmd "sf probe 0;mmc read 0x0 0x80000000 0x800 0x4800; go 0x80000000"; +setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=20M rw"; +saveenv + + +hb build -f -T //foundation/communication/dsoftbus/tests/sdk/transmission/trans_channel/tcp_direct/sample:trans_client +hb build -f -T //foundation/communication/dsoftbus/tests/sdk/transmission/trans_channel/tcp_direct/sample:trans_client + +Reset + + + + + + + + + + + + + + + + + + + + # Ability Management Framework - [Introduction](#section11660541593) -- Gitee