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?