#ifndef _OBJECTS_H
#define _OBJECTS_H
#include <door.h>
#include <libsysevent.h>
#include <libuutil.h>
#include <pthread.h>
#include <libnwam.h>
#include "events.h"
#include "ncp.h"
#include "ncu.h"
struct nwamd_object {
char nwamd_object_name[NWAM_MAX_NAME_LEN];
nwam_object_type_t nwamd_object_type;
int nwamd_object_refcount;
pthread_mutex_t nwamd_object_mutex;
void *nwamd_object_handle;
nwamd_ncu_t *nwamd_object_data;
struct timeval nwamd_script_time;
nwam_state_t nwamd_object_state;
nwam_aux_state_t nwamd_object_aux_state;
uu_list_node_t nwamd_object_node;
};
extern void nwamd_object_lists_init(void);
extern void nwamd_object_lists_fini(void);
extern nwamd_object_t nwamd_object_init(nwam_object_type_t, const char *,
void *, void *);
extern nwamd_object_t nwamd_object_find(nwam_object_type_t, const char *);
extern void nwamd_object_release_and_preserve(nwamd_object_t);
extern void nwamd_object_release(nwamd_object_t);
extern void nwamd_object_release_and_destroy(nwamd_object_t);
extern void nwamd_object_release_after_preserve(nwamd_object_t);
extern void nwamd_object_release_and_destroy_after_preserve(nwamd_object_t);
extern void nwamd_object_set_state(nwam_object_type_t, const char *,
nwam_state_t, nwam_aux_state_t);
extern void nwamd_object_set_state_timed(nwam_object_type_t, const char *,
nwam_state_t, nwam_aux_state_t, uint32_t);
extern nwamd_event_method_t *nwamd_object_event_methods(nwam_object_type_t);
extern int nwamd_walk_objects(nwam_object_type_t,
int (*)(nwamd_object_t, void *), void *);
extern int nwamd_object_update(const char *, nwam_object_type_t);
extern void nwamd_known_wlan_handle_init_event(nwamd_event_t);
extern int nwamd_known_wlan_action(const char *, nwam_action_t);
extern void nwamd_init_enms(void);
extern void nwamd_fini_enms(void);
extern void nwamd_enm_check_conditions(void);
extern void nwamd_enm_handle_init_event(nwamd_event_t);
extern void nwamd_enm_handle_fini_event(nwamd_event_t);
extern int nwamd_enm_action(const char *, nwam_action_t);
extern int nwamd_enm_refresh(const char *);
extern void nwamd_init_locs(void);
extern void nwamd_fini_locs(void);
extern void nwamd_loc_check_conditions(void);
extern void nwamd_loc_revert_to_legacy(void);
extern void nwamd_loc_handle_init_event(nwamd_event_t);
extern void nwamd_loc_handle_fini_event(nwamd_event_t);
extern int nwamd_loc_action(const char *, nwam_action_t);
extern int nwamd_loc_refresh(const char *);
extern void nwamd_init_ncus(void);
extern void nwamd_fini_ncus(void);
extern int nwamd_ncp_action(const char *, nwam_action_t);
extern int nwamd_ncu_action(const char *, const char *, nwam_action_t);
extern void nwamd_ncu_handle_init_event(nwamd_event_t);
extern void nwamd_ncu_handle_fini_event(nwamd_event_t);
extern void nwamd_ncu_handle_if_state_event(nwamd_event_t);
extern void nwamd_ncu_handle_if_action_event(nwamd_event_t);
extern void nwamd_ncu_handle_link_state_event(nwamd_event_t);
extern void nwamd_ncu_handle_link_action_event(nwamd_event_t);
extern void nwamd_ncu_handle_init_event(nwamd_event_t);
extern void nwamd_ncu_handle_fini_event(nwamd_event_t);
extern void nwamd_ncu_handle_action_event(nwamd_event_t);
extern void nwamd_ncu_handle_state_event(nwamd_event_t);
extern void nwamd_ncp_handle_action_event(nwamd_event_t);
extern void nwamd_ncp_handle_state_event(nwamd_event_t);
extern void nwamd_ncu_handle_periodic_scan_event(nwamd_event_t);
extern void nwamd_ncp_handle_enable_event(nwamd_event_t);
extern void nwamd_handle_upgrade(nwamd_event_t);
extern void nwamd_enm_handle_action_event(nwamd_event_t);
extern void nwamd_enm_handle_state_event(nwamd_event_t);
extern void nwamd_loc_handle_action_event(nwamd_event_t);
extern void nwamd_loc_handle_state_event(nwamd_event_t);
extern void nwamd_known_wlan_handle_action_event(nwamd_event_t);
extern void nwamd_add_phys_ncu_auto(nwam_ncp_handle_t, const char *);
extern void nwamd_rem_phys_ncu_auto(nwam_ncp_handle_t, const char *);
extern void add_auto_link(nwam_ncp_handle_t, const char *);
extern void add_auto_ip(nwam_ncp_handle_t, const char *);
extern void rem_auto_link(nwam_ncp_handle_t, const char *);
extern void rem_auto_ip(nwam_ncp_handle_t, const char *);
#endif