mirror of
https://github.com/meshtastic/firmware.git
synced 2025-05-01 19:46:42 +00:00
refactor classes to accomodate SerialModule
This commit is contained in:
parent
1a3f2a8ab5
commit
a289406863
@ -25,7 +25,7 @@ void consolePrintf(const char *format, ...)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
SerialConsole::SerialConsole() : StreamAPI(&Port), RedirectablePrint(&Port)
|
SerialConsole::SerialConsole() : StreamAPI(&Port), RedirectablePrint(&Port), concurrency::OSThread("SerialConsole")
|
||||||
{
|
{
|
||||||
assert(!console);
|
assert(!console);
|
||||||
console = this;
|
console = this;
|
||||||
@ -46,6 +46,10 @@ SerialConsole::SerialConsole() : StreamAPI(&Port), RedirectablePrint(&Port)
|
|||||||
emitRebooted();
|
emitRebooted();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t SerialConsole::runOnce()
|
||||||
|
{
|
||||||
|
return runOncePart();
|
||||||
|
}
|
||||||
|
|
||||||
// For the serial port we can't really detect if any client is on the other side, so instead just look for recent messages
|
// For the serial port we can't really detect if any client is on the other side, so instead just look for recent messages
|
||||||
bool SerialConsole::checkIsConnected()
|
bool SerialConsole::checkIsConnected()
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* Provides both debug printing and, if the client starts sending protobufs to us, switches to send/receive protobufs
|
* Provides both debug printing and, if the client starts sending protobufs to us, switches to send/receive protobufs
|
||||||
* (and starts dropping debug printing - FIXME, eventually those prints should be encapsulated in protobufs).
|
* (and starts dropping debug printing - FIXME, eventually those prints should be encapsulated in protobufs).
|
||||||
*/
|
*/
|
||||||
class SerialConsole : public StreamAPI, public RedirectablePrint
|
class SerialConsole : public StreamAPI, public RedirectablePrint, private concurrency::OSThread
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SerialConsole();
|
SerialConsole();
|
||||||
@ -24,6 +24,8 @@ class SerialConsole : public StreamAPI, public RedirectablePrint
|
|||||||
return RedirectablePrint::write(c);
|
return RedirectablePrint::write(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual int32_t runOnce() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
/// Check the current underlying physical link to see if the client is currently connected
|
/// Check the current underlying physical link to see if the client is currently connected
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#define START2 0xc3
|
#define START2 0xc3
|
||||||
#define HEADER_LEN 4
|
#define HEADER_LEN 4
|
||||||
|
|
||||||
int32_t StreamAPI::runOnce()
|
int32_t StreamAPI::runOncePart()
|
||||||
{
|
{
|
||||||
auto result = readStream();
|
auto result = readStream();
|
||||||
writeStream();
|
writeStream();
|
||||||
|
@ -28,7 +28,7 @@ valid utf8 encoding. This makes it a bit easier to start a device outputting reg
|
|||||||
after it has received a valid packet from the PC, turn off unencoded debug printing and switch to this packet encoding.
|
after it has received a valid packet from the PC, turn off unencoded debug printing and switch to this packet encoding.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
class StreamAPI : public PhoneAPI, protected concurrency::OSThread
|
class StreamAPI : public PhoneAPI
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* The stream we read/write from
|
* The stream we read/write from
|
||||||
@ -42,13 +42,13 @@ class StreamAPI : public PhoneAPI, protected concurrency::OSThread
|
|||||||
uint32_t lastRxMsec = 0;
|
uint32_t lastRxMsec = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
StreamAPI(Stream *_stream) : concurrency::OSThread("StreamAPI"), stream(_stream) {}
|
StreamAPI(Stream *_stream) : stream(_stream) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Currently we require frequent invocation from loop() to check for arrived serial packets and to send new packets to the
|
* Currently we require frequent invocation from loop() to check for arrived serial packets and to send new packets to the
|
||||||
* phone.
|
* phone.
|
||||||
*/
|
*/
|
||||||
virtual int32_t runOnce() override;
|
virtual int32_t runOncePart();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
|
@ -14,7 +14,7 @@ void initApiServer(int port)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ethServerAPI::ethServerAPI(EthernetClient &_client) : StreamAPI(&client), client(_client)
|
ethServerAPI::ethServerAPI(EthernetClient &_client) : StreamAPI(&client), concurrency::OSThread("ethServerAPI"), client(_client)
|
||||||
{
|
{
|
||||||
DEBUG_MSG("Incoming ethernet connection\n");
|
DEBUG_MSG("Incoming ethernet connection\n");
|
||||||
}
|
}
|
||||||
@ -42,7 +42,7 @@ bool ethServerAPI::checkIsConnected()
|
|||||||
int32_t ethServerAPI::runOnce()
|
int32_t ethServerAPI::runOnce()
|
||||||
{
|
{
|
||||||
if (client.connected()) {
|
if (client.connected()) {
|
||||||
return StreamAPI::runOnce();
|
return StreamAPI::runOncePart();
|
||||||
} else {
|
} else {
|
||||||
DEBUG_MSG("Client dropped connection, suspending API service\n");
|
DEBUG_MSG("Client dropped connection, suspending API service\n");
|
||||||
enabled = false; // we no longer need to run
|
enabled = false; // we no longer need to run
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Provides both debug printing and, if the client starts sending protobufs to us, switches to send/receive protobufs
|
* Provides both debug printing and, if the client starts sending protobufs to us, switches to send/receive protobufs
|
||||||
* (and starts dropping debug printing - FIXME, eventually those prints should be encapsulated in protobufs).
|
* (and starts dropping debug printing - FIXME, eventually those prints should be encapsulated in protobufs).
|
||||||
*/
|
*/
|
||||||
class ethServerAPI : public StreamAPI
|
class ethServerAPI : public StreamAPI, private concurrency::OSThread
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
EthernetClient client;
|
EthernetClient client;
|
||||||
|
@ -14,7 +14,7 @@ void initApiServer(int port)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WiFiServerAPI::WiFiServerAPI(WiFiClient &_client) : StreamAPI(&client), client(_client)
|
WiFiServerAPI::WiFiServerAPI(WiFiClient &_client) : StreamAPI(&client), concurrency::OSThread("WiFiServerAPI"), client(_client)
|
||||||
{
|
{
|
||||||
DEBUG_MSG("Incoming wifi connection\n");
|
DEBUG_MSG("Incoming wifi connection\n");
|
||||||
}
|
}
|
||||||
@ -42,7 +42,7 @@ bool WiFiServerAPI::checkIsConnected()
|
|||||||
int32_t WiFiServerAPI::runOnce()
|
int32_t WiFiServerAPI::runOnce()
|
||||||
{
|
{
|
||||||
if (client.connected()) {
|
if (client.connected()) {
|
||||||
return StreamAPI::runOnce();
|
return StreamAPI::runOncePart();
|
||||||
} else {
|
} else {
|
||||||
DEBUG_MSG("Client dropped connection, suspending API service\n");
|
DEBUG_MSG("Client dropped connection, suspending API service\n");
|
||||||
enabled = false; // we no longer need to run
|
enabled = false; // we no longer need to run
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Provides both debug printing and, if the client starts sending protobufs to us, switches to send/receive protobufs
|
* Provides both debug printing and, if the client starts sending protobufs to us, switches to send/receive protobufs
|
||||||
* (and starts dropping debug printing - FIXME, eventually those prints should be encapsulated in protobufs).
|
* (and starts dropping debug printing - FIXME, eventually those prints should be encapsulated in protobufs).
|
||||||
*/
|
*/
|
||||||
class WiFiServerAPI : public StreamAPI
|
class WiFiServerAPI : public StreamAPI, private concurrency::OSThread
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
WiFiClient client;
|
WiFiClient client;
|
||||||
|
@ -197,7 +197,7 @@ int32_t SerialModule::runOnce()
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (moduleConfig.serial.mode == ModuleConfig_SerialConfig_Serial_Mode_PROTO) {
|
if (moduleConfig.serial.mode == ModuleConfig_SerialConfig_Serial_Mode_PROTO) {
|
||||||
return StreamAPI::runOnce();
|
return runOncePart();
|
||||||
} else if (moduleConfig.serial.mode == ModuleConfig_SerialConfig_Serial_Mode_NMEA) {
|
} else if (moduleConfig.serial.mode == ModuleConfig_SerialConfig_Serial_Mode_NMEA) {
|
||||||
// in NMEA mode send out GGA every 2 seconds, Don't read from Port
|
// in NMEA mode send out GGA every 2 seconds, Don't read from Port
|
||||||
if (millis() - lastNmeaTime > 2000) {
|
if (millis() - lastNmeaTime > 2000) {
|
||||||
|
Loading…
Reference in New Issue
Block a user