/** * @brief Called when a RTC alarm is fired. * * @param sh * @param message * @param ctx * * @retval */ static bool internalAlarmFired(LSHandle *sh, LSMessage *message, void *ctx) { g_debug(LOG_DOMAIN "%s ", __FUNCTION__); update_alarms(); return true; }
/** * @brief Add a new alarm to the queue. * * @param id * @param calendar_time * @param expiry * @param serviceName * @param applicationName * * @retval */ static bool alarm_queue_add(uint32_t id, const char *key, bool calendar_time, time_t expiry, const char *serviceName, const char *applicationName, bool subscribe, LSMessage *message) { _Alarm *alarm = g_new0(_Alarm, 1); alarm->key = g_strdup(key); alarm->id = id; alarm->calendar = calendar_time; alarm->expiry = expiry; alarm->serviceName = g_strdup(serviceName); alarm->applicationName = g_strdup(applicationName); if (subscribe) { LSError lserror; LSErrorInit(&lserror); bool retVal = LSSubscriptionAdd( GetLunaServiceHandle(), "alarm", message, &lserror); if (!retVal) { LSErrorPrint(&lserror, stderr); LSErrorFree(&lserror); goto error; } LSMessageRef(message); alarm->message = message; } alarm_print(alarm); if (alarm->id >= gAlarmQueue->seq_id) { gAlarmQueue->seq_id = alarm->id + 1; } g_sequence_insert_sorted(gAlarmQueue->alarms, alarm, (GCompareDataFunc)alarm_cmp_func, NULL); update_alarms(); return true; error: return false; }
/** * @brief Init registers with bus and udev. * */ int alarm_init(void) { LSError lserror; LSErrorInit(&lserror); if (!LSRegisterCategory(GetLunaServiceHandle(), "/time", time_methods, NULL, NULL, &lserror)) { goto error; } alarm_queue_create(); alarm_read_db(); update_alarms(); return 0; error: return -1; }
/** * @brief Called when a RTC alarm is fired. * * @param sh * @param message * @param ctx * * @retval */ static bool internalAlarmFired(LSHandle *sh, LSMessage *message, void *ctx) { update_alarms(); return true; }