[[[slow]]]

This commit is contained in:
informatic 2019-05-09 20:18:18 +02:00
parent 76f049e4c1
commit 43d45025d3

View file

@ -21,7 +21,7 @@ private:
int wpos = 0; int wpos = 0;
int rpos = 0; int rpos = 0;
Timer bitTimer; HardwareTimer bitTimer; // (HardwareTimerMode::eHWT_Maskable);
int pin; int pin;
@ -35,6 +35,7 @@ private:
static SoftwareSerial* instance; static SoftwareSerial* instance;
public: public:
SoftwareSerial() : bitTimer(eHWT_Maskable) { }
bool write(uint8_t byte) { bool write(uint8_t byte) {
if (full()) { if (full()) {
return false; return false;
@ -57,8 +58,8 @@ public:
return (wpos + 1) % BUFSIZE == rpos; return (wpos + 1) % BUFSIZE == rpos;
} }
void feedBit() { void IRAM_ATTR feedBit() {
Serial.printf("."); //Serial.write('.');
if (empty()) { if (empty()) {
bitnum = -startbits; bitnum = -startbits;
end(); end();
@ -88,16 +89,16 @@ public:
digitalWrite(pin, cb); digitalWrite(pin, cb);
} }
static void IRAM_ATTR staticFeedBit(void) {
if (SoftwareSerial::instance) {
SoftwareSerial::instance->feedBit();
}
}
void begin(int pin_, int rxtime) { void begin(int pin_, int rxtime) {
pin = pin_; pin = pin_;
instance = this; instance = this;
bitTimer.initializeMs(rxtime, *[]() { bitTimer.initializeMs(rxtime, &SoftwareSerial::staticFeedBit);
// FIXME
//Serial.write('!');
if (SoftwareSerial::instance) {
SoftwareSerial::instance->feedBit();
}
});
} }
void start() { void start() {
@ -126,7 +127,7 @@ void tcpServerClientConnected (TcpClient* client) {
System.setCpuFrequency(eCF_160MHz); System.setCpuFrequency(eCF_160MHz);
if (clientcount == 0) { if (clientcount == 0) {
tty.begin(DATA_TX, 20); tty.begin(DATA_TX, 19);
} }
clientcount++; clientcount++;
@ -138,7 +139,7 @@ void tcpServerClientConnected (TcpClient* client) {
bool tcpServerClientReceive (TcpClient& client, char *data, int size) { bool tcpServerClientReceive (TcpClient& client, char *data, int size) {
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
tty.write(data[i]); tty.write(data[i]);
Serial.write(data[i]); //Serial.write(data[i]);
} }
return true; return true;
} }