myMPD
Internal API documentation
Loading...
Searching...
No Matches
timer.c File Reference

myMPD timer API More...

#include "compile_time.h"
#include "src/mympd_api/timer.h"
#include "src/lib/datetime.h"
#include "src/lib/filehandler.h"
#include "src/lib/json/json_print.h"
#include "src/lib/json/json_query.h"
#include "src/lib/json/json_rpc.h"
#include "src/lib/list.h"
#include "src/lib/log.h"
#include "src/lib/mem.h"
#include "src/lib/sds_extras.h"
#include "src/lib/state_files.h"
#include "src/lib/timer.h"
#include "src/mympd_api/timer_handlers.h"
#include <errno.h>
#include <stdbool.h>
#include <string.h>
Include dependency graph for timer.c:

Functions

static void mympd_api_timer_free_node (struct t_list_node *node)
 
static struct t_list_nodeget_timer_from_fd (struct t_timer_list *l, int fd)
 
static sds print_timer_node (sds buffer, unsigned timer_id, struct t_timer_node *current)
 
void mympd_api_timer_timerlist_init (struct t_timer_list *l)
 
bool mympd_api_timer_check (int fd, struct t_timer_list *timer_list)
 
bool mympd_api_timer_save (struct t_partition_state *partition_state, struct t_timer_list *timer_list, int interval, unsigned timerid, struct t_timer_definition *timer_def, sds *error)
 
bool mympd_api_timer_replace (struct t_timer_list *l, int timeout, int interval, timer_handler handler, unsigned timer_id, struct t_timer_definition *definition)
 
bool mympd_api_timer_add (struct t_timer_list *l, int timeout, int interval, timer_handler handler, unsigned timer_id, struct t_timer_definition *definition)
 
bool mympd_api_timer_remove (struct t_timer_list *l, unsigned timer_id)
 
bool mympd_api_timer_toggle (struct t_timer_list *l, unsigned timer_id, sds *error)
 
void mympd_api_timer_timerlist_clear (struct t_timer_list *l)
 
void * mympd_api_timer_free_definition (struct t_timer_definition *timer_def)
 
struct t_timer_definitionmympd_api_timer_parse (sds str, const char *partition, struct t_json_parse_error *error)
 
int mympd_api_timer_calc_starttime (int start_hour, int start_minute, int interval)
 
sds mympd_api_timer_list (struct t_timer_list *timer_list, sds buffer, unsigned request_id, const char *partition)
 
sds mympd_api_timer_get (struct t_timer_list *timer_list, sds buffer, unsigned request_id, unsigned timer_id)
 
bool mympd_api_timer_file_read (struct t_timer_list *timer_list, sds workdir)
 
bool mympd_api_timer_file_save (struct t_timer_list *timer_list, sds workdir)
 

Detailed Description

myMPD timer API

Function Documentation

◆ get_timer_from_fd()

static struct t_list_node * get_timer_from_fd ( struct t_timer_list l,
int  fd 
)
static

Gets the timer associated with the fd

Parameters
ltimer list
fdtimer fd
Returns
timer for the fd

◆ mympd_api_timer_add()

bool mympd_api_timer_add ( struct t_timer_list l,
int  timeout,
int  interval,
timer_handler  handler,
unsigned  timer_id,
struct t_timer_definition definition 
)

Adds a timer with given timer_id

Parameters
ltimer list
timeoutseconds when timer will run (offset from now)
intervalreschedule timer interval
handlertimer callback function
timer_idid of the timer
definitionpointer to timer definition (GUI) or NULL
Returns
true on success, else false

◆ mympd_api_timer_calc_starttime()

int mympd_api_timer_calc_starttime ( int  start_hour,
int  start_minute,
int  interval 
)

Calculates the offset from now for next start time for a timer

Parameters
start_hourstart hour
start_minutestart minute
intervalreschedule interval
Returns
unix timestamp of next start

◆ mympd_api_timer_check()

bool mympd_api_timer_check ( int  fd,
struct t_timer_list timer_list 
)

Checks the timer event and executes the callback function

Parameters
fdfd with POLLIN event
timer_listtimer list
Returns
true on success, else false

◆ mympd_api_timer_file_read()

