fix memory leak in main messages
This commit is contained in:
parent
9b65ce51d4
commit
11c6c78ad6
|
@ -245,9 +245,7 @@ bool SetAISClassBMessage24(tNMEA0183AISMsg &NMEA0183AISMsg, uint8_t MessageID,
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
for ( i = 0; i < vships.size(); i++) {
|
for ( i = 0; i < vships.size(); i++) {
|
||||||
if ( vships[i]->_userID == UserID ) {
|
if ( vships[i]->_userID == UserID ) {
|
||||||
Serial.print("UserID gefunden: "); Serial.print(UserID);
|
|
||||||
ShipName = const_cast<char*>( vships[i]->_shipName.c_str() );
|
ShipName = const_cast<char*>( vships[i]->_shipName.c_str() );
|
||||||
Serial.print(" / "); Serial.println( ShipName);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( i > MAX_SHIP_IN_VECTOR ) {
|
if ( i > MAX_SHIP_IN_VECTOR ) {
|
||||||
|
|
|
@ -29,6 +29,8 @@ class Message{
|
||||||
}
|
}
|
||||||
virtual ~Message(){
|
virtual ~Message(){
|
||||||
GW_MESSAGE_DEBUG("~Message %p\n",this);
|
GW_MESSAGE_DEBUG("~Message %p\n",this);
|
||||||
|
vSemaphoreDelete(locker);
|
||||||
|
vSemaphoreDelete(notifier);
|
||||||
}
|
}
|
||||||
void unref(){
|
void unref(){
|
||||||
GW_MESSAGE_DEBUG("Message::unref %p\n",this);
|
GW_MESSAGE_DEBUG("Message::unref %p\n",this);
|
||||||
|
@ -81,9 +83,9 @@ class RequestMessage : public Message{
|
||||||
protected:
|
protected:
|
||||||
virtual void processRequest()=0;
|
virtual void processRequest()=0;
|
||||||
virtual void processImpl(){
|
virtual void processImpl(){
|
||||||
GW_MESSAGE_DEBUG("RequestMessage processImpl(1)");
|
GW_MESSAGE_DEBUG("RequestMessage processImpl(1) %p\n",this);
|
||||||
processRequest();
|
processRequest();
|
||||||
GW_MESSAGE_DEBUG("RequestMessage processImpl(2)");
|
GW_MESSAGE_DEBUG("RequestMessage processImpl(2) %p\n",this);
|
||||||
len=strlen(result.c_str());
|
len=strlen(result.c_str());
|
||||||
consumed=0;
|
consumed=0;
|
||||||
handled=true;
|
handled=true;
|
||||||
|
@ -92,6 +94,7 @@ class RequestMessage : public Message{
|
||||||
RequestMessage():Message(){
|
RequestMessage():Message(){
|
||||||
}
|
}
|
||||||
virtual ~RequestMessage(){
|
virtual ~RequestMessage(){
|
||||||
|
GW_MESSAGE_DEBUG("~RequestMessage %p\n",this)
|
||||||
}
|
}
|
||||||
String getResult(){return result;}
|
String getResult(){return result;}
|
||||||
int getLen(){return len;}
|
int getLen(){return len;}
|
||||||
|
|
17
src/main.cpp
17
src/main.cpp
|
@ -12,7 +12,10 @@
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define VERSION "0.1.2"
|
#define VERSION "0.2.0"
|
||||||
|
//#define GW_MESSAGE_DEBUG_ENABLED
|
||||||
|
//#define FALLBACK_SERIAL
|
||||||
|
const unsigned long HEAP_REPORT_TIME=2000; //set to 0 to disable heap reporting
|
||||||
#include "GwHardware.h"
|
#include "GwHardware.h"
|
||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
@ -223,8 +226,11 @@ void setup() {
|
||||||
if (usbBaud){
|
if (usbBaud){
|
||||||
baud=usbBaud->asInt();
|
baud=usbBaud->asInt();
|
||||||
}
|
}
|
||||||
int st=usbSerial.setup(baud,3,1); //TODO: PIN defines
|
#ifdef FALLBACK_SERIAL
|
||||||
//int st=-1;
|
int st=-1;
|
||||||
|
#else
|
||||||
|
int st=usbSerial.setup(baud,3,1); //TODO: PIN defines
|
||||||
|
#endif
|
||||||
if (st < 0){
|
if (st < 0){
|
||||||
//falling back to old style serial for logging
|
//falling back to old style serial for logging
|
||||||
Serial.begin(baud);
|
Serial.begin(baud);
|
||||||
|
@ -497,11 +503,10 @@ class NMEAMessageReceiver : public GwBufferWriter{
|
||||||
};
|
};
|
||||||
NMEAMessageReceiver receiver;
|
NMEAMessageReceiver receiver;
|
||||||
unsigned long lastHeapReport=0;
|
unsigned long lastHeapReport=0;
|
||||||
const unsigned long HEAP_REPORT_TIME=2000;
|
|
||||||
void loop() {
|
void loop() {
|
||||||
gwWifi.loop();
|
gwWifi.loop();
|
||||||
unsigned long now=millis();
|
unsigned long now=millis();
|
||||||
if (now > (lastHeapReport+HEAP_REPORT_TIME)){
|
if (HEAP_REPORT_TIME > 0 && now > (lastHeapReport+HEAP_REPORT_TIME)){
|
||||||
lastHeapReport=now;
|
lastHeapReport=now;
|
||||||
if (logger.isActive(GwLog::DEBUG)){
|
if (logger.isActive(GwLog::DEBUG)){
|
||||||
logger.logDebug(GwLog::DEBUG,"Heap free=%ld, minFree=%ld",
|
logger.logDebug(GwLog::DEBUG,"Heap free=%ld, minFree=%ld",
|
||||||
|
@ -526,7 +531,7 @@ void loop() {
|
||||||
//handle messages from the async web server
|
//handle messages from the async web server
|
||||||
Message *msg=NULL;
|
Message *msg=NULL;
|
||||||
if (xQueueReceive(queue,&msg,0)){
|
if (xQueueReceive(queue,&msg,0)){
|
||||||
logger.logDebug(GwLog::DEBUG,"main message");
|
logger.logDebug(GwLog::DEBUG+1,"main message");
|
||||||
msg->process();
|
msg->process();
|
||||||
msg->unref();
|
msg->unref();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue