1

je déclenche l'analyse avec le code suivantComment savoir quand scan terminé

struct nl_msg *msg = nlmsg_alloc(); 
struct nlmsghdr *hdr; 
struct genlmsghdr cmd = { .cmd = NL80211_CMD_TRIGGER_SCAN }; 

struct nl_sock *sock = nl_socket_alloc(); 

int dev = if_nametoindex("wlan0"); 
nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev); 

hdr = nlmsg_put(msg, NL_AUTO_PID, NL_AUTO_SEQ, NLMSG_NOOP, 0, 0); 
memcpy(nlmsg_data(hdr), &cmd, sizeof(cmd)); 
nl_send_auto(sock, msg); 

Maintenant, comment dois-je savoir quand analyse est terminée, et comment puis-je obtenir? Dans tous les endroits où j'ai cherché jusqu'ici, il y a "Vous recevrez une notification NL80211_CMD_NEW_SCANS sur" scan "groupe de multidiffusion", Comment devrais-je m'abonner? je me suis inscrit mon rappel, essayé

nl_socket_add_memberships(sock, RTN_MULTICAST); 

et après l'écoute des messages dans tout avec

while (1) 
    nl_recvmsgs_default(sock); 

, mais rien ne se passe, donc: si vous aviez assez de patience pour lire jusqu'à ce point, s'il vous plaît aidez-moi avec 2 questions

1) Comment puis-je savoir lorsque l'analyse est terminée (comment vous abonner à ces notifications, ou les lire, etc.)

2) Comment puis-je lire les messages après notif Pour lire les données scannées, je dois envoyer un message semblable à celui qui déclenche l'analyse, mais avec le message NL80211_CMD_GET_SCAN, et après que les données seront stockées dans la charge utile de nl_socket, ai-je raison?

Répondre

0

envoyez un NL80211_CMD_TRIGGER_SCAN pour lancer une analyse. (l'un après l'autre échouera) Après l'envoi, puis écoutez l'analyse pour terminer lorsque vous obtenez un NL80211_CMD_NEW_SCAN_RESULTS. une commande NL80211_CMD_GET_SCAN pour demander les résultats. Vous recevrez un message pour chaque station trouvée, alors soyez prêt à gérer plusieurs messages.

  • NL80211_CMD_TRIGGER_SCAN pour scanner hors
  • écouter NL80211_CMD_NEW_SCAN_RESULTS
  • commande NL80211_CMD_GET_SCAN pour demander les résultats
  • devrait obtenir un message de retour pour chaque station trouvée
Questions connexes