想做个wifi程序作为AP热点,可是不知道如何下手。android有自带的作为AP热点的功能,现在wifi程序挺多的,应该可以作为一个很好的参考。
找了个Barnacle作为参考,因为有源码。
有兴趣的可以看下
http://szym.net/barnacle/
https://github.com/szym/barnacle然后我看源码,我看啊看啊,当我看到它的wifi目录下的两个文件时不淡定了
一个是头文件//hardware_legacy_stub.h
#include <stdlib.h>
int wifi_load_driver();
int wifi_unload_driver();
int wifi_start_supplicant();
int wifi_stop_supplicant();
int wifi_connect_to_supplicant();
void wifi_close_supplicant_connection();
int wifi_wait_for_event(char *buf, size_t len);
int wifi_command(const char *command, char *reply, size_t *reply_len);
看到这还好,感觉这几个函数都很熟悉。
看过android源码应该知道的,在android源码/hardware/libhardware_legacy/wifi/wifi.c
函数名跟这个一样,不对,应该说这个和wifi.c一样。
wifi.c文件太长了我就不贴上来了。好吧,我继续看它的实现,打开c文件//hardware_legacy_stub.c
#include "hardware_legacy_stub.h"
int wifi_load_driver() { return -1; }
int wifi_unload_driver() { return -1; }
int wifi_start_supplicant() { return -1; }
int wifi_stop_supplicant() { return -1; }
int wifi_connect_to_supplicant() { return -1; }
void wifi_close_supplicant_connection() { }
int wifi_wait_for_event(char *buf, size_t len) { return -1; }
int wifi_command(const char *command, char *reply, size_t *reply_len)  { return -1; }
我晕了,这是嘛意思啊? 都返回-1怎么用啊?
它的main函数里还一本正经的包含了这个头文件,并调用了这些函数求知情人是解释一下。
还有我程序该如何写才能实现软AP的功能?

解决方案 »

  1.   

    load driver 就是 load wifi driver, 具体的应该是 insmod xx.ko, 执行完了就返回 -1;
    unload driver 就是 unload wifi driver // rmmod xx.ko
    start supplicant // wpa_supplican start 
    stop supplicant // wpa_supplicant stop
    connect supplicant // 连接
    close supplicant // 断开
      

  2.   


    这个我知道的,你说的这些在android源码里hardware下的wifi.c里有具体的实现。
    而且返回-1 一般都是表示失败啊。
    可我不明白的是这个hardware_legacy_stub.c,就上面那几句话,并不是我为了简化而把中间实现过程删掉了后贴上来的,事实是那个文件就是这样。我不明白它为什么这样写。