Skip to content

G timeout add seconds

Sets a function to be called at regular intervals with the default priority. G_PRIORITY_DEFAULT.

즉, glib 에서 바로 사용할 수 있는 타이머 함수.

Example

#include <gst/gst.h>
#include <glib.h>

typedef struct _GstAnswerjetRelay {
    GstElement element;
    gboolean relay_state;  // Relay 상태 (ON/OFF)
} GstAnswerjetRelay;

/* relay를 ON으로 설정하고 10초 후에 OFF로 전환 */
void relay_on(GstAnswerjetRelay *relay_module);
gboolean relay_off(gpointer user_data);

void relay_on(GstAnswerjetRelay *relay_module)
{
    relay_module->relay_state = TRUE;
    g_print("Relay ON\n");

    // 10초 후 relay_off 함수를 호출하여 OFF로 전환
    g_timeout_add_seconds(10, relay_off, relay_module);
}

gboolean relay_off(gpointer user_data)
{
    GstAnswerjetRelay *relay_module = (GstAnswerjetRelay *)user_data;
    relay_module->relay_state = FALSE;
    g_print("Relay OFF\n");

    // FALSE를 반환하여 타이머 호출이 한 번만 실행되도록 함
    return FALSE;
}

int main(int argc, char *argv[])
{
    gst_init(&argc, &argv);

    GstAnswerjetRelay relay_module = {0};

    // Relay ON 설정 및 10초 후 OFF
    relay_on(&relay_module);

    // GStreamer 메인 루프 실행
    GMainLoop *loop = g_main_loop_new(NULL, FALSE);
    g_main_loop_run(loop);

    return 0;
}

See also

Favorite site