Constants and function definitions for a simple window manager
/* * $QNXLicenseC: * Copyright 2012, QNX Software Systems Limited. All Rights Reserved. * * This software is QNX Confidential Information subject to * confidentiality restrictions. DISCLOSURE OF THIS SOFTWARE * IS PROHIBITED UNLESS AUTHORIZED BY QNX SOFTWARE SYSTEMS IN * WRITING. * * You must obtain a written license from and pay applicable license * fees to QNX Software Systems Limited before you may reproduce, modify * or distribute this software, or any work that includes all or part * of this software. For more information visit * http://licensing.qnx.com or email licensing@qnx.com. * * This file may contain contributions from others. Please review * this entire file for other proprietary rights or license notices, * as well as the QNX Development Suite License Guide at * http://licensing.qnx.com/license-guide/ for other information. * $ */ #ifndef STRUCT_H_ #define STRUCT_H_ #include <errno.h> #include <ctype.h> /* Header file for isdigit */ #include <stdio.h> /* Header file for fprintf */ #include <stdlib.h> /* Header file for EXIT_FAILURE, EXIT_SUCCESS, atoi */ #include <string.h> /* Header file for strncmp */ #include <sys/keycodes.h> /* Header file for KEYCODE_ESCAPE */ #include <time.h> /* Header file for clock_gettime, timespec2nsec */ #include <screen/screen.h> /* Header file for all screen API calls */ #include <pthread.h> #include <fcntl.h> #include <sys/pps.h> #include <sys/slog.h> #include <sys/slogcodes.h> #define WINMGR_SLOG_CODE _SLOG_SETCODE(_SLOGC_TEST,104) #define SLOG_WARNING(...) slogf(WINMGR_SLOG_CODE,_SLOG_WARNING, __VA_ARGS__) #define SLOG_ERROR(...) slogf(WINMGR_SLOG_CODE,_SLOG_ERROR, __VA_ARGS__) #define SLOG_NOTICE(...) slogf(WINMGR_SLOG_CODE,_SLOG_NOTICE, __VA_ARGS__) #define KILO(n) ((n)*1024) #define MEG(n) ((n)*1024*1024) #define MAX_REQSIZE KILO(32) #define MAX_RESSIZE KILO(1) #define MAX_ATTRS KILO(1) // launcher commands #define CMD_START "start" #define CMD_DEBUG "debug" #define CMD_STOP "stop" #define CMD_FREEZE "freeze" #define CMD_THAW "thaw" #define CMD_LOWMEM "lowmem" #define CMD_STOPPED "stopped" #define CMD_ACTIVE "active" #define CMD_QUERY "query" #define CMD_HIDE "hide" enum { WINMGR_UPDATE = (1 << 0), WINMGR_TERMINATE = (1 << 1), }; typedef enum { PPS_EVENT_OBJECT_UNKNOWN = 0x00, PPS_EVENT_OBJECT_CHANGED = 0x01, PPS_EVENT_OBJECT_CREATED = 0x02, PPS_EVENT_OBJECT_DELETED = 0x04, PPS_EVENT_ALL = 0x7, PPS_FLAG_CREDENTIALS = 1 << 15 } pps_event_type; typedef struct { char *id; char *pid; char *data; } app_t; typedef struct { char *name; char *encoding; char *value; } pps_attr_t; typedef struct { int state; int pps_fd; app_t car_app; app_t weather_app; int verbose; int background; // pps related int numattrs; char *objname; pps_event_type ptype; pps_attr_t attrs[MAX_ATTRS]; int pps_tid; // screen related screen_context_t screen_ctx; /* connection to screen windowing system */ screen_window_t screen_win; /* native handle for our window */ screen_event_t screen_ev; /* handle used to pop events from our queue */ int screen_tid; } window_manager_t; // pps.c extern void* pps_thread(void* arg); int pps_write(int pps_fd, const char *msgbuf, int msgsize); int pps_is_open(int pps_fd); char* pps_lookup(window_manager_t *winmgr, char *name); pps_attr_t* pps_lookup_attr(window_manager_t *winmgr, char *name); // launcher.c int launcher_pps(window_manager_t *winmgr); void launcher_send(window_manager_t *winmgr, char *cmd, char *data, char *id); // core.c void core_app_started(window_manager_t *winmgr, char *id, char *data, int error, char *errstr); void core_app_stopped(window_manager_t *winmgr, char *data); void core_lowmem(window_manager_t *winmgr, char *data); // screen.c int screen_init(window_manager_t *winmgr, int argc, char **argv); void* screen_thread(void *arg); #endif /* STRUCT_H_ */