Skip to content

Commit

Permalink
RETOOLS: Support filtering (by specifying filter on "re start" command)
Browse files Browse the repository at this point in the history
  • Loading branch information
markwj committed Jul 21, 2019
1 parent e44a1db commit 1dbc125
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 5 deletions.
40 changes: 36 additions & 4 deletions vehicle/OVMS.V3/components/retools/src/retools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,14 @@ void re::Task()
{
case Analyse:
case Discover:
DoAnalyse(&message.frame);
if ((m_filter)&&(!m_filter->IsFiltered(&message.frame)))
{
// Frame is filtered, just drop it...
}
else
{
DoAnalyse(&message.frame);
}
break;
}
m_finished = monotonictime;
Expand Down Expand Up @@ -267,9 +274,10 @@ std::string re::GetKey(CAN_frame_t* frame)
return key;
}

re::re(const char* name)
re::re(const char* name, canfilter* filter)
: pcp(name)
{
m_filter = filter;
m_obdii_std_min = 0;
m_obdii_std_max = 0;
m_obdii_ext_min = 0;
Expand All @@ -289,6 +297,11 @@ re::~re()
Clear();
vQueueDelete(m_rxqueue);
vTaskDelete(m_task);
if (m_filter)
{
delete m_filter;
m_filter = NULL;
}
}

void re::SetPowerMode(PowerMode powermode)
Expand Down Expand Up @@ -327,7 +340,16 @@ void re_start(int verbosity, OvmsWriter* writer, OvmsCommand* cmd, int argc, con
writer->puts("Error: RE tools already running");
else
{
MyRE = new re("re");
canfilter* filter = NULL;
if (argc>0)
{
filter = new canfilter();
for (int k=0;k<argc;k++)
{
filter->AddFilter(argv[k]);
}
}
MyRE = new re("re", filter);
MyEvents.SignalEvent("retools.started", NULL);
}
}
Expand Down Expand Up @@ -501,6 +523,11 @@ void re_status(int verbosity, OvmsWriter* writer, OvmsCommand* cmd, int argc, co
break;
}

if (MyRE->m_filter)
{
writer->printf("Filter: %s\n", MyRE->m_filter->Info().c_str());
}

OvmsMutexLock lock(&MyRE->m_mutex);
writer->printf("Key Map: %d entries\n",MyRE->m_rmap.size());
if (MyRE->m_rmap.size() > 0)
Expand Down Expand Up @@ -753,7 +780,12 @@ REInit::REInit()
ESP_LOGI(TAG, "Initialising RE Tools (8800)");

OvmsCommand* cmd_re = MyCommandApp.RegisterCommand("re","RE framework");
cmd_re->RegisterCommand("start","Start RE tools",re_start);
cmd_re->RegisterCommand("start","Start RE tools",
re_start,
"[filter1] ... [filterN]\n"
"Filter: <bus> | <id>[-<id>] | <bus>:<id>[-<id>]\n"
"Example: 2:2a0-37f",
0, 9);
cmd_re->RegisterCommand("stop","Stop RE tools",re_stop);
cmd_re->RegisterCommand("clear","Clear RE records",re_clear);
cmd_re->RegisterCommand("list","List RE records",re_list, "", 0, 1);
Expand Down
3 changes: 2 additions & 1 deletion vehicle/OVMS.V3/components/retools/src/retools.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ enum REMode { Analyse, Discover };
class re : public pcp, public ExternalRamAllocated
{
public:
re(const char* name);
re(const char* name, canfilter* filter = NULL);
~re();

public:
Expand All @@ -93,6 +93,7 @@ class re : public pcp, public ExternalRamAllocated

public:
OvmsMutex m_mutex;
canfilter* m_filter;
REMode m_mode;
re_record_map_t m_rmap;
uint32_t m_obdii_std_min;
Expand Down

0 comments on commit 1dbc125

Please sign in to comment.