mirror of
https://github.com/openharmony/miscservices_time.git
synced 2026-07-19 20:03:38 -04:00
@@ -20,6 +20,7 @@ group("time_native_packages") {
|
||||
deps = [
|
||||
"etc/init:timeservice.cfg",
|
||||
"interfaces/kits/js/declaration:time",
|
||||
"interfaces/innerkits:time_client",
|
||||
"interfaces/kits/js/napi/system_time:systemtime",
|
||||
"interfaces/kits/js/napi/system_timer:systemtimer",
|
||||
"profile:miscservices_time_sa_profiles",
|
||||
|
||||
+12
-4
@@ -24,13 +24,11 @@
|
||||
"ram":"1024KB",
|
||||
"deps": {
|
||||
"components": [
|
||||
"ability_base",
|
||||
"ability_runtime",
|
||||
"ability_manager",
|
||||
"aafwk_standard",
|
||||
"appexecfwk_standard",
|
||||
"ans_standard",
|
||||
"ces_standard",
|
||||
"distributeddatamgr",
|
||||
"hisysevent_native",
|
||||
"hiviewdfx_hilog_native",
|
||||
"ipc",
|
||||
"permission_standard",
|
||||
@@ -57,6 +55,16 @@
|
||||
],
|
||||
"header_base":"//base/miscservices/time/interfaces/innerkits/include"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "//base/miscservices/time/interfaces/innerkits:time_client",
|
||||
"header": {
|
||||
"header_files": [
|
||||
"itimer_info.h",
|
||||
"time_service_client.h"
|
||||
],
|
||||
"header_base":"//base/miscservices/time/interfaces/innerkits/include"
|
||||
}
|
||||
}
|
||||
],
|
||||
"test": [
|
||||
|
||||
@@ -32,15 +32,17 @@ ohos_shared_library("systemtime") {
|
||||
|
||||
deps = [
|
||||
"//base/miscservices/time/services:time_service",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/intent:intent",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/want:want",
|
||||
"//foundation/aafwk/standard/frameworks/kits/ability/native:abilitykit_native",
|
||||
"//foundation/ace/napi/:ace_napi",
|
||||
"//utils/native/base:utils",
|
||||
]
|
||||
|
||||
external_deps = [
|
||||
"ability_base:want",
|
||||
"ability_runtime:runtime",
|
||||
"ability_runtime:wantagent_innerkits",
|
||||
"bundle_framework:appexecfwk_base",
|
||||
"hiviewdfx_hilog_native:libhilog",
|
||||
"ipc:ipc_core",
|
||||
]
|
||||
|
||||
@@ -50,6 +50,9 @@ ohos_shared_library("systemtimer") {
|
||||
|
||||
deps = [
|
||||
"//base/miscservices/time/services:time_service",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/intent:intent",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/want:want",
|
||||
"//foundation/aafwk/standard/frameworks/kits/ability/native:abilitykit_native",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
|
||||
"//foundation/ace/napi:ace_napi",
|
||||
@@ -57,9 +60,8 @@ ohos_shared_library("systemtimer") {
|
||||
]
|
||||
|
||||
external_deps = [
|
||||
"ability_base:want",
|
||||
"ability_runtime:runtime",
|
||||
"ability_runtime:wantagent_innerkits",
|
||||
"bundle_framework:appexecfwk_base",
|
||||
"hiviewdfx_hilog_native:libhilog",
|
||||
"ipc:ipc_core",
|
||||
]
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "timer_type.h"
|
||||
#include "want_agent.h"
|
||||
#include "want_agent_helper.h"
|
||||
#include "securec.h"
|
||||
#include "system_timer.h"
|
||||
|
||||
@@ -739,6 +739,13 @@ napi_value DestroyTimer(napi_env env, napi_callback_info info)
|
||||
}
|
||||
}
|
||||
|
||||
napi_value CreateNapiNumber(napi_env env, int32_t objName)
|
||||
{
|
||||
napi_value prop = nullptr;
|
||||
napi_create_int32(env, objName, &prop);
|
||||
return prop;
|
||||
}
|
||||
|
||||
napi_value SystemtimerInit(napi_env env, napi_value exports)
|
||||
{
|
||||
napi_property_descriptor desc[] = {
|
||||
@@ -746,11 +753,13 @@ napi_value SystemtimerInit(napi_env env, napi_value exports)
|
||||
DECLARE_NAPI_FUNCTION("startTimer", StartTimer),
|
||||
DECLARE_NAPI_FUNCTION("stopTimer", StopTimer),
|
||||
DECLARE_NAPI_FUNCTION("destroyTimer", DestroyTimer),
|
||||
DECLARE_NAPI_PROPERTY("TIMER_TYPE_REALTIME", CreateNapiNumber(env, 1 << TIMER_TYPE_REALTIME)),
|
||||
DECLARE_NAPI_PROPERTY("TIMER_TYPE_WAKEUP", CreateNapiNumber(env, 1 << TIMER_TYPE_WAKEUP)),
|
||||
DECLARE_NAPI_PROPERTY("TIMER_TYPE_EXACT", CreateNapiNumber(env, 1 << TIMER_TYPE_EXACT)),
|
||||
DECLARE_NAPI_PROPERTY("TIMER_TYPE_IDLE", CreateNapiNumber(env, 1 << TIMER_TYPE_IDLE)),
|
||||
};
|
||||
|
||||
NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc));
|
||||
|
||||
OHOS::MiscServicesNapi::TimerTypeInit(env, exports);
|
||||
return exports;
|
||||
}
|
||||
} // namespace MiscServicesNapi
|
||||
|
||||
+4
-8
@@ -23,8 +23,6 @@ config("time_service_config") {
|
||||
"//utils/system/safwk/native/include",
|
||||
"//third_party/json/include",
|
||||
"//base/hiviewdfx/hilog/interfaces/native/innerkits/include",
|
||||
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_rdb/include/",
|
||||
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk/include/",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -62,19 +60,17 @@ ohos_shared_library("time_service") {
|
||||
deps = [
|
||||
"${time_utils_path}:time_utils",
|
||||
"//foundation/aafwk/standard/frameworks/kits/ability/native:abilitykit_native",
|
||||
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk:native_appdatafwk",
|
||||
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_preferences:native_preferences",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/intent:intent",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/want:want",
|
||||
"//third_party/jsoncpp:jsoncpp",
|
||||
"//utils/native/base:utils",
|
||||
]
|
||||
external_deps = [
|
||||
"ability_base:base",
|
||||
"ability_base:want",
|
||||
"ability_runtime:runtime",
|
||||
"ability_runtime:wantagent_innerkits",
|
||||
"bundle_framework:appexecfwk_base",
|
||||
"ces_standard:cesfwk_innerkits",
|
||||
"eventhandler:libeventhandler",
|
||||
"hisysevent_native:libhisysevent",
|
||||
"hiviewdfx_hilog_native:libhilog",
|
||||
"ipc:ipc_core",
|
||||
"safwk:system_ability_fwk",
|
||||
|
||||
@@ -41,6 +41,7 @@ public:
|
||||
bool GetTimezone(std::string &timezoneId);
|
||||
bool SetTimezone(std::string timezoneId);
|
||||
void Init();
|
||||
int64_t GetCurrentOffsetMs();
|
||||
private:
|
||||
bool InitStorage();
|
||||
bool SetOffsetToKernel(int offset);
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "json/json.h"
|
||||
#include "time_service.h"
|
||||
#include "nitz_subscriber.h"
|
||||
#include "time_zone_info.h"
|
||||
#include "ntp_update_time.h"
|
||||
|
||||
using namespace std::chrono;
|
||||
@@ -50,7 +51,7 @@ void NtpUpdateTime::Init()
|
||||
if (!GetAutoTimeInfoFromFile(autoTimeInfo_)) {
|
||||
autoTimeInfo_.lastUpdateTime = INVALID_TIMES;
|
||||
autoTimeInfo_.NTP_SERVER = NTP_CN_SERVER;
|
||||
autoTimeInfo_.status = NETWORK_TIME_STATUS_OFF;
|
||||
autoTimeInfo_.status = NETWORK_TIME_STATUS_ON;
|
||||
if (!SaveAutoTimeInfoToFile(autoTimeInfo_)) {
|
||||
TIME_HILOGE(TIME_MODULE_SERVICE, "end, SaveAutoTimeInfoToFile failed.");
|
||||
return;
|
||||
@@ -136,6 +137,8 @@ void NtpUpdateTime::SetSystemTime()
|
||||
TIME_HILOGD(TIME_MODULE_SERVICE, "current time invalid.");
|
||||
return;
|
||||
}
|
||||
auto timeOffsetMs = DelayedSingleton<TimeZoneInfo>::GetInstance()->GetCurrentOffsetMs();
|
||||
currentTime = currentTime + timeOffsetMs;
|
||||
TimeService::GetInstance()->SetTime(currentTime);
|
||||
autoTimeInfo_.lastUpdateTime = currentTime;
|
||||
TIME_HILOGD(TIME_MODULE_SERVICE, "Ntp update currentTime: %{public}" PRId64 "", currentTime);
|
||||
|
||||
@@ -68,7 +68,6 @@ bool SNTPClient::RequestTime(std::string host)
|
||||
{
|
||||
TIME_HILOGD(TIME_MODULE_SERVICE, "start.");
|
||||
int iResult;
|
||||
errno_t ret;
|
||||
struct sockaddr_in RecvAddr;
|
||||
unsigned short Port = NTP_PORT;
|
||||
int BufLen = NTP_PACKAGE_SIZE;
|
||||
@@ -92,7 +91,7 @@ bool SNTPClient::RequestTime(std::string host)
|
||||
return false;
|
||||
}
|
||||
|
||||
ret = memset_s((char*)& RecvAddr, sizeof(RecvAddr), 0, sizeof(RecvAddr));
|
||||
errno_t ret = memset_s((char*)& RecvAddr, sizeof(RecvAddr), 0, sizeof(RecvAddr));
|
||||
if (ret != EOK) {
|
||||
TIME_HILOGE(TIME_MODULE_SERVICE, "memcpy_s failed, err = %d\n", ret);
|
||||
return false;
|
||||
|
||||
@@ -44,7 +44,7 @@ TimeServiceClient::~TimeServiceClient()
|
||||
sptr<TimeServiceClient> TimeServiceClient::GetInstance()
|
||||
{
|
||||
if (instance_ == nullptr) {
|
||||
std::lock_guard<std::mutex> autoLock(instanceLock_);
|
||||
std::lock_guard<std::mutex> lock(instanceLock_);
|
||||
if (instance_ == nullptr) {
|
||||
instance_ = new TimeServiceClient;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ namespace OHOS {
|
||||
namespace MiscServices {
|
||||
namespace {
|
||||
const std::string TIMEZONE_FILE_PATH = "/data/misc/zoneinfo/timezone.json";
|
||||
const int64_t HOUR_TO_MILLISECONDS = 3600000;
|
||||
}
|
||||
|
||||
TimeZoneInfo::TimeZoneInfo()
|
||||
@@ -139,6 +140,13 @@ bool TimeZoneInfo::GetTimezone(std::string &timezoneId)
|
||||
return true;
|
||||
}
|
||||
|
||||
int64_t TimeZoneInfo::GetCurrentOffsetMs()
|
||||
{
|
||||
int offsetHours;
|
||||
GetOffsetById(curTimezoneId_, offsetHours);
|
||||
return static_cast<int64_t>(offsetHours) * HOUR_TO_MILLISECONDS;
|
||||
}
|
||||
|
||||
bool TimeZoneInfo::SetOffsetToKernel(int offsetHour)
|
||||
{
|
||||
std::stringstream TZstrs;
|
||||
|
||||
@@ -33,8 +33,11 @@ ohos_unittest("TimeServiceTest") {
|
||||
configs = [ ":module_private_config" ]
|
||||
|
||||
deps = [
|
||||
"//base/miscservices/time/services:time_service",
|
||||
"//foundation/ace/napi:ace_napi",
|
||||
"//base/miscservices/time/interfaces/innerkits:time_client",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/intent:intent",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/want:want",
|
||||
"//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_core:appexecfwk_core",
|
||||
"//foundation/distributedschedule/dmsfwk/services/dtbschedmgr:distributedschedsvr",
|
||||
"//foundation/distributedschedule/safwk/interfaces/innerkits/safwk:system_ability_fwk",
|
||||
"//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy:samgr_proxy",
|
||||
@@ -43,14 +46,8 @@ ohos_unittest("TimeServiceTest") {
|
||||
]
|
||||
|
||||
external_deps = [
|
||||
"ability_base:base",
|
||||
"ability_base:want",
|
||||
"ability_runtime:runtime",
|
||||
"ability_runtime:wantagent_innerkits",
|
||||
"bundle_framework:appexecfwk_base",
|
||||
"bundle_framework:appexecfwk_core",
|
||||
"ces_standard:cesfwk_innerkits",
|
||||
"eventhandler:libeventhandler",
|
||||
"hisysevent_native:libhisysevent",
|
||||
"hiviewdfx_hilog_native:libhilog",
|
||||
"ipc:ipc_core",
|
||||
"safwk:system_ability_fwk",
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
#include <sys/time.h>
|
||||
#include <thread>
|
||||
|
||||
#include "napi/native_api.h"
|
||||
#include "napi/native_node_api.h"
|
||||
#include "time_common.h"
|
||||
#include "time_service_client.h"
|
||||
|
||||
|
||||
@@ -415,7 +415,7 @@ bool TimerManager::TriggerTimersLocked(std::vector<std::shared_ptr<TimerInfo>> &
|
||||
auto nextElapsed = alarm->whenElapsed + delta;
|
||||
SetHandlerLocked(alarm->id, alarm->type, alarm->when + delta, nextElapsed, alarm->windowLength,
|
||||
MaxTriggerTime(nowElapsed, nextElapsed, alarm->repeatInterval), alarm->repeatInterval,
|
||||
nullptr, alarm->flags, true, alarm->uid);
|
||||
alarm->callback, alarm->flags, true, alarm->uid);
|
||||
}
|
||||
if (alarm->wakeup) {
|
||||
hasWakeup = true;
|
||||
@@ -508,8 +508,7 @@ void TimerManager::DeliverTimersLocked(const std::vector<std::shared_ptr<TimerIn
|
||||
TIME_HILOGI(TIME_MODULE_SERVICE, "start");
|
||||
for (const auto &alarm : triggerList) {
|
||||
if (alarm->callback) {
|
||||
std::thread startTimerThread(alarm->callback, alarm->id);
|
||||
startTimerThread.detach();
|
||||
alarm->callback;
|
||||
TIME_HILOGI(TIME_MODULE_SERVICE, "Trigger id: %{public}" PRId64 "", alarm->id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ kits_path = "${time_root_path}/interfaces/kits"
|
||||
|
||||
innerkits_path = "${time_root_path}/interfaces/innerkits"
|
||||
|
||||
time_service_path = "${time_root_path}/services"
|
||||
|
||||
time_utils_path = "${time_root_path}/utils"
|
||||
|
||||
adapter_path = "${time_root_path}/adapter"
|
||||
|
||||
+1
-3
@@ -18,7 +18,6 @@ config("utils_config") {
|
||||
"mock/include",
|
||||
"native/include",
|
||||
"//utils/native/base/include",
|
||||
"/foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk/include/",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -36,8 +35,6 @@ ohos_source_set("time_utils") {
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
|
||||
"//foundation/aafwk/standard/interfaces/innerkits/want:want",
|
||||
"//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_core:appexecfwk_core",
|
||||
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk:native_appdatafwk",
|
||||
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_preferences:native_preferences",
|
||||
"//foundation/distributedschedule/safwk/interfaces/innerkits/safwk:system_ability_fwk",
|
||||
"//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy:samgr_proxy",
|
||||
"//utils/native/base:utils",
|
||||
@@ -45,6 +42,7 @@ ohos_source_set("time_utils") {
|
||||
|
||||
external_deps = [
|
||||
"hiviewdfx_hilog_native:libhilog",
|
||||
"permission_standard:libpermissionsdk_standard",
|
||||
"ipc:ipc_core",
|
||||
]
|
||||
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "permission/permission_kit.h"
|
||||
#include "time_permission.h"
|
||||
|
||||
|
||||
namespace OHOS {
|
||||
namespace MiscServices {
|
||||
namespace {
|
||||
@@ -52,7 +52,7 @@ bool TimePermission::CheckCallingPermission(int32_t uid, std::string permName)
|
||||
auto userId = uid / UID_TO_USERID;
|
||||
TIME_HILOGI(TIME_MODULE_COMMON, "VerifyPermission bundleName: %{public}s, permission: %{public}s",
|
||||
bundleName.c_str(), permName.c_str());
|
||||
return MockPermission::VerifyPermission(bundleName, permName, userId);
|
||||
return OHOS::Security::Permission::PermissionKit::VerifyPermission(bundleName, permName, userId);
|
||||
}
|
||||
|
||||
sptr<AppExecFwk::IBundleMgr> TimePermission::GetBundleManager()
|
||||
|
||||
Reference in New Issue
Block a user