Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: X_NUCLEO_IDW01M1v2-lapi-1
Fork of SPWF01SA by
Revision 24:b9f7b00b2635, committed 2016-11-20
- Comitter:
- lapi
- Date:
- Sun Nov 20 20:20:25 2016 +0000
- Parent:
- 23:0b01aa59bb6f
- Commit message:
- Changes required by X-NUCLEO-IDW01M1 and the new version of mbed-os
Changed in this revision
| SPWFSA01.cpp | Show annotated file Show diff for this revision Revisions of this file |
| SPWFSA01.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/SPWFSA01.cpp Thu Nov 03 06:53:47 2016 +0000
+++ b/SPWFSA01.cpp Sun Nov 20 20:20:25 2016 +0000
@@ -23,13 +23,10 @@
#define SPWFSA01_MISC_TIMEOUT 500
#define SPWFSA01_SOCKQ_TIMEOUT 3000
-SPWFSA01::SPWFSA01(PinName tx, PinName rx, bool debug)
- : _serial(tx, rx, 1024), _parser(_serial),
- _wakeup(D14, PIN_INPUT, PullNone, 0), _reset(D15, PIN_INPUT, PullNone, 1),
- //PC_12->D15, PC_8->D14 (re-wires needed in-case used, currently not used)
- dbg_on(debug)
- //Pin PC_8 is wakeup pin
- //Pin PA_12 is reset pin
+SPWFSA01::SPWFSA01(PinName tx, PinName rx, bool debug, PinName resetPin, PinName wakeupPin) :
+ _serial(tx, rx, 1024), _parser(_serial),
+ _reset(resetPin, PIN_INPUT, PullNone, 1), _wakeup(wakeupPin, PIN_INPUT, PullNone, 0),
+ dbg_on(debug)
{
_serial.baud(115200);
_reset.output();
@@ -115,12 +112,13 @@
void SPWFSA01::waitSPWFReady(void)
{
//wait_ms(200);
- while(1)
- if(_parser.send("AT") && _parser.recv("OK"))
+ while(1) {
+ if(_parser.send("AT") && _parser.recv("OK")) {
//till we get OK from AT command
- //printf("\r\nwaiting for reset to complete..\n");
+ printf("\r\nwaiting for SPWFSA01 Ready..\n");
return;
-
+ }
+ }
}
/* Security Mode
@@ -128,7 +126,7 @@
WEP = 1,
WPA_Personal = 2,
*/
-bool SPWFSA01::connect(const char *ap, const char *passPhrase, int securityMode)
+bool SPWFSA01::connect(const char *ap, const char *passPhrase, int securityMode, int channel)
{
uint32_t n1, n2, n3, n4;
@@ -144,6 +142,12 @@
debug_if(dbg_on, "SPWF> error ssid set\r\n");
return false;
}
+ //AT+S.SCFG=wifi_auth_type,%d\r, is 1 for WEP, 0 for none and WPA/WPA2
+ if(!(_parser.send("AT+S.SCFG=wifi_auth_type,%d", securityMode == 1 ? 1 : 0) && _parser.recv("OK")))
+ {
+ debug_if(dbg_on, "SPWF> error auth type set\r\n");
+ return false;
+ }
//AT+S.SCFG=wifi_priv_mode,%d\r
if(!(_parser.send("AT+S.SCFG=wifi_priv_mode,%d", securityMode) && _parser.recv("OK")))
{
@@ -157,6 +161,13 @@
debug_if(dbg_on, "SPWF> error wifi mode set\r\n");
return false;
}
+ //"AT+S.SCFG=wifi_channelnum,%d\r"
+ /*set channel*/
+ if(!(_parser.send("AT+S.SCFG=wifi_channelnum,%d\r", channel) && _parser.recv("OK")))
+ {
+ debug_if(dbg_on, "SPWF> error wifi channel set\r\n");
+ return false;
+ }
//AT&W
/* save current setting in flash */
if(!(_parser.send("AT&W") && _parser.recv("OK")))
@@ -210,6 +221,21 @@
}
+int8_t SPWFSA01::getRSSI(void)
+{
+ int32_t rssi;
+
+ if (!(_parser.send("AT+S.RCFG=rx_rssi")
+ && _parser.recv("# rx_rssi = %d", &rssi)
+ && _parser.recv("OK"))) {
+ debug_if(dbg_on, "SPWF> getIPAddress error\r\n");
+ return 0;
+ }
+
+ return (int8_t)rssi;
+}
+
+
const char *SPWFSA01::getIPAddress(void)
{
uint32_t n1, n2, n3, n4;
--- a/SPWFSA01.h Thu Nov 03 06:53:47 2016 +0000
+++ b/SPWFSA01.h Sun Nov 20 20:20:25 2016 +0000
@@ -25,7 +25,9 @@
class SPWFSA01
{
public:
- SPWFSA01(PinName tx, PinName rx, bool debug=false);
+ //Pin PC_8 is wakeup pin, Pin PC_12 reset pin with X-NUCLEO-IDW01M1
+ SPWFSA01(PinName tx, PinName rx, bool debug=false,
+ PinName resetPin=PC_12, PinName wakeupPin = PC_8);
/**
* Init the SPWFSA01
@@ -59,9 +61,10 @@
* @param ap the name of the AP
* @param passPhrase the password of AP
* @param securityMode the security mode of AP (WPA/WPA2, WEP, Open)
+ * @param channel the WiFi channel number
* @return true only if SPWFSA01 is connected successfully
*/
- bool connect(const char *ap, const char *passPhrase, int securityMode);
+ bool connect(const char *ap, const char *passPhrase, int securityMode, int channel);
/**
* Disconnect SPWFSA01 from AP
@@ -70,6 +73,14 @@
*/
bool disconnect(void);
+
+ /**
+ * Get the RSSI of the last packet
+ *
+ * @return the RSSI (dBm)
+ */
+ int8_t getRSSI(void);
+
/**
* Get the IP address of SPWFSA01
*
