00001
00023 #ifndef _COMMON_H_
00024 #define _COMMON_H_
00025
00026 #include <sys/types.h>
00027 #include <sys/socket.h>
00028 #include <linux/types.h>
00029 #include <linux/netlink.h>
00030 #include <linux/rtnetlink.h>
00031 #include <linux/if_ether.h>
00032 #include <iwlib.h>
00033 #include <wireless.h>
00034 #define DBUS_API_SUBJECT_TO_CHANGE
00035 #include <dbus/dbus.h>
00036 #include <wlancond.h>
00037
00038
00039 typedef struct scan_results_t
00040 {
00041 char ssid[WLANCOND_MAX_SSID_SIZE+1];
00042 gint32 ssid_len;
00043 unsigned char bssid[ETH_ALEN];
00044 gint32 rssi;
00045 guint32 channel;
00046 guint32 cap_bits;
00047 guint32 wpa_ie_len;
00048 guint8 *wpa_ie;
00049 } scan_results_t;
00050
00051
00052 typedef struct wpa_ie_list_t
00053 {
00054 unsigned char bssid[ETH_ALEN];
00055 guint32 ie_len;
00056 guint8 *wpa_ie;
00057 } wpa_ie_list_t;
00058
00059
00060 typedef struct wpa_ie_save_t
00061 {
00062 guint32 ie_len;
00063 unsigned char *ie;
00064 } wpa_ie_save_t;
00065
00066
00067 typedef struct connect_params_t
00068 {
00069 dbus_int32_t mode;
00070 dbus_int32_t encryption;
00071 dbus_int32_t power_level;
00072 dbus_int32_t default_key;
00073 dbus_uint32_t adhoc_channel;
00074 dbus_uint32_t flags;
00075 char ssid[WLANCOND_MAX_SSID_SIZE+1];
00076 unsigned int ssid_len;
00077 unsigned int authentication_type;
00078 unsigned char key[4][32];
00079 int key_len[4];
00080 unsigned char bssid[ETH_ALEN];
00081 } connect_params;
00082
00083 #define PMK_CACHE_SIZE 32
00084 typedef struct pmksa_cache_t
00085 {
00086 unsigned char mac[ETH_ALEN];
00087 unsigned char pmkid[IW_PMKID_LEN];
00088 } pmksa_cache;
00089
00090
00091
00092
00093
00094 typedef struct wlan_status_t
00095 {
00096
00097 gchar ifname[IFNAMSIZ+1];
00098
00099 gchar own_mac[ETH_ALEN];
00100
00101 gchar scan_ssid[WLANCOND_MAX_SSID_SIZE+1];
00102
00103 gint scan_ssid_len;
00104
00105 guint scan;
00106
00107 guint state;
00108
00109 guint requested_power;
00110
00111 guint real_power;
00112
00113 guint pairwise_cipher;
00114 guint group_cipher;
00115
00116 struct wpa_ie_save_t wpa_ie;
00117
00118 struct connect_params_t conn;
00119
00120 GSList* pmk_cache;
00121
00122 GSList* roam_cache;
00123
00124 guint retry_count;
00125
00126 guint roam_scan;
00127
00128 guint roam_scan_id;
00129
00130 gint last_scan;
00131
00132 guint scan_id;
00133
00134 gint country_code;
00135
00136 gboolean signal;
00137
00138 gboolean ip_ok;
00139
00140 guint coex_state;
00141
00142 guint call_state;
00143 } wlan_status_t;
00144
00145 typedef struct wireless_iface
00146 {
00147
00148 struct wireless_iface * next;
00149
00150
00151 int ifindex;
00152
00153
00154 char ifname[IFNAMSIZ + 1];
00155 struct iw_range range;
00156 int has_range;
00157 } wireless_iface;
00158
00159
00160 typedef enum {
00161 FORCE_NO,
00162 FORCE_YES,
00163 } force_t;
00164
00165
00166 #define WLANCOND_LOW TRUE
00167 #define WLANCOND_HIGH FALSE
00168
00169
00170 enum scan_state {
00171 SCAN_NOT_ACTIVE = 0,
00172 SCAN_ACTIVE
00173 };
00174
00175
00176 enum wlan_state {
00177 WLAN_NOT_INITIALIZED = 0,
00178 WLAN_INITIALIZED,
00179 WLAN_INITIALIZED_FOR_SCAN,
00180 WLAN_INITIALIZED_FOR_CONNECTION,
00181 WLAN_NO_ADDRESS,
00182 WLAN_CONNECTED
00183 };
00184
00185
00186 #define WLANCOND_TX_POWER10DBM 10 // 10mW = 10dBm
00187 #define WLANCOND_TX_POWER100DBM 20 // 100mW = 20dBm
00188
00189
00190 enum wlan_power_state {
00191 WLANCOND_POWER_ON = 1,
00192 WLANCOND_LONG_CAM,
00193 WLANCOND_SHORT_CAM,
00194 WLANCOND_VERY_SHORT_CAM,
00195 WLANCOND_FULL_POWERSAVE
00196 };
00197
00198 enum bt_state {
00199 WLANCOND_BT_COEX_OFF,
00200 WLANCOND_BT_COEX_ON,
00201 WLANCOND_BT_COEX_MONOAUDIO
00202 };
00203
00204 enum call_state {
00205 WLANCOND_CALL_NONE,
00206 WLANCOND_CALL_VOIP,
00207 WLANCOND_CALL_CELL,
00208 WLANCOND_CALL_UNKNOWN
00209 };
00210
00211 #define NULL_BSSID (unsigned char*)"\x00\x00\x00\x00\x00\x00"
00212
00213 #define WLANCOND_DEFAULT_SLEEP_TIMEOUT 200000 // 200ms
00214 #define WLANCOND_VERY_SHORT_CAM_TIMEOUT 100000 // 100ms
00215 #define WLANCOND_LONG_CAM_TIMEOUT 4000000 // 4s
00216
00217 #define MIC_FAILURE_TIMEOUT 60 // 60 seconds
00218
00219
00220 #define NO_SIGNAL 0
00221 #define DISCONNECTED_SIGNAL 1
00222
00223
00224 #define WLANCOND_MAX_NETWORKS 30
00225 #define WLANCOND_MAX_SCAN_TRIES 3
00226
00227 #define WLANCOND_INITIAL_ROAM_SCAN_DELAY 2 // 2 seconds
00228 #define WLANCOND_ROAM_THRESHOLD 10
00229 #define WLANCOND_MIN_ROAM_SCAN_INTERVAL 60 // 60 seconds
00230 #define WLANCOND_MAX_ROAM_SCAN_INTERVAL 16*60 // 16 minutes
00231 #define WLANCOND_RSSI_PENALTY 25 // 25dBm
00232 #define WLANCOND_MINIMUM_SIGNAL -99
00233 #define WLANCOND_MINIMUM_AUTOCONNECT_RSSI -85
00234
00235
00236 #define GCONF_PATH_PREFIX "/system/osso/connectivity/IAP/"
00237 #define SLEEP_GCONF_PATH GCONF_PATH_PREFIX "wlan_sleep_timeout"
00238 #define INACTIVE_SLEEP_GCONF_PATH GCONF_PATH_PREFIX "inactive_wlan_sleep_timeout"
00239 #define DEBUG_LEVEL GCONF_PATH_PREFIX "wlancond_debug_level"
00240
00241
00242 #define WLANCOND_PRIO_HIGH 2
00243 #define WLANCOND_PRIO_MEDIUM 1
00244 #define WLANCOND_PRIO_LOW 0
00245
00246
00247 #define WLANCOND_REASON_LEAVING 3
00248 #define WLANCOND_REASON_MIC_FAILURE 14
00249
00250
00251 #define PHONE_NET_DBUS_SERVICE "com.nokia.phone.net"
00252 #define PHONE_NET_DBUS_PATH "/com/nokia/phone/net"
00253 #define PHONE_NET_DBUS_INTERFACE "Phone.Net"
00254 #define PHONE_REGISTRATION_STATUS_CHANGE_SIG "registration_status_change"
00255
00256
00257
00258 #define BLUEZ_SERVICE_NAME "org.bluez"
00259
00260 #define BLUEZ_MANAGER_PATH_NAME "/"
00261 #define BLUEZ_MANAGER_INTERFACE_NAME "org.bluez.Manager"
00262 #define BLUEZ_MANAGER_DEFAULT_ADAPTER_METHOD "DefaultAdapter"
00263
00264 #define BLUEZ_ADAPTER_SERVICE_NAME "org.bluez.Adapter"
00265 #define BLUEZ_ADAPTER_PROPERTY_CHANGED_SIG "PropertyChanged"
00266 #define BLUEZ_ADAPTER_PROPERTY_POWERED "Powered"
00267 #define BLUEZ_ADAPTER_GET_PROPERTIES_METHOD "GetProperties"
00268
00269 #define BLUEZ_HEADSET_SERVICE_NAME "org.bluez.Headset"
00270 #define BLUEZ_HEADSET_PROPERTY_CHANGED_SIG "PropertyChanged"
00271 #define BLUEZ_HEADSET_PROPERTY_STATE "State"
00272 #define BLUEZ_HEADSET_PROPERTY_PLAYING "playing"
00273
00274 #define BLUEZ_AUDIOSINK_SERVICE_NAME "org.bluez.AudioSink"
00275 #define BLUEZ_AUDIOSINK_PROPERTY_CHANGED_SIG "PropertyChanged"
00276 #define BLUEZ_AUDIOSINK_PROPERTY_STATE "State"
00277 #define BLUEZ_AUDIOSINK_PROPERTY_PLAYING "playing"
00278
00279 #define POLICY_SERVICE_NAME "com.nokia.policy"
00280 #define POLICY_ACTIONS_SIG "actions"
00281
00282
00283 #define WLANCOND_BT_COEX_FILE "/sys/devices/platform/wl12xx/bt_coex_mode"
00284
00285
00286 void init_logging(void);
00287 void wlancond_print(guint priority, const char *debug, ...);
00288 gboolean monitor_wi(void);
00289 void del_all_interface_data(void);
00290 struct wireless_iface *get_interface_data(int ifindex);
00291 int print_event_token(struct iw_event * event, struct scan_results_t *scan_results, int ifindex, gboolean scan_event);
00292 void send_dbus_scan_results(GSList* scan_results_save, const char* sender,
00293 dbus_int32_t number_of_results);
00294 GSList *save_scan_results(struct scan_results_t *scan_results,
00295 GSList *scan_results_save);
00296 void clean_scan_results(GSList **scan_results_save);
00297 void disconnected_signal(void);
00298 void mode_change(const char *mode);
00299 #ifdef ACTIVITY_CHECK
00300 void activity_check(dbus_bool_t activity);
00301 #endif
00302
00303 void clean_scan_results_item(gpointer data, gpointer user_data);
00304 void print_mac(guint priority, const char *message, guchar* mac);
00305
00306 #endif