#include <stdint.h>
#include <tizen.h>
+/**
+ * @brief Enumeration for error codes of subsession routines.
+ * @since_tizen 7.0
+ */
+typedef enum {
+ SUBSESSION_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */
+ SUBSESSION_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
+ SUBSESSION_ERROR_IO_ERROR = TIZEN_ERROR_IO_ERROR, /**< I/O error */
+ SUBSESSION_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
+ SUBSESSION_ERROR_ALREADY_EXITS = TIZEN_ERROR_FILE_EXISTS, /**< Resource already registered */
+ SUBSESSION_ERROR_NOT_AVAILABLE = TIZEN_ERROR_NO_SUCH_DEVICE, /**< Resource unavailable */
+ SUBSESSION_ERROR_RESOURCE_BUSY = TIZEN_ERROR_RESOURCE_BUSY, /**< Resource busy */
+ SUBSESSION_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
+ SUBSESSION_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported */
+} subsession_error_e;
+
+typedef enum {
+ SUBSESSION_ADD_USER_WAIT = 1 << 0,
+ SUBSESSION_REMOVE_USER_WAIT = 1 << 1,
+ SUBSESSION_SWITCH_USER_WAIT = 1 << 2,
+ SUBSESSION_SWITCH_USER_COMPLETION = 1 << 3,
+ SUBSESSION_EVENT_ALL = ~0,
+} subsession_event_type_e;
+
+typedef union subsession_event_info {
+ struct add_user {
+ subsession_event_type_e event;
+ int session_uid;
+ int user;
+ } add_user;
+
+ struct remove_user {
+ subsession_event_type_e event;
+ int session_uid;
+ int user;
+ } remove_user;
+
+ struct switch_user {
+ subsession_event_type_e event;
+ int session_uid;
+ uint64_t switch_id;
+ int prev_user;
+ int next_user;
+ } switch_user;
+} subsession_event_info;
+
typedef int (*subsession_reply_callback) (int result, void *cb_data);
int subsession_add_user(int session_uid, int user, subsession_reply_callback cb, void *cb_data);
int subsession_remove_user(int session_uid, int user, subsession_reply_callback cb, void *cb_data);
int subsession_get_user_list(int session_uid, int **user_list, int *user_count);
int subsession_get_current_user(int session_uid, int *user);
-typedef enum {
- SUBSESSION_ADD_USER_WAIT = 0x01,
- SUBSESSION_REMOVE_USER_WAIT = 0x02,
- SUBSESSION_SWITCH_USER_WAIT = 0x04,
- SUBSESSION_SWITCH_USER_COMPLETION = 0x08,
- SUBSESSION_EVENT_ALL = 0xFF,
-} subsession_event_type_e;
-
-typedef union subsession_event_info {
- struct add_user {
- subsession_event_type_e event;
- int session_uid;
- int user;
- } add_user;
-
- struct remove_user {
- subsession_event_type_e event;
- int session_uid;
- int user;
- } remove_user;
-
- struct switch_user {
- subsession_event_type_e event;
- int session_uid;
- uint64_t switch_id;
- int prev_user;
- int next_user;
- } switch_user;
-} subsession_event_info;
typedef int (*subsession_event_callback) (subsession_event_info info, void *cb_data);
int subsession_register_event_callback(int session_uid, subsession_event_type_e event_bits, subsession_event_callback cb, void *cb_data);