mirror of
https://github.com/arduino/Arduino.git
synced 2025-03-14 11:29:26 +01:00
Fix Issue related to get encription type, rssi information on available network
This commit is contained in:
parent
08fe0f4433
commit
7f75f5d44c
Binary file not shown.
@ -5,6 +5,8 @@
|
|||||||
* Author: mlf by Metodo2 srl
|
* Author: mlf by Metodo2 srl
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//#define _APP_DEBUG_
|
||||||
|
|
||||||
#include <avr32/io.h>
|
#include <avr32/io.h>
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
#include "gpio.h"
|
#include "gpio.h"
|
||||||
@ -164,6 +166,9 @@ void* mapSockTCP[MAX_SOCK_NUM];
|
|||||||
|
|
||||||
struct netif* ard_netif = NULL;
|
struct netif* ard_netif = NULL;
|
||||||
|
|
||||||
|
// Network list retrived in the last scanNetwork
|
||||||
|
static struct wl_network_t network_list[WL_NETWORKS_LIST_MAXNUM];
|
||||||
|
|
||||||
void* getTTCP(uint8_t sock)
|
void* getTTCP(uint8_t sock)
|
||||||
{
|
{
|
||||||
if (sock < MAX_SOCK_NUM)
|
if (sock < MAX_SOCK_NUM)
|
||||||
@ -356,6 +361,23 @@ void dump(char* _buf, uint16_t _count) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _APP_DEBUG_
|
||||||
|
#define DUMP_SPI_CMD(BUF) do { \
|
||||||
|
int i = 0; \
|
||||||
|
for (; i < CMD_MAX_LEN; ++i) \
|
||||||
|
{ \
|
||||||
|
printk("0x%x ", BUF[i]); \
|
||||||
|
if (BUF[i] == END_CMD) \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
printk("\n"); \
|
||||||
|
}while(0);
|
||||||
|
#else
|
||||||
|
#define DUMP_SPI_CMD(BUF) do {}while(0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int spi_add_cmd(char _cmd_id, cmd_spi_cb_t cb, cmd_spi_rcb_t rcb, void* ctx,
|
int spi_add_cmd(char _cmd_id, cmd_spi_cb_t cb, cmd_spi_rcb_t rcb, void* ctx,
|
||||||
char flag) {
|
char flag) {
|
||||||
U32 i;
|
U32 i;
|
||||||
@ -796,11 +818,60 @@ cmd_spi_state_t get_reply_curr_net_cb(char* recv, char* reply, void* ctx, uint16
|
|||||||
return SPI_CMD_DONE;
|
return SPI_CMD_DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmd_spi_state_t get_reply_idx_net_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
|
||||||
|
|
||||||
|
uint32_t type = (uint32_t)ctx;
|
||||||
|
CHECK_ARD_NETIF(recv, reply, count);
|
||||||
|
|
||||||
|
CREATE_HEADER_REPLY(reply, recv, 1);
|
||||||
|
|
||||||
|
DUMP_SPI_CMD(recv);
|
||||||
|
|
||||||
|
GET_DATA_BYTE(idx, recv+4);
|
||||||
|
|
||||||
|
if (idx >= WL_NETWORKS_LIST_MAXNUM)
|
||||||
|
{
|
||||||
|
WARN("Index out of range: %d\n", idx);
|
||||||
|
return SPI_CMD_DONE;
|
||||||
|
}
|
||||||
|
uint8_t len = 0;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
case GET_IDX_SSID_CMD:
|
||||||
|
{
|
||||||
|
len = network_list[idx].ssid.len;
|
||||||
|
PUT_BUFDATA_BYTE(network_list[idx].ssid.ssid, len, reply, 3);
|
||||||
|
INFO_UTIL("SSID:%s\n", network_list[idx].ssid.ssid);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case GET_IDX_RSSI_CMD:
|
||||||
|
{
|
||||||
|
len = 4;
|
||||||
|
PUT_LONG_IN_BYTE_HO(network_list[idx].rssi, reply, 3);
|
||||||
|
INFO_UTIL("RSSI:%d\n", network_list[idx].rssi);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case GET_IDX_ENCT_CMD:
|
||||||
|
{
|
||||||
|
len = 1;
|
||||||
|
PUT_DATA_BYTE(network_list[idx].enc_type, reply, 3);
|
||||||
|
INFO_UTIL("ENCT:%d\n", network_list[idx].enc_type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
END_HEADER_REPLY(reply, 3+len+1, *count);
|
||||||
|
|
||||||
|
dump(reply, *count);
|
||||||
|
|
||||||
|
return SPI_CMD_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
cmd_spi_state_t get_reply_scan_networks_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
|
cmd_spi_state_t get_reply_scan_networks_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
|
||||||
|
|
||||||
struct wl_network_t network_list[WL_NETWORKS_LIST_MAXNUM];
|
|
||||||
|
|
||||||
INFO_SPI("netif:0x%x\n", ard_netif);
|
INFO_SPI("netif:0x%x\n", ard_netif);
|
||||||
CHECK_ARD_NETIF(recv, reply, count);
|
CHECK_ARD_NETIF(recv, reply, count);
|
||||||
|
|
||||||
@ -837,6 +908,8 @@ cmd_spi_state_t get_reply_scan_networks_cb(char* recv, char* reply, void* ctx, u
|
|||||||
uint8_t len = network_list[ii].ssid.len;
|
uint8_t len = network_list[ii].ssid.len;
|
||||||
PUT_BUFDATA_BYTE(network_list[ii].ssid.ssid, len, reply, start);
|
PUT_BUFDATA_BYTE(network_list[ii].ssid.ssid, len, reply, start);
|
||||||
start += len+1;
|
start += len+1;
|
||||||
|
INFO_SPI("%d - %s - %d - %d - 0x%x\n",ii, network_list[ii].ssid.ssid, network_list[ii].enc_type,
|
||||||
|
network_list[ii].rssi, network_list[ii].bssid);
|
||||||
}
|
}
|
||||||
|
|
||||||
END_HEADER_REPLY(reply, start, *count);
|
END_HEADER_REPLY(reply, start, *count);
|
||||||
@ -1129,6 +1202,10 @@ void init_spi_cmds() {
|
|||||||
spi_add_cmd(GET_CURR_ENCT_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_ENCT_CMD, CMD_GET_FLAG);
|
spi_add_cmd(GET_CURR_ENCT_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_ENCT_CMD, CMD_GET_FLAG);
|
||||||
spi_add_cmd(SCAN_NETWORKS, ack_cmd_cb, get_reply_scan_networks_cb, NULL, CMD_GET_FLAG);
|
spi_add_cmd(SCAN_NETWORKS, ack_cmd_cb, get_reply_scan_networks_cb, NULL, CMD_GET_FLAG);
|
||||||
spi_add_cmd(DISCONNECT_CMD, disconnect_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
|
spi_add_cmd(DISCONNECT_CMD, disconnect_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
|
||||||
|
spi_add_cmd(GET_IDX_ENCT_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_ENCT_CMD, CMD_GET_FLAG);
|
||||||
|
spi_add_cmd(GET_IDX_SSID_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_SSID_CMD, CMD_GET_FLAG);
|
||||||
|
spi_add_cmd(GET_IDX_RSSI_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_RSSI_CMD, CMD_GET_FLAG);
|
||||||
|
|
||||||
spi_add_cmd(START_SERVER_TCP_CMD, start_server_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
|
spi_add_cmd(START_SERVER_TCP_CMD, start_server_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
|
||||||
spi_add_cmd(START_CLIENT_TCP_CMD, start_client_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
|
spi_add_cmd(START_CLIENT_TCP_CMD, start_client_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
|
||||||
spi_add_cmd(STOP_CLIENT_TCP_CMD, stop_client_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
|
spi_add_cmd(STOP_CLIENT_TCP_CMD, stop_client_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
|
||||||
@ -1237,7 +1314,6 @@ void spi_poll(struct netif* netif) {
|
|||||||
{
|
{
|
||||||
//LED_On(LED1);
|
//LED_On(LED1);
|
||||||
//INFO_SPI("[E(0x%x):%d spiStatus:%d]\n", statSpi.lastCmd, err, statSpi.status);
|
//INFO_SPI("[E(0x%x):%d spiStatus:%d]\n", statSpi.lastCmd, err, statSpi.status);
|
||||||
PRINT_STATS_SPI();
|
|
||||||
DUMP(buf, count);
|
DUMP(buf, count);
|
||||||
DUMP(reply, replyCount);
|
DUMP(reply, replyCount);
|
||||||
//LED_Off(LED1);
|
//LED_Off(LED1);
|
||||||
|
@ -45,12 +45,6 @@ typedef enum {
|
|||||||
typedef int (*cmd_spi_cb_t)(int numParam, char* buf, void* ctx);
|
typedef int (*cmd_spi_cb_t)(int numParam, char* buf, void* ctx);
|
||||||
typedef cmd_spi_state_t (*cmd_spi_rcb_t)(char* recv, char* reply, void* ctx, uint16_t* _count);
|
typedef cmd_spi_state_t (*cmd_spi_rcb_t)(char* recv, char* reply, void* ctx, uint16_t* _count);
|
||||||
|
|
||||||
#ifdef _APP_DEBUG_
|
|
||||||
#define PRINT_STATS_SPI() do { printStatSpi(); }while(0);
|
|
||||||
#else
|
|
||||||
#define PRINT_STATS_SPI() do { }while(0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void set_result_cmd(int err) ;
|
void set_result_cmd(int err) ;
|
||||||
|
|
||||||
void set_result(wl_status_t _status);
|
void set_result(wl_status_t _status);
|
||||||
|
@ -47,8 +47,10 @@ enum {
|
|||||||
START_CLIENT_TCP_CMD= 0x2D,
|
START_CLIENT_TCP_CMD= 0x2D,
|
||||||
STOP_CLIENT_TCP_CMD = 0x2E,
|
STOP_CLIENT_TCP_CMD = 0x2E,
|
||||||
GET_CLIENT_STATE_TCP_CMD = 0x2F,
|
GET_CLIENT_STATE_TCP_CMD = 0x2F,
|
||||||
|
|
||||||
DISCONNECT_CMD = 0x30,
|
DISCONNECT_CMD = 0x30,
|
||||||
|
GET_IDX_SSID_CMD = 0x31,
|
||||||
|
GET_IDX_RSSI_CMD = 0x32,
|
||||||
|
GET_IDX_ENCT_CMD = 0x33,
|
||||||
// All command with DATA_FLAG 0x40 send a 16bit Len
|
// All command with DATA_FLAG 0x40 send a 16bit Len
|
||||||
|
|
||||||
SEND_DATA_TCP_CMD = 0x44,
|
SEND_DATA_TCP_CMD = 0x44,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user