Patch to split roaming out of wpa_supplicant
blaise at willowgarage.com
Mon Oct 4 18:28:35 EDT 2010
On Fri, Oct 1, 2010 at 11:56 AM, Blaise Gassend <blaise at willowgarage.com> wrote:
> Hi folks,
> I have a patch that I would be interested in pushing into
> wpa_supplicant. Before I get it into a shape that is useable by
> others, I would like to gauge whether it has a chance of being
> I'm currently working on a wireless seamless roaming solution for my
> company's robots (willowgarage.com). My general strategy has been to
> use wpa_supplicant to handle talking to the driver, and managing
> keys/security, and to split out decisions about scanning and what to
> associate to to my own code in python for ease of prototyping.
> In order to make this happen, I have had to put my own hooks into
> wpa_supplicant, and disable all its automated attempts at scanning and
> associating: the current wpa_cli API doesn't give me enough control,
> and after spending a while trying to determine if the dbus API had
> everything I needed, I decided that it would be quicker to put in my
> own hooks.
> I now have a patch that is starting to work for me, and am wondering
> if it could be valuable to others, and how best to make it available.
> If I was to provide a patch that adds a build flag that does the items
> below, would it have a chance of making it into the upstream
> wpa_supplicant? If there is interest, I will do the cleanup needed to
> make this easy to use for others (otherwise, my code that interfaces
> with ROS is available at
> The patch would include:
> - Build a .so and .pc file instead of a binary, that you can then link
> with your own code.
> - Disable all automatic scanning and association.
> - The following hooks (which I would rename to make them ROS
> agnostic), which get called at appropriate times during startup,
> shutdown, and upon association or scanning events.
> int ros_init(int *argc, char ***argv);
> void ros_init2();
> void ros_deinit();
> void ros_add_iface(struct wpa_supplicant *wpa_s);
> void ros_remove_iface(struct wpa_supplicant *wpa_s);
> void ros_scan_completed(struct wpa_supplicant *wpa_s, struct
> wpa_scan_results *scan_res);
> void ros_assoc_success(struct wpa_supplicant *wpa_s);
> void ros_assoc_failed(struct wpa_supplicant *wpa_s, const u8* bssid,
> const char *reason);
More information about the HostAP