Lots of cleanups
git-svn-id: https://dedected.org/svn/trunk@61 8d8ab74c-27aa-4a3d-9bde-523a2bc1f624
This commit is contained in:
parent
6f2a66e8a9
commit
336531070e
|
@ -39,6 +39,7 @@ struct dect_data {
|
||||||
DecTable *ctable;
|
DecTable *ctable;
|
||||||
vector<vector <string> > info_vec_fp;
|
vector<vector <string> > info_vec_fp;
|
||||||
vector<vector <string> > info_vec_pp;
|
vector<vector <string> > info_vec_pp;
|
||||||
|
vector<string> sync_station;
|
||||||
int addref;
|
int addref;
|
||||||
int numrows;
|
int numrows;
|
||||||
int mode;
|
int mode;
|
||||||
|
@ -54,16 +55,6 @@ public:
|
||||||
}
|
}
|
||||||
~DecTable() {}
|
~DecTable() {}
|
||||||
|
|
||||||
void setModePPTable(DecTable *ppt)
|
|
||||||
{
|
|
||||||
this->pptable = ppt;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setModeFPTable(DecTable *fpt)
|
|
||||||
{
|
|
||||||
this->fptable = fpt;
|
|
||||||
}
|
|
||||||
|
|
||||||
int KeyPress(int in_key)
|
int KeyPress(int in_key)
|
||||||
{
|
{
|
||||||
if (visible == 0)
|
if (visible == 0)
|
||||||
|
@ -146,8 +137,7 @@ public:
|
||||||
"C - Sort by Channel (descending)\n"
|
"C - Sort by Channel (descending)\n"
|
||||||
"s - Sort by view count (ascending)\n"
|
"s - Sort by view count (ascending)\n"
|
||||||
"S - Sort by view count (descending)\n"
|
"S - Sort by view count (descending)\n"
|
||||||
"<enter> - In FP mode: Show details of currently selected station\n"
|
"<enter> - Sync with selected station and dump calls\n";
|
||||||
" In PP mode: Sync with selected station and record call\n";
|
|
||||||
Kis_ModalAlert_Panel *ma = new Kis_ModalAlert_Panel(globalreg, globalreg->panel_interface);
|
Kis_ModalAlert_Panel *ma = new Kis_ModalAlert_Panel(globalreg, globalreg->panel_interface);
|
||||||
ma->Position(2, 2, 21, 70);
|
ma->Position(2, 2, 21, 70);
|
||||||
ma->ConfigureAlert(help_title, help_text);
|
ma->ConfigureAlert(help_title, help_text);
|
||||||
|
@ -256,8 +246,6 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GlobalRegistry *globalreg;
|
GlobalRegistry *globalreg;
|
||||||
DecTable *pptable;
|
|
||||||
DecTable *fptable;
|
|
||||||
dect_data *ddata;
|
dect_data *ddata;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -290,7 +278,6 @@ void DectDetailsProtoDECT(CLIPROTO_CB_PARMS)
|
||||||
inf.push_back(buf);
|
inf.push_back(buf);
|
||||||
}
|
}
|
||||||
// Niceify dates
|
// Niceify dates
|
||||||
/*
|
|
||||||
string f, l;
|
string f, l;
|
||||||
time_t first, last;
|
time_t first, last;
|
||||||
char first_s[30], last_s[30];
|
char first_s[30], last_s[30];
|
||||||
|
@ -300,9 +287,7 @@ void DectDetailsProtoDECT(CLIPROTO_CB_PARMS)
|
||||||
ctime_r(&last, last_s);
|
ctime_r(&last, last_s);
|
||||||
inf[3] = first_s;
|
inf[3] = first_s;
|
||||||
inf[4] = last_s;
|
inf[4] = last_s;
|
||||||
*/
|
|
||||||
|
|
||||||
// RFPI is primary key
|
|
||||||
if (mode == MODE_ASYNC_FP_SCAN) {
|
if (mode == MODE_ASYNC_FP_SCAN) {
|
||||||
vector<vector <string> >::iterator i = ddata->info_vec_fp.begin();
|
vector<vector <string> >::iterator i = ddata->info_vec_fp.begin();
|
||||||
for (int j = 0; i < ddata->info_vec_fp.end(); ++i, ++j) {
|
for (int j = 0; i < ddata->info_vec_fp.end(); ++i, ++j) {
|
||||||
|
@ -336,27 +321,24 @@ void DectDetailsProtoDECT(CLIPROTO_CB_PARMS)
|
||||||
reverse(ddata->info_vec_pp.begin(), ddata->info_vec_pp.end());
|
reverse(ddata->info_vec_pp.begin(), ddata->info_vec_pp.end());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mode == MODE_ASYNC_FP_SCAN || mode == MODE_ASYNC_PP_SCAN) {
|
if (mode == MODE_ASYNC_FP_SCAN) {
|
||||||
ddata->ctable->Hide();
|
ddata->dtable->Clear();
|
||||||
ddata->dtable->Clear();
|
ddata->ctable->Hide();
|
||||||
if (mode == MODE_ASYNC_FP_SCAN) {
|
|
||||||
vector<vector <string> >::iterator i = ddata->info_vec_fp.begin();
|
vector<vector <string> >::iterator i = ddata->info_vec_fp.begin();
|
||||||
for (int j = 0; i < ddata->info_vec_fp.end(); ++i, ++j) {
|
for (int j = 0; i < ddata->info_vec_fp.end(); ++i, ++j) {
|
||||||
ddata->dtable->AddRow(j, (*i));
|
ddata->dtable->AddRow(j, (*i));
|
||||||
}
|
}
|
||||||
} else if (mode == MODE_ASYNC_PP_SCAN) {
|
ddata->dtable->Show();
|
||||||
|
ddata->dtable->DrawComponent();
|
||||||
|
} else if (mode == MODE_ASYNC_PP_SCAN) {
|
||||||
|
ddata->ctable->Clear();
|
||||||
|
ddata->dtable->Hide();
|
||||||
vector<vector <string> >::iterator i = ddata->info_vec_pp.begin();
|
vector<vector <string> >::iterator i = ddata->info_vec_pp.begin();
|
||||||
for (int j = 0; i < ddata->info_vec_pp.end(); ++i, ++j) {
|
for (int j = 0; i < ddata->info_vec_pp.end(); ++i, ++j) {
|
||||||
ddata->dtable->AddRow(j, (*i));
|
ddata->ctable->AddRow(j, (*i));
|
||||||
}
|
}
|
||||||
}
|
ddata->ctable->Show();
|
||||||
ddata->dtable->Show();
|
ddata->ctable->DrawComponent();
|
||||||
ddata->dtable->DrawComponent();
|
|
||||||
} else {
|
|
||||||
ddata->dtable->Hide();
|
|
||||||
ddata->ctable->Clear();
|
|
||||||
ddata->ctable->Show();
|
|
||||||
ddata->ctable->DrawComponent();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,7 +352,8 @@ void DectCliConfigured(CLICONF_CB_PARMS)
|
||||||
|
|
||||||
if (kcli->RegisterProtoHandler("DECT", KCLI_DECT_CHANNEL_FIELDS,
|
if (kcli->RegisterProtoHandler("DECT", KCLI_DECT_CHANNEL_FIELDS,
|
||||||
DectDetailsProtoDECT, pdata) < 0) {
|
DectDetailsProtoDECT, pdata) < 0) {
|
||||||
_MSG("Could not register DECT protocol with remote server", MSGFLAG_ERROR);
|
_MSG("Could not register DECT protocol with remote server",
|
||||||
|
MSGFLAG_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -402,58 +385,115 @@ int DectListerButtonCB(COMPONENT_CALLBACK_PARMS)
|
||||||
GlobalRegistry *greg = globalreg;
|
GlobalRegistry *greg = globalreg;
|
||||||
|
|
||||||
if(!ddata || !greg) {
|
if(!ddata || !greg) {
|
||||||
printf("Fooo!\n");
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode == MODE_ASYNC_FP_SCAN) {
|
if (mode == MODE_ASYNC_FP_SCAN) {
|
||||||
vector<string> data = ddata->dtable->GetSelectedData();
|
vector<string> data = ddata->dtable->GetSelectedData();
|
||||||
|
if (data.size() < 1) {
|
||||||
|
// We got a button event even though the table was empty.
|
||||||
|
string cmd("DECT 1 0 0");
|
||||||
|
_MSG(cmd, MSGFLAG_INFO);
|
||||||
|
if (globalreg &&
|
||||||
|
globalreg->panel_interface &&
|
||||||
|
globalreg->panel_interface->FetchFirstNetclient()) {
|
||||||
|
globalreg->panel_interface->FetchFirstNetclient()->InjectCommand(cmd);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
vector<vector<string> >::iterator i = ddata->info_vec_fp.begin();
|
vector<vector<string> >::iterator i = ddata->info_vec_fp.begin();
|
||||||
for (int j = 0; i < ddata->info_vec_fp.end(); ++i, ++j) {
|
for (int j = 0; i < ddata->info_vec_fp.end(); ++i, ++j) {
|
||||||
if ((*i)[0] == data[0]) {
|
if ((*i)[0] == data[0]) {
|
||||||
time_t first, last;
|
ddata->sync_station = (*i);
|
||||||
char first_s[30], last_s[30];
|
ddata->ctable->Hide();
|
||||||
first = atoi((*i)[3].c_str());
|
ddata->dtable->Clear();
|
||||||
last = atoi((*i)[4].c_str());
|
ddata->dtable->AddRow(0, (*i));
|
||||||
ctime_r(&first, first_s);
|
ddata->dtable->Show();
|
||||||
ctime_r(&last, last_s);
|
ddata->dtable->DrawComponent();
|
||||||
string in_title = "Station details";
|
|
||||||
string in_text = "Station: " + data[0] + "\n" +
|
|
||||||
"RSSI: " + (*i)[1] + "\n" +
|
|
||||||
"Channel: " + (*i)[2] + "\n" +
|
|
||||||
"First seen: " + first_s +
|
|
||||||
"Last seen: " + last_s +
|
|
||||||
"Count seen: " + (*i)[5] + "\n";
|
|
||||||
// XXX: This could be another panel as well
|
|
||||||
Kis_ModalAlert_Panel *ma = new Kis_ModalAlert_Panel(globalreg, globalreg->panel_interface);
|
|
||||||
ma->Position((LINES / 2) - 8, (COLS / 2) - 25, 12, 40);
|
|
||||||
ma->ConfigureAlert(in_title, in_text);
|
|
||||||
globalreg->panel_interface->AddPanel(ma);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (mode == MODE_ASYNC_PP_SCAN) {
|
|
||||||
vector<string> data = ddata->dtable->GetSelectedData();
|
|
||||||
vector<vector<string> >::iterator i = ddata->info_vec_pp.begin();
|
|
||||||
for (int j = 0; i < ddata->info_vec_pp.end(); ++i, ++j) {
|
|
||||||
if ((*i)[0] == data[0]) {
|
|
||||||
string cmd("DECT 1 2 " + data[2] + " " + data[0]);
|
string cmd("DECT 1 2 " + data[2] + " " + data[0]);
|
||||||
printf("%s\n", cmd.c_str());
|
_MSG(cmd, MSGFLAG_INFO);
|
||||||
if (globalreg &&
|
if (globalreg &&
|
||||||
globalreg->panel_interface &&
|
globalreg->panel_interface &&
|
||||||
globalreg->panel_interface->FetchFirstNetclient()) {
|
globalreg->panel_interface->FetchFirstNetclient()) {
|
||||||
globalreg->panel_interface->FetchFirstNetclient()->InjectCommand(cmd);
|
globalreg->panel_interface->FetchFirstNetclient()->InjectCommand(cmd);
|
||||||
}
|
}
|
||||||
Kis_ModalAlert_Panel *ma = new Kis_ModalAlert_Panel(globalreg, globalreg->panel_interface);
|
Kis_ModalAlert_Panel *ma = new Kis_ModalAlert_Panel(globalreg, globalreg->panel_interface);
|
||||||
ma->Position((LINES / 2) - 8, (COLS / 2) - 25, 12, 50);
|
ma->Position((LINES / 2) - 8, (COLS / 2) - 25, 10, 50);
|
||||||
ma->ConfigureAlert("", "Syncing to chosen station " + data[0]);
|
ma->ConfigureAlert("", "Syncing to chosen station " + data[0]
|
||||||
|
+ "\n\nUse key 'F' to get back to FP scan"
|
||||||
|
+ "\nUse key 'A' to get back to PP scan");
|
||||||
globalreg->panel_interface->AddPanel(ma);
|
globalreg->panel_interface->AddPanel(ma);
|
||||||
|
mode = MODE_SYNC_CALL_SCAN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else if (mode == MODE_ASYNC_PP_SCAN) {
|
||||||
|
vector<string> data = ddata->ctable->GetSelectedData();
|
||||||
|
if (data.size() < 1) {
|
||||||
|
// We got a button event even though the table was empty.
|
||||||
|
string cmd("DECT 1 1 0");
|
||||||
|
_MSG(cmd, MSGFLAG_INFO);
|
||||||
|
if (globalreg &&
|
||||||
|
globalreg->panel_interface &&
|
||||||
|
globalreg->panel_interface->FetchFirstNetclient()) {
|
||||||
|
globalreg->panel_interface->FetchFirstNetclient()->InjectCommand(cmd);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
vector<vector<string> >::iterator i = ddata->info_vec_pp.begin();
|
||||||
|
for (int j = 0; i < ddata->info_vec_pp.end(); ++i, ++j) {
|
||||||
|
if ((*i)[0] == data[0]) {
|
||||||
|
ddata->sync_station = (*i);
|
||||||
|
ddata->ctable->Hide();
|
||||||
|
ddata->dtable->Clear();
|
||||||
|
ddata->dtable->AddRow(0, (*i));
|
||||||
|
ddata->dtable->Show();
|
||||||
|
ddata->dtable->DrawComponent();
|
||||||
|
string cmd("DECT 1 2 " + data[2] + " " + data[0]);
|
||||||
|
_MSG(cmd, MSGFLAG_INFO);
|
||||||
|
if (globalreg &&
|
||||||
|
globalreg->panel_interface &&
|
||||||
|
globalreg->panel_interface->FetchFirstNetclient()) {
|
||||||
|
globalreg->panel_interface->FetchFirstNetclient()->InjectCommand(cmd);
|
||||||
|
}
|
||||||
|
Kis_ModalAlert_Panel *ma = new Kis_ModalAlert_Panel(globalreg, globalreg->panel_interface);
|
||||||
|
ma->Position((LINES / 2) - 8, (COLS / 2) - 25, 10, 50);
|
||||||
|
ma->ConfigureAlert("", "Syncing to chosen station " + data[0]
|
||||||
|
+ "\n\nUse key 'F' to get back to FP scan"
|
||||||
|
+ "\nUse key 'A' to get back to PP scan");
|
||||||
|
globalreg->panel_interface->AddPanel(ma);
|
||||||
|
mode = MODE_SYNC_CALL_SCAN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (mode == MODE_SYNC_CALL_SCAN) {
|
||||||
|
vector<string> data = ddata->dtable->GetSelectedData();
|
||||||
|
if (data.size() < 1) {
|
||||||
|
// We got a button event even though the table was empty.
|
||||||
|
string cmd("DECT 1 0 0");
|
||||||
|
_MSG(cmd, MSGFLAG_INFO);
|
||||||
|
if (globalreg &&
|
||||||
|
globalreg->panel_interface &&
|
||||||
|
globalreg->panel_interface->FetchFirstNetclient()) {
|
||||||
|
globalreg->panel_interface->FetchFirstNetclient()->InjectCommand(cmd);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
Kis_ModalAlert_Panel *ma = new Kis_ModalAlert_Panel(globalreg, globalreg->panel_interface);
|
Kis_ModalAlert_Panel *ma = new Kis_ModalAlert_Panel(globalreg, globalreg->panel_interface);
|
||||||
ma->Position((LINES / 2) - 5, (COLS / 2) - 20, 12, 40);
|
ma->Position((LINES / 2) - 5, (COLS / 2) - 25, 10, 50);
|
||||||
ma->ConfigureAlert("Warning", "No Mode selected: Use keys 'A' or 'F'");
|
if (ddata->sync_station.size() < 1) {
|
||||||
|
_MSG("No synced station recored in sync mode", MSGFLAG_ERROR);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (data[0] == ddata->sync_station[0]) {
|
||||||
|
ma->ConfigureAlert("", "Already synced to station " + data[0]
|
||||||
|
+ "\n\nUse key 'F' to get back to FP scan"
|
||||||
|
+ "\nUse key 'A' to get back to PP scan");
|
||||||
|
} else {
|
||||||
|
ma->ConfigureAlert("", "Not syncing to station " + data[0]
|
||||||
|
+ ", already synced to "
|
||||||
|
+ ddata->sync_station[0]
|
||||||
|
+ "\n\nUse key 'F' to get back to FP scan"
|
||||||
|
+ "\nUse key 'A' to get back to PP scan");
|
||||||
|
}
|
||||||
globalreg->panel_interface->AddPanel(ma);
|
globalreg->panel_interface->AddPanel(ma);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -497,14 +537,14 @@ int panel_plugin_init(GlobalRegistry *globalreg, KisPanelPluginData *pdata) {
|
||||||
ti.push_back(t3);
|
ti.push_back(t3);
|
||||||
|
|
||||||
Kis_Scrollable_Table::title_data t4;
|
Kis_Scrollable_Table::title_data t4;
|
||||||
t4.width = 16;
|
t4.width = 20;
|
||||||
t4.draw_width = 8;
|
t4.draw_width = 8;
|
||||||
t4.title = "First";
|
t4.title = "First";
|
||||||
t4.alignment = 8;
|
t4.alignment = 8;
|
||||||
ti.push_back(t4);
|
ti.push_back(t4);
|
||||||
|
|
||||||
Kis_Scrollable_Table::title_data t5;
|
Kis_Scrollable_Table::title_data t5;
|
||||||
t5.width = 16;
|
t5.width = 20;
|
||||||
t5.draw_width = 8;
|
t5.draw_width = 8;
|
||||||
t5.title = "Last";
|
t5.title = "Last";
|
||||||
t5.alignment = 8;
|
t5.alignment = 8;
|
||||||
|
@ -522,8 +562,13 @@ int panel_plugin_init(GlobalRegistry *globalreg, KisPanelPluginData *pdata) {
|
||||||
pdata->mainpanel->AddComponentVec(ddata->dtable, (KIS_PANEL_COMP_DRAW |
|
pdata->mainpanel->AddComponentVec(ddata->dtable, (KIS_PANEL_COMP_DRAW |
|
||||||
KIS_PANEL_COMP_TAB |
|
KIS_PANEL_COMP_TAB |
|
||||||
KIS_PANEL_COMP_EVT));
|
KIS_PANEL_COMP_EVT));
|
||||||
|
pdata->mainpanel->AddComponentVec(ddata->ctable, (KIS_PANEL_COMP_DRAW |
|
||||||
|
KIS_PANEL_COMP_TAB |
|
||||||
|
KIS_PANEL_COMP_EVT));
|
||||||
pdata->mainpanel->FetchNetBox()->Pack_After_Named("KIS_MAIN_NETLIST",
|
pdata->mainpanel->FetchNetBox()->Pack_After_Named("KIS_MAIN_NETLIST",
|
||||||
ddata->dtable, 1, 0);
|
ddata->dtable, 1, 0);
|
||||||
|
pdata->mainpanel->FetchNetBox()->Pack_After_Named("KIS_MAIN_NETLIST",
|
||||||
|
ddata->ctable, 1, 0);
|
||||||
|
|
||||||
ddata->dtable->Activate(1);
|
ddata->dtable->Activate(1);
|
||||||
ddata->ctable->Activate(1);
|
ddata->ctable->Activate(1);
|
||||||
|
@ -532,6 +577,8 @@ int panel_plugin_init(GlobalRegistry *globalreg, KisPanelPluginData *pdata) {
|
||||||
// Callback shows details on the station list
|
// Callback shows details on the station list
|
||||||
ddata->dtable->SetCallback(COMPONENT_CBTYPE_ACTIVATED,
|
ddata->dtable->SetCallback(COMPONENT_CBTYPE_ACTIVATED,
|
||||||
DectListerButtonCB, ddata);
|
DectListerButtonCB, ddata);
|
||||||
|
ddata->ctable->SetCallback(COMPONENT_CBTYPE_ACTIVATED,
|
||||||
|
DectListerButtonCB, ddata);
|
||||||
ddata->addref =
|
ddata->addref =
|
||||||
pdata->kpinterface->Add_NetCli_AddCli_CB(DectCliAdd, (void *) pdata);
|
pdata->kpinterface->Add_NetCli_AddCli_CB(DectCliAdd, (void *) pdata);
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,10 @@
|
||||||
|
|
||||||
//#include "audioDecode.h"
|
//#include "audioDecode.h"
|
||||||
|
|
||||||
|
#define MODE_ASYNC_FP_SCAN 0
|
||||||
|
#define MODE_ASYNC_PP_SCAN 1
|
||||||
|
#define MODE_SYNC_CALL_SCAN 2
|
||||||
|
|
||||||
#define COA_IOCTL_MODE 0xD000
|
#define COA_IOCTL_MODE 0xD000
|
||||||
#define COA_IOCTL_CHAN 0xD004
|
#define COA_IOCTL_CHAN 0xD004
|
||||||
#define COA_IOCTL_SETRFPI 0xD008
|
#define COA_IOCTL_SETRFPI 0xD008
|
||||||
|
@ -56,7 +60,7 @@
|
||||||
// Globals
|
// Globals
|
||||||
int dect_comp_datachunk;
|
int dect_comp_datachunk;
|
||||||
|
|
||||||
static int mode = DECT_SUBCMD_SCAN_FP;
|
static int mode = MODE_ASYNC_FP_SCAN;
|
||||||
static int switched = 0;
|
static int switched = 0;
|
||||||
|
|
||||||
/* This is the 7 bytes we read while scanning */
|
/* This is the 7 bytes we read while scanning */
|
||||||
|
@ -148,13 +152,17 @@ int dumpfiledectpcap_chain_hook(CHAINCALL_PARMS) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Dumpfile_Dectpcap::Dumpfile_Dectpcap() {
|
Dumpfile_Dectpcap::Dumpfile_Dectpcap() {
|
||||||
_MSG("FATAL OOPS: Dumpfile_Dectpcap called with no globalreg", MSGFLAG_ERROR);
|
_MSG("FATAL OOPS: Dumpfile_Dectpcap called with no globalreg",
|
||||||
|
MSGFLAG_ERROR);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
Dumpfile_Dectpcap::Dumpfile_Dectpcap(GlobalRegistry *in_globalreg) :
|
Dumpfile_Dectpcap::Dumpfile_Dectpcap(GlobalRegistry *in_globalreg) :
|
||||||
Dumpfile(in_globalreg) {
|
Dumpfile(in_globalreg) {
|
||||||
|
char ftime[256];
|
||||||
|
char dfname[512];
|
||||||
|
time_t rawtime;
|
||||||
|
struct tm *timeinfo;
|
||||||
char errstr[STATUS_MAX];
|
char errstr[STATUS_MAX];
|
||||||
globalreg = in_globalreg;
|
globalreg = in_globalreg;
|
||||||
|
|
||||||
|
@ -176,17 +184,13 @@ Dumpfile_Dectpcap::Dumpfile_Dectpcap(GlobalRegistry *in_globalreg) :
|
||||||
|
|
||||||
dectpcapfile = fopen(fname.c_str(), "w");
|
dectpcapfile = fopen(fname.c_str(), "w");
|
||||||
if (dectpcapfile == NULL) {
|
if (dectpcapfile == NULL) {
|
||||||
snprintf(errstr, STATUS_MAX, "Failed to open dectpcap dump file '%s': %s",
|
snprintf(errstr, STATUS_MAX,
|
||||||
|
"Failed to open dectpcap dump file '%s': %s",
|
||||||
fname.c_str(), strerror(errno));
|
fname.c_str(), strerror(errno));
|
||||||
globalreg->fatal_condition = 1;
|
globalreg->fatal_condition = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
char ftime[256];
|
|
||||||
char dfname[512];
|
|
||||||
time_t rawtime;
|
|
||||||
struct tm *timeinfo;
|
|
||||||
|
|
||||||
time (&rawtime);
|
time (&rawtime);
|
||||||
timeinfo = localtime(&rawtime);
|
timeinfo = localtime(&rawtime);
|
||||||
|
|
||||||
|
@ -244,8 +248,8 @@ int Dumpfile_Dectpcap::chain_handler(kis_packet *in_pack) {
|
||||||
dect_datachunk *dc = (dect_datachunk *)
|
dect_datachunk *dc = (dect_datachunk *)
|
||||||
in_pack->fetch(dect_comp_datachunk);
|
in_pack->fetch(dect_comp_datachunk);
|
||||||
|
|
||||||
// We only want kind "2"
|
// We only want kind MODE_SYNC_CALL_SCAN
|
||||||
if (!dc || dc->kind != 2) {
|
if (!dc || dc->kind != MODE_SYNC_CALL_SCAN) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -318,7 +322,8 @@ public:
|
||||||
virtual PacketSource_Dect *CreateSource(GlobalRegistry *in_globalreg,
|
virtual PacketSource_Dect *CreateSource(GlobalRegistry *in_globalreg,
|
||||||
string interface,
|
string interface,
|
||||||
vector<opt_pair> *in_opts) {
|
vector<opt_pair> *in_opts) {
|
||||||
PacketSource_Dect *ref = new PacketSource_Dect(in_globalreg, interface, in_opts);
|
PacketSource_Dect *ref = new PacketSource_Dect(in_globalreg,
|
||||||
|
interface, in_opts);
|
||||||
// XXX Hackalert
|
// XXX Hackalert
|
||||||
SetExternal(ref);
|
SetExternal(ref);
|
||||||
return ref;
|
return ref;
|
||||||
|
@ -387,7 +392,7 @@ public:
|
||||||
_MSG("Couldn't ioctl to COA_MODE_SNIFF", MSGFLAG_ERROR);
|
_MSG("Couldn't ioctl to COA_MODE_SNIFF", MSGFLAG_ERROR);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mode = COA_SUBMODE_SNIFF_SCANFP;
|
mode = MODE_ASYNC_FP_SCAN;
|
||||||
switched = 1;
|
switched = 1;
|
||||||
if (sync) {
|
if (sync) {
|
||||||
_MSG("Sync off.", MSGFLAG_INFO);
|
_MSG("Sync off.", MSGFLAG_INFO);
|
||||||
|
@ -407,10 +412,10 @@ public:
|
||||||
_MSG("Couldn't ioctl to COA_MODE_SNIFF", MSGFLAG_ERROR);
|
_MSG("Couldn't ioctl to COA_MODE_SNIFF", MSGFLAG_ERROR);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mode = COA_SUBMODE_SNIFF_SCANFP;
|
mode = MODE_ASYNC_PP_SCAN;
|
||||||
switched = 1;
|
switched = 1;
|
||||||
if (sync) {
|
if (sync) {
|
||||||
_MSG("Sync off.", MSGFLAG_ERROR);
|
_MSG("Sync off.", MSGFLAG_INFO);
|
||||||
sync = false;
|
sync = false;
|
||||||
}
|
}
|
||||||
// Remove lock, if there is any, and start scanning at channel 0
|
// Remove lock, if there is any, and start scanning at channel 0
|
||||||
|
@ -433,7 +438,7 @@ public:
|
||||||
_MSG("Couldn't ioctl SETRFPI", MSGFLAG_ERROR);
|
_MSG("Couldn't ioctl SETRFPI", MSGFLAG_ERROR);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mode = 2;
|
mode = MODE_SYNC_CALL_SCAN;
|
||||||
if (sync) {
|
if (sync) {
|
||||||
sync = false;
|
sync = false;
|
||||||
}
|
}
|
||||||
|
@ -472,11 +477,8 @@ public:
|
||||||
kis_packet *newpack = globalreg->packetchain->GeneratePacket();
|
kis_packet *newpack = globalreg->packetchain->GeneratePacket();
|
||||||
dect_datachunk *dc = new dect_datachunk;
|
dect_datachunk *dc = new dect_datachunk;
|
||||||
|
|
||||||
// Don't remove this, or it's gonna lock your box
|
|
||||||
usleep(10000);
|
|
||||||
|
|
||||||
// Async FP/PP scan read 7 bytes each
|
// Async FP/PP scan read 7 bytes each
|
||||||
if (mode == 0 || mode == 1) {
|
if (mode == MODE_ASYNC_FP_SCAN || mode == MODE_ASYNC_PP_SCAN) {
|
||||||
if ((rbytes = read(serial_fd, &(dc->sdata), 7)) != 7) {
|
if ((rbytes = read(serial_fd, &(dc->sdata), 7)) != 7) {
|
||||||
// Fail
|
// Fail
|
||||||
stringstream s;
|
stringstream s;
|
||||||
|
@ -492,11 +494,11 @@ public:
|
||||||
dc->sdata.RFPI[3],
|
dc->sdata.RFPI[3],
|
||||||
dc->sdata.RFPI[4]);
|
dc->sdata.RFPI[4]);
|
||||||
_MSG("RFPI: " + string(station), MSGFLAG_INFO);
|
_MSG("RFPI: " + string(station), MSGFLAG_INFO);
|
||||||
dc->kind = 0;
|
dc->kind = mode;
|
||||||
newpack->insert(dect_comp_datachunk, dc);
|
newpack->insert(dect_comp_datachunk, dc);
|
||||||
globalreg->packetchain->ProcessPacket(newpack);
|
globalreg->packetchain->ProcessPacket(newpack);
|
||||||
}
|
}
|
||||||
} else if (mode == 2) {
|
} else if (mode == MODE_SYNC_CALL_SCAN) {
|
||||||
if ((rbytes = read(serial_fd,
|
if ((rbytes = read(serial_fd,
|
||||||
&(dc->pdata),
|
&(dc->pdata),
|
||||||
sizeof(dc->pdata))) != sizeof(dc->pdata)) {
|
sizeof(dc->pdata))) != sizeof(dc->pdata)) {
|
||||||
|
@ -512,7 +514,7 @@ public:
|
||||||
sync = true;
|
sync = true;
|
||||||
}
|
}
|
||||||
dc->sync = sync;
|
dc->sync = sync;
|
||||||
//dc->kind = 2;
|
dc->kind = MODE_SYNC_CALL_SCAN;
|
||||||
newpack->insert(dect_comp_datachunk, dc);
|
newpack->insert(dect_comp_datachunk, dc);
|
||||||
globalreg->packetchain->ProcessPacket(newpack);
|
globalreg->packetchain->ProcessPacket(newpack);
|
||||||
}
|
}
|
||||||
|
@ -527,6 +529,9 @@ public:
|
||||||
void setLock(bool lock, int arg)
|
void setLock(bool lock, int arg)
|
||||||
{
|
{
|
||||||
if (arg != -1) {
|
if (arg != -1) {
|
||||||
|
stringstream chan;
|
||||||
|
chan << arg;
|
||||||
|
_MSG("Locking to " + chan.str(), MSGFLAG_INFO);
|
||||||
SetChannel(arg);
|
SetChannel(arg);
|
||||||
}
|
}
|
||||||
locked = lock;
|
locked = lock;
|
||||||
|
@ -592,7 +597,7 @@ public:
|
||||||
int currentmode = mode;
|
int currentmode = mode;
|
||||||
// If this packet doesn't have dect info or if it's call data, move
|
// If this packet doesn't have dect info or if it's call data, move
|
||||||
// along.
|
// along.
|
||||||
if (dectinfo == NULL || dectinfo->kind == 2) {
|
if (dectinfo == NULL || dectinfo->kind == MODE_SYNC_CALL_SCAN) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (switched) {
|
if (switched) {
|
||||||
|
@ -751,6 +756,7 @@ int dect_cc_callback(CLIENT_PARMS)
|
||||||
rfpi[4]);
|
rfpi[4]);
|
||||||
_MSG(string(station), MSGFLAG_INFO);
|
_MSG(string(station), MSGFLAG_INFO);
|
||||||
ex_psd->startScanCalls(rfpi, arg);
|
ex_psd->startScanCalls(rfpi, arg);
|
||||||
|
dtracker->emptyMap();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
_MSG("Bad DECT_CMD_SCAN subcommand.", MSGFLAG_ERROR);
|
_MSG("Bad DECT_CMD_SCAN subcommand.", MSGFLAG_ERROR);
|
||||||
|
@ -867,7 +873,7 @@ int dect_register(GlobalRegistry *globalreg) {
|
||||||
// Add the channels
|
// Add the channels
|
||||||
globalreg->sourcetracker->AddChannelList("DECT:0,1,2,3,4,5,6,7,8,9");
|
globalreg->sourcetracker->AddChannelList("DECT:0,1,2,3,4,5,6,7,8,9");
|
||||||
|
|
||||||
// Hopefully this won't break since we don't know about memory management
|
// Hopefully this won't break since we don't knw about memory management
|
||||||
// of packetsources
|
// of packetsources
|
||||||
PacketSource_Dect *psd = new PacketSource_Dect(globalreg);
|
PacketSource_Dect *psd = new PacketSource_Dect(globalreg);
|
||||||
if (!psd) {
|
if (!psd) {
|
||||||
|
|
Loading…
Reference in New Issue