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