1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-02-21 15:54:39 +01:00

Added function to get firmware version

This commit is contained in:
Mimmo La Fauci 2012-06-08 18:56:47 +02:00
parent 6ab79f0536
commit 6f27863ae5
6 changed files with 52 additions and 5 deletions

View File

@ -34,6 +34,11 @@ uint8_t WiFiClass::getSocket()
return NO_SOCKET_AVAIL; return NO_SOCKET_AVAIL;
} }
char* WiFiClass::firmwareVersion()
{
return WiFiDrv::getFwVersion();
}
int WiFiClass::begin(char* ssid) int WiFiClass::begin(char* ssid)
{ {
uint8_t status = WL_IDLE_STATUS; uint8_t status = WL_IDLE_STATUS;

View File

@ -28,6 +28,12 @@ public:
*/ */
static uint8_t getSocket(); static uint8_t getSocket();
/*
* Get firmware version
*/
static char* firmwareVersion();
/* Start Wifi connection for OPEN networks /* Start Wifi connection for OPEN networks
* *
* param ssid: Pointer to the SSID string. * param ssid: Pointer to the SSID string.

View File

@ -11,7 +11,8 @@ extern "C" {
#define DATAIN 12 // MISO #define DATAIN 12 // MISO
#define SPICLOCK 13 // sck #define SPICLOCK 13 // sck
#define SLAVESELECT 10 // ss #define SLAVESELECT 10 // ss
#define SLAVEREADY 3 #define SLAVEREADY 3 // handshake pin
#define WIFILED 9 // led on wifi shield
#define DELAY_100NS do { asm volatile("nop"); }while(0); #define DELAY_100NS do { asm volatile("nop"); }while(0);
#define DELAY_SPI(X) { int ii=0; do { asm volatile("nop"); }while(++ii<X);} #define DELAY_SPI(X) { int ii=0; do { asm volatile("nop"); }while(++ii<X);}
@ -30,11 +31,13 @@ void SpiDrv::begin()
pinMode(SS, OUTPUT); pinMode(SS, OUTPUT);
pinMode(SLAVESELECT, OUTPUT); pinMode(SLAVESELECT, OUTPUT);
pinMode(SLAVEREADY, INPUT); pinMode(SLAVEREADY, INPUT);
pinMode(WIFILED, OUTPUT);
digitalWrite(SCK, LOW); digitalWrite(SCK, LOW);
digitalWrite(MOSI, LOW); digitalWrite(MOSI, LOW);
digitalWrite(SS, HIGH); digitalWrite(SS, HIGH);
digitalWrite(SLAVESELECT, HIGH); digitalWrite(SLAVESELECT, HIGH);
digitalWrite(WIFILED, LOW);
#ifdef _DEBUG_ #ifdef _DEBUG_
INIT_TRIGGER() INIT_TRIGGER()

View File

@ -26,6 +26,8 @@ uint8_t WiFiDrv::_mac[] = {0};
uint8_t WiFiDrv::_localIp[] = {0}; uint8_t WiFiDrv::_localIp[] = {0};
uint8_t WiFiDrv::_subnetMask[] = {0}; uint8_t WiFiDrv::_subnetMask[] = {0};
uint8_t WiFiDrv::_gatewayIp[] = {0}; uint8_t WiFiDrv::_gatewayIp[] = {0};
// Firmware version
char WiFiDrv::fwVersion[] = {0};
// Private Methods // Private Methods
@ -467,4 +469,23 @@ int WiFiDrv::getHostByName(const char* aHostname, IPAddress& aResult)
return (retry>0); return (retry>0);
} }
char* WiFiDrv::getFwVersion()
{
WAIT_FOR_SLAVE_SELECT();
// Send Command
SpiDrv::sendCmd(GET_FW_VERSION_CMD, PARAM_NUMS_0);
//Wait the reply elaboration
SpiDrv::waitForSlaveReady();
// Wait for reply
uint8_t _dataLen = 0;
if (!SpiDrv::waitResponseCmd(GET_FW_VERSION_CMD, PARAM_NUMS_1, (uint8_t*)fwVersion, &_dataLen))
{
WARN("error waitResponse");
}
SpiDrv::spiSlaveDeselect();
return fwVersion;
}
WiFiDrv wiFiDrv; WiFiDrv wiFiDrv;

View File

@ -9,6 +9,8 @@
#define KEY_IDX_LEN 1 #define KEY_IDX_LEN 1
// 5 secs of delay to have the connection established // 5 secs of delay to have the connection established
#define WL_DELAY_START_CONNECTION 5000 #define WL_DELAY_START_CONNECTION 5000
// firmware version string length
#define WL_FW_VER_LENGTH 6
class WiFiDrv class WiFiDrv
{ {
@ -18,6 +20,9 @@ private:
static int32_t _networkRssi[WL_NETWORKS_LIST_MAXNUM]; static int32_t _networkRssi[WL_NETWORKS_LIST_MAXNUM];
static uint8_t _networkEncr[WL_NETWORKS_LIST_MAXNUM]; static uint8_t _networkEncr[WL_NETWORKS_LIST_MAXNUM];
// firmware version string in the format a.b.c
static char fwVersion[WL_FW_VER_LENGTH];
// settings of current selected network // settings of current selected network
static char _ssid[WL_SSID_MAX_LENGTH]; static char _ssid[WL_SSID_MAX_LENGTH];
static uint8_t _bssid[WL_MAC_ADDR_LENGTH]; static uint8_t _bssid[WL_MAC_ADDR_LENGTH];
@ -201,6 +206,12 @@ public:
*/ */
static int getHostByName(const char* aHostname, IPAddress& aResult); static int getHostByName(const char* aHostname, IPAddress& aResult);
/*
* Get the firmware version
* result: version as string with this format a.b.c
*/
static char* getFwVersion();
}; };
extern WiFiDrv wiFiDrv; extern WiFiDrv wiFiDrv;

View File

@ -48,6 +48,7 @@ enum {
REQ_HOST_BY_NAME_CMD= 0x34, REQ_HOST_BY_NAME_CMD= 0x34,
GET_HOST_BY_NAME_CMD= 0x35, GET_HOST_BY_NAME_CMD= 0x35,
START_SCAN_NETWORKS = 0x36, START_SCAN_NETWORKS = 0x36,
GET_FW_VERSION_CMD = 0x37,
// All command with DATA_FLAG 0x40 send a 16bit Len // All command with DATA_FLAG 0x40 send a 16bit Len