mirror of
https://github.com/esp8266/Arduino.git
synced 2025-07-30 16:24:09 +03:00
Bugfix and fix compilation erro with new-extensions branch
This commit is contained in:
@ -13,8 +13,6 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "HardwareSerial.h"
|
||||
|
||||
#define INFO_0 1
|
||||
#define INFO_1 2
|
||||
#define INFO_2 4
|
||||
|
@ -12,7 +12,8 @@ extern "C" {
|
||||
#define SPICLOCK 13//sck
|
||||
#define SLAVESELECT 2//ss
|
||||
#define SLAVEREADY 3
|
||||
|
||||
|
||||
#define DELAY_100NS asm volatile("nop")
|
||||
|
||||
void SpiDrv::begin()
|
||||
{
|
||||
@ -60,6 +61,16 @@ void SpiDrv::spiSlaveDeselect()
|
||||
digitalWrite(SLAVESELECT,HIGH);
|
||||
}
|
||||
|
||||
void delaySpi()
|
||||
{
|
||||
int i = 0;
|
||||
const int DELAY = 1000;
|
||||
for (;i<DELAY;++i)
|
||||
{
|
||||
int a =a+1;
|
||||
}
|
||||
}
|
||||
|
||||
char SpiDrv::spiTransfer(volatile char data)
|
||||
{
|
||||
SPDR = data; // Start the transmission
|
||||
@ -67,7 +78,9 @@ char SpiDrv::spiTransfer(volatile char data)
|
||||
{
|
||||
};
|
||||
char result = SPDR;
|
||||
delayMicroseconds(SPI_TX_DELAY);
|
||||
DELAY_100NS;
|
||||
DELAY_100NS;
|
||||
//delayMicroseconds(SPI_TX_DELAY);
|
||||
return result; // return the received byte
|
||||
}
|
||||
|
||||
@ -104,14 +117,18 @@ int SpiDrv::waitSpiChar(unsigned char waitChar)
|
||||
|
||||
int SpiDrv::readAndCheckChar(char checkChar, char* readChar)
|
||||
{
|
||||
*readChar = spiTransfer(DUMMY_DATA); //get data byte
|
||||
//*readChar = spiTransfer(DUMMY_DATA); //get data byte
|
||||
getParam((uint8_t*)readChar);
|
||||
|
||||
return (*readChar == checkChar);
|
||||
}
|
||||
|
||||
char SpiDrv::readChar()
|
||||
{
|
||||
return spiTransfer(DUMMY_DATA); //get data byte
|
||||
uint8_t readChar = 0;
|
||||
getParam(&readChar);
|
||||
return readChar;
|
||||
//return spiTransfer(DUMMY_DATA); //get data byte
|
||||
}
|
||||
|
||||
//#define WAIT_START_CMD(x) waitSpiChar(START_CMD, &x)
|
||||
@ -130,18 +147,37 @@ char SpiDrv::readChar()
|
||||
#define CHECK_DATA(check, x) \
|
||||
if (!readAndCheckChar(check, &x)) \
|
||||
{ \
|
||||
TOGGLE_TRIGGER() \
|
||||
WARN("Reply error"); \
|
||||
INFO2(check, (uint8_t)x); \
|
||||
return 0; \
|
||||
}else \
|
||||
|
||||
#define waitSlaveReady() (digitalRead(SLAVEREADY) == LOW)
|
||||
#define waitSlaveSign() (digitalRead(SLAVEREADY) == HIGH)
|
||||
#define waitSlaveSignalH() while(digitalRead(SLAVEREADY) != HIGH){}
|
||||
#define waitSlaveSignalL() while(digitalRead(SLAVEREADY) != LOW){}
|
||||
|
||||
void SpiDrv::waitForSlaveSign()
|
||||
{
|
||||
while (!waitSlaveSign());
|
||||
}
|
||||
|
||||
void SpiDrv::waitForSlaveReady()
|
||||
{
|
||||
while (!waitSlaveReady());
|
||||
}
|
||||
|
||||
void SpiDrv::getParam(uint8_t* param)
|
||||
{
|
||||
// Get Params data
|
||||
*param = spiTransfer(DUMMY_DATA);
|
||||
DELAY_100NS;
|
||||
DELAY_100NS;
|
||||
DELAY_100NS;
|
||||
DELAY_100NS;
|
||||
}
|
||||
|
||||
int SpiDrv::waitResponseCmd(uint8_t cmd, uint8_t numParam, uint8_t* param, uint8_t* param_len)
|
||||
{
|
||||
char _data = 0;
|
||||
@ -157,7 +193,8 @@ int SpiDrv::waitResponseCmd(uint8_t cmd, uint8_t numParam, uint8_t* param, uint8
|
||||
for (ii=0; ii<(*param_len); ++ii)
|
||||
{
|
||||
// Get Params data
|
||||
param[ii] = spiTransfer(DUMMY_DATA);
|
||||
//param[ii] = spiTransfer(DUMMY_DATA);
|
||||
getParam(¶m[ii]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -470,6 +507,7 @@ void SpiDrv::sendCmd(uint8_t cmd, uint8_t numParam)
|
||||
// Send Spi START CMD
|
||||
spiTransfer(START_CMD);
|
||||
|
||||
//waitForSlaveSign();
|
||||
//wait the interrupt trigger on slave
|
||||
delayMicroseconds(SPI_START_CMD_DELAY);
|
||||
|
||||
|
@ -4,12 +4,7 @@
|
||||
#include <inttypes.h>
|
||||
#include "wifi_spi.h"
|
||||
|
||||
#define WAIT_CHAR_DELAY 100
|
||||
#define TIMEOUT_CHAR_DELAY 1 //10
|
||||
#define TIMEOUT_READY_SLAVE 1000
|
||||
#define SPI_TX_DELAY 1
|
||||
#define SPI_START_CMD_DELAY 10
|
||||
|
||||
#define SPI_START_CMD_DELAY 10
|
||||
|
||||
#define NO_LAST_PARAM 0
|
||||
#define LAST_PARAM 1
|
||||
@ -25,7 +20,9 @@
|
||||
class SpiDrv
|
||||
{
|
||||
private:
|
||||
static bool waitSlaveReady();
|
||||
//static bool waitSlaveReady();
|
||||
static void waitForSlaveSign();
|
||||
static void getParam(uint8_t* param);
|
||||
public:
|
||||
|
||||
static void begin();
|
||||
|
@ -351,4 +351,25 @@ int32_t WiFiDrv::getRSSINetoworks(uint8_t networkItem)
|
||||
return networkRssi;
|
||||
}
|
||||
|
||||
uint8_t WiFiDrv::testCmd()
|
||||
{
|
||||
WAIT_FOR_SLAVE_SELECT();
|
||||
|
||||
// Send Command
|
||||
SpiDrv::sendCmd(TEST_CMD, PARAM_NUMS_0);
|
||||
|
||||
//Wait the reply elaboration
|
||||
SpiDrv::waitForSlaveReady();
|
||||
|
||||
// Wait for reply
|
||||
uint8_t _data = 0;
|
||||
uint8_t _dataLen = 0;
|
||||
SpiDrv::waitResponseCmd(TEST_CMD, PARAM_NUMS_1, &_data, &_dataLen);
|
||||
|
||||
SpiDrv::spiSlaveDeselect();
|
||||
|
||||
return _data;
|
||||
}
|
||||
|
||||
|
||||
WiFiDrv wiFiDrv;
|
||||
|
@ -62,6 +62,7 @@ public:
|
||||
|
||||
static uint8_t getEncTypeNetowrks(uint8_t networkItem);
|
||||
|
||||
static uint8_t testCmd();
|
||||
};
|
||||
|
||||
extern WiFiDrv wiFiDrv;
|
||||
|
@ -23,6 +23,7 @@ enum {
|
||||
SET_NET_CMD = 0x10,
|
||||
SET_PASSPHRASE_CMD = 0x11,
|
||||
SET_KEY_CMD = 0x12,
|
||||
TEST_CMD = 0x13,
|
||||
|
||||
GET_CONN_STATUS_CMD = 0x20,
|
||||
GET_IPADDR_CMD = 0x21,
|
||||
|
Reference in New Issue
Block a user