return ALARMMGR_RESULT_SUCCESS;
}
+static int __compare_api_version(int *result, uid_t uid)
+{
+ int ret = 0;
+ pkgmgrinfo_pkginfo_h pkginfo = NULL;
+ char pkgid[512] = {0, };
+ char *pkg_version;
+
+ if (aul_app_get_pkgid_bypid_for_uid(getpid(), pkgid, sizeof(pkgid), uid) != AUL_R_OK) {
+ ALARM_MGR_EXCEPTION_PRINT("aul_app_get_pkgid_bypid() is failed. PID %d may not be app.", getpid());
+ } else {
+ ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(pkgid, uid, &pkginfo);
+ if (ret != PMINFO_R_OK) {
+ ALARM_MGR_EXCEPTION_PRINT("Failed to get pkginfo\n");
+ } else {
+ ret = pkgmgrinfo_pkginfo_get_api_version(pkginfo, &pkg_version);
+ if (ret != PMINFO_R_OK)
+ ALARM_MGR_EXCEPTION_PRINT("Failed to check api version [%d]\n", ret);
+
+ *result = strverscmp(pkg_version, "2.4");
+ pkgmgrinfo_pkginfo_destroy_pkginfo(pkginfo);
+ }
+ }
+ return ret;
+}
+
EXPORT_API int alarmmgr_init(const char *appid)
{
SECURE_LOGD("Enter");
alarm_id_t *alarm_id)
{
int error_code = 0;
+ int result = 0;
struct timeval current_time;
struct tm duetime_tm;
alarm_info_t alarm_info;
alarm_info.start.min = duetime_tm.tm_min;
alarm_info.start.sec = duetime_tm.tm_sec;
- if ((alarm_info.alarm_type & ALARM_TYPE_INEXACT) && interval < MIN_INEXACT_INTERVAL)
+ if (__compare_api_version(&result, getuid()) < 0)
+ return ERR_ALARM_SYSTEM_FAIL;
+
+ if (result < 0) {
+ if (alarm_info.alarm_type & ALARM_TYPE_INEXACT)
+ alarm_info.alarm_type ^= ALARM_TYPE_INEXACT;
+ }
+
+ if ((alarm_type & ALARM_TYPE_INEXACT) && interval < MIN_INEXACT_INTERVAL)
interval = MIN_INEXACT_INTERVAL;
if (interval <= 0) {