Пример #1
0
/**
* @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;
}
Пример #2
0
/**
* @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;
}
Пример #3
0
/**
* @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;
}
Пример #4
0
/**
* @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;
}