/* * FST module - miscellaneous definitions * Copyright (c) 2014, Qualcomm Atheros, Inc. * * This software may be distributed under the terms of the BSD license. * See README for more details. */ #ifndef FST_CTRL_AUX_H #define FST_CTRL_AUX_H #include "common/defs.h" /* FST module control interface API */ #define FST_INVALID_SESSION_ID ((u32) -1) #define FST_MAX_GROUP_ID_SIZE 32 #define FST_MAX_INTERFACE_SIZE 32 enum fst_session_state { FST_SESSION_STATE_INITIAL, FST_SESSION_STATE_SETUP_COMPLETION, FST_SESSION_STATE_TRANSITION_DONE, FST_SESSION_STATE_TRANSITION_CONFIRMED, FST_SESSION_STATE_LAST }; enum fst_event_type { EVENT_FST_IFACE_STATE_CHANGED, /* An interface has been either attached * to or detached from an FST group */ EVENT_FST_ESTABLISHED, /* FST Session has been established */ EVENT_FST_SETUP, /* FST Session request received */ EVENT_FST_SESSION_STATE_CHANGED,/* FST Session state has been changed */ EVENT_PEER_STATE_CHANGED /* FST related generic event occurred, * see struct fst_hostap_event_data for * more info */ }; enum fst_reason { REASON_TEARDOWN, REASON_SETUP, REASON_SWITCH, REASON_STT, REASON_REJECT, REASON_ERROR_PARAMS, REASON_RESET, REASON_DETACH_IFACE, }; enum fst_initiator { FST_INITIATOR_UNDEFINED, FST_INITIATOR_LOCAL, FST_INITIATOR_REMOTE, }; union fst_event_extra { struct fst_event_extra_iface_state { bool attached; char ifname[FST_MAX_INTERFACE_SIZE]; char group_id[FST_MAX_GROUP_ID_SIZE]; } iface_state; /* for EVENT_FST_IFACE_STATE_CHANGED */ struct fst_event_extra_peer_state { bool connected; char ifname[FST_MAX_INTERFACE_SIZE]; u8 addr[ETH_ALEN]; } peer_state; /* for EVENT_PEER_STATE_CHANGED */ struct fst_event_extra_session_state { enum fst_session_state old_state; enum fst_session_state new_state; union fst_session_state_switch_extra { struct { enum fst_reason reason; u8 reject_code; /* REASON_REJECT */ /* REASON_SWITCH, * REASON_TEARDOWN, * REASON_REJECT */ enum fst_initiator initiator; } to_initial; } extra; } session_state; /* for EVENT_FST_SESSION_STATE_CHANGED */ }; /* helpers - prints enum in string form */ #define FST_NAME_UNKNOWN "UNKNOWN" const char * fst_get_str_name(unsigned index, const char *names[], size_t names_size); const char * fst_session_event_type_name(enum fst_event_type); const char * fst_reason_name(enum fst_reason reason); const char * fst_session_state_name(enum fst_session_state state); #endif /* FST_CTRL_AUX_H */