bool mympd_api_timer_file_read ( struct t_timer_list timer_list,
sds  workdir 
)

Reads the timer file and populates the timer list

Parameters
timer_listtimer list
workdirworking directory
Returns
true on success, else false

◆ mympd_api_timer_file_save()

bool mympd_api_timer_file_save ( struct t_timer_list timer_list,
sds  workdir 
)

Saves the timer list to the timer file on disc

Parameters
timer_listtimer list
workdirworking directory
Returns
true on success, else false

◆ mympd_api_timer_free_definition()

void * mympd_api_timer_free_definition ( struct t_timer_definition timer_def)

Frees a timer definition

Parameters
timer_defpointer to timer definition
Returns
NULL

◆ mympd_api_timer_free_node()

static void mympd_api_timer_free_node ( struct t_list_node node)
static

Private definitions

Private functions Frees a timer node

Parameters
nodetimer node to free

◆ mympd_api_timer_get()

sds mympd_api_timer_get ( struct t_timer_list timer_list,
sds  buffer,
unsigned  request_id,
unsigned  timer_id 
)

Gets the timer with the given id as an jsonrpc response

Parameters
timer_listtimer list
bufferalready allocated sds string to append the response
request_idjsonrpc request id
timer_idtimer id
Returns
pointer to buffer

◆ mympd_api_timer_list()

sds mympd_api_timer_list ( struct t_timer_list timer_list,
sds  buffer,
unsigned  request_id,
const char *  partition 
)

Gets the timer list as an jsonrpc response

Parameters
timer_listtimer list
bufferalready allocated sds string to append the response
request_idjsonrpc request id
partitionmpd partition
Returns
pointer to buffer

◆ mympd_api_timer_parse()

struct t_timer_definition * mympd_api_timer_parse ( sds  str,
const char *  partition,
struct t_json_parse_error error 
)

Parses a json object string to a timer definition.

Parameters
strstring to parse
partitionmpd partition
errorpointer to sds string to populate an error string
Returns
pointer to timer_def or NULL on error

◆ mympd_api_timer_remove()

bool mympd_api_timer_remove ( struct t_timer_list l,
unsigned  timer_id 
)

Removes a timer with given id

Parameters
ltimer list
timer_idtimer id to remove
Returns
true on success, else false

◆ mympd_api_timer_replace()

bool mympd_api_timer_replace ( struct t_timer_list l,
int  timeout,
int  interval,
timer_handler  handler,
unsigned  timer_id,
struct t_timer_definition definition 
)

Replaces a timer with given timer_id

Parameters
ltimer list
timeoutseconds when timer will run
intervalreschedule timer interval
handlertimer callback function
timer_idid of the timer
definitionpointer to timer definition (GUI) or NULL
Returns
true on success, else false

◆ mympd_api_timer_save()

bool mympd_api_timer_save ( struct t_partition_state partition_state,
struct t_timer_list timer_list,
int  interval,
unsigned  timerid,
struct t_timer_definition timer_def,
sds *  error 
)

Saves a new or existing timer

Parameters
partition_statepointer to partition state
timer_listpointer to timer list
intervaltimer interval
timeridthe timerid
timer_defpointer to populated timer definition
errorpointer to already allocated sds string to append an error message
Returns
true on success, else false

◆ mympd_api_timer_timerlist_clear()

void mympd_api_timer_timerlist_clear ( struct t_timer_list l)

Clears the timer list

Parameters
ltimer list

◆ mympd_api_timer_timerlist_init()

void mympd_api_timer_timerlist_init ( struct t_timer_list l)

Public functions Inits the timer list

Parameters
lpointer to already allocated timer list

◆ mympd_api_timer_toggle()

bool mympd_api_timer_toggle ( struct t_timer_list l,
unsigned  timer_id,
sds *  error 
)

Toggles the enabled state of a timer

Parameters
ltimer list
timer_idtimer id to toggle
errorpointer to already allocated sds string to append an error message
Returns
true on success, else false

◆ print_timer_node()

static sds print_timer_node ( sds  buffer,
unsigned  timer_id,
struct t_timer_node current 
)
static

Prints a timer node as a json object string

Parameters
bufferalready allocated sds string to append the response
timer_idthe timer id
currenttimer node to print
Returns
pointer to buffer