Skip to content

Commit 6f27863

Browse files
committed
Added function to get firmware version
1 parent 6ab79f0 commit 6f27863

File tree

6 files changed

+52
-5
lines changed

6 files changed

+52
-5
lines changed

WiFi/WiFi.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ uint8_t WiFiClass::getSocket()
3434
return NO_SOCKET_AVAIL;
3535
}
3636

37+
char* WiFiClass::firmwareVersion()
38+
{
39+
return WiFiDrv::getFwVersion();
40+
}
41+
3742
int WiFiClass::begin(char* ssid)
3843
{
3944
uint8_t status = WL_IDLE_STATUS;

WiFi/WiFi.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ class WiFiClass
2828
*/
2929
static uint8_t getSocket();
3030

31+
/*
32+
* Get firmware version
33+
*/
34+
static char* firmwareVersion();
35+
36+
3137
/* Start Wifi connection for OPEN networks
3238
*
3339
* param ssid: Pointer to the SSID string.

WiFi/utility/spi_drv.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ extern "C" {
77
#include "debug.h"
88
}
99

10-
#define DATAOUT 11//MOSI
11-
#define DATAIN 12//MISO
12-
#define SPICLOCK 13//sck
13-
#define SLAVESELECT 10//ss
14-
#define SLAVEREADY 3
10+
#define DATAOUT 11 // MOSI
11+
#define DATAIN 12 // MISO
12+
#define SPICLOCK 13 // sck
13+
#define SLAVESELECT 10 // ss
14+
#define SLAVEREADY 3 // handshake pin
15+
#define WIFILED 9 // led on wifi shield
1516

1617
#define DELAY_100NS do { asm volatile("nop"); }while(0);
1718
#define DELAY_SPI(X) { int ii=0; do { asm volatile("nop"); }while(++ii<X);}
@@ -30,11 +31,13 @@ void SpiDrv::begin()
3031
pinMode(SS, OUTPUT);
3132
pinMode(SLAVESELECT, OUTPUT);
3233
pinMode(SLAVEREADY, INPUT);
34+
pinMode(WIFILED, OUTPUT);
3335

3436
digitalWrite(SCK, LOW);
3537
digitalWrite(MOSI, LOW);
3638
digitalWrite(SS, HIGH);
3739
digitalWrite(SLAVESELECT, HIGH);
40+
digitalWrite(WIFILED, LOW);
3841

3942
#ifdef _DEBUG_
4043
INIT_TRIGGER()

WiFi/utility/wifi_drv.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ uint8_t WiFiDrv::_mac[] = {0};
2626
uint8_t WiFiDrv::_localIp[] = {0};
2727
uint8_t WiFiDrv::_subnetMask[] = {0};
2828
uint8_t WiFiDrv::_gatewayIp[] = {0};
29+
// Firmware version
30+
char WiFiDrv::fwVersion[] = {0};
2931

3032

3133
// Private Methods
@@ -467,4 +469,23 @@ int WiFiDrv::getHostByName(const char* aHostname, IPAddress& aResult)
467469
return (retry>0);
468470
}
469471

472+
char* WiFiDrv::getFwVersion()
473+
{
474+
WAIT_FOR_SLAVE_SELECT();
475+
// Send Command
476+
SpiDrv::sendCmd(GET_FW_VERSION_CMD, PARAM_NUMS_0);
477+
478+
//Wait the reply elaboration
479+
SpiDrv::waitForSlaveReady();
480+
481+
// Wait for reply
482+
uint8_t _dataLen = 0;
483+
if (!SpiDrv::waitResponseCmd(GET_FW_VERSION_CMD, PARAM_NUMS_1, (uint8_t*)fwVersion, &_dataLen))
484+
{
485+
WARN("error waitResponse");
486+
}
487+
SpiDrv::spiSlaveDeselect();
488+
return fwVersion;
489+
}
490+
470491
WiFiDrv wiFiDrv;

WiFi/utility/wifi_drv.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#define KEY_IDX_LEN 1
1010
// 5 secs of delay to have the connection established
1111
#define WL_DELAY_START_CONNECTION 5000
12+
// firmware version string length
13+
#define WL_FW_VER_LENGTH 6
1214

1315
class WiFiDrv
1416
{
@@ -18,6 +20,9 @@ class WiFiDrv
1820
static int32_t _networkRssi[WL_NETWORKS_LIST_MAXNUM];
1921
static uint8_t _networkEncr[WL_NETWORKS_LIST_MAXNUM];
2022

23+
// firmware version string in the format a.b.c
24+
static char fwVersion[WL_FW_VER_LENGTH];
25+
2126
// settings of current selected network
2227
static char _ssid[WL_SSID_MAX_LENGTH];
2328
static uint8_t _bssid[WL_MAC_ADDR_LENGTH];
@@ -201,6 +206,12 @@ class WiFiDrv
201206
*/
202207
static int getHostByName(const char* aHostname, IPAddress& aResult);
203208

209+
/*
210+
* Get the firmware version
211+
* result: version as string with this format a.b.c
212+
*/
213+
static char* getFwVersion();
214+
204215
};
205216

206217
extern WiFiDrv wiFiDrv;

WiFi/utility/wifi_spi.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ enum {
4848
REQ_HOST_BY_NAME_CMD= 0x34,
4949
GET_HOST_BY_NAME_CMD= 0x35,
5050
START_SCAN_NETWORKS = 0x36,
51+
GET_FW_VERSION_CMD = 0x37,
5152

5253
// All command with DATA_FLAG 0x40 send a 16bit Len
5354

0 commit comments

Comments
 (0)