correct sending/receiving actisense
This commit is contained in:
parent
5b843a23be
commit
f0a4cfcc53
|
@ -88,7 +88,7 @@ void GwChannel::begin(
|
||||||
this->toN2k=toN2k;
|
this->toN2k=toN2k;
|
||||||
this->readActisense=readActisense;
|
this->readActisense=readActisense;
|
||||||
this->writeActisense=writeActisense;
|
this->writeActisense=writeActisense;
|
||||||
if (impl && (readActisense|| writeActisense)){
|
if (impl && readActisense){
|
||||||
channelStream=impl->getStream(false);
|
channelStream=impl->getStream(false);
|
||||||
if (! channelStream) {
|
if (! channelStream) {
|
||||||
this->readActisense=false;
|
this->readActisense=false;
|
||||||
|
@ -96,12 +96,10 @@ void GwChannel::begin(
|
||||||
LOG_DEBUG(GwLog::ERROR,"unable to read actisnse on %s",name.c_str());
|
LOG_DEBUG(GwLog::ERROR,"unable to read actisnse on %s",name.c_str());
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if (readActisense){
|
|
||||||
this->actisenseReader= new tActisenseReader();
|
this->actisenseReader= new tActisenseReader();
|
||||||
actisenseReader->SetReadStream(channelStream);
|
actisenseReader->SetReadStream(channelStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
void GwChannel::setImpl(GwChannelInterface *impl){
|
void GwChannel::setImpl(GwChannelInterface *impl){
|
||||||
this->impl=impl;
|
this->impl=impl;
|
||||||
|
@ -129,24 +127,11 @@ void GwChannel::updateCounter(const char *msg, bool out)
|
||||||
countIn->add(key);
|
countIn->add(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool GwChannel::canSendOut(unsigned long pgn){
|
|
||||||
if (! enabled) return false;
|
|
||||||
if (! NMEAout) return false;
|
|
||||||
countOut->add(String(pgn));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
bool GwChannel::canReceive(unsigned long pgn){
|
|
||||||
if (!enabled) return false;
|
|
||||||
if (!NMEAin) return false;
|
|
||||||
countIn->add(String(pgn));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GwChannel::canSendOut(const char *buffer){
|
bool GwChannel::canSendOut(const char *buffer){
|
||||||
if (! enabled) return false;
|
if (! enabled || ! impl) return false;
|
||||||
if (! NMEAout) return false;
|
if (! NMEAout || readActisense || writeActisense) return false;
|
||||||
if (writeFilter && ! writeFilter->canPass(buffer)) return false;
|
if (writeFilter && ! writeFilter->canPass(buffer)) return false;
|
||||||
updateCounter(buffer,true);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,7 +180,9 @@ void GwChannel::readMessages(GwChannel::NMEA0183Handler handler){
|
||||||
void GwChannel::sendToClients(const char *buffer, int sourceId){
|
void GwChannel::sendToClients(const char *buffer, int sourceId){
|
||||||
if (! impl) return;
|
if (! impl) return;
|
||||||
if (canSendOut(buffer)){
|
if (canSendOut(buffer)){
|
||||||
impl->sendToClients(buffer,sourceId);
|
if(impl->sendToClients(buffer,sourceId)){
|
||||||
|
updateCounter(buffer,true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void GwChannel::parseActisense(N2kHandler handler){
|
void GwChannel::parseActisense(N2kHandler handler){
|
||||||
|
@ -203,7 +190,7 @@ void GwChannel::parseActisense(N2kHandler handler){
|
||||||
tN2kMsg N2kMsg;
|
tN2kMsg N2kMsg;
|
||||||
|
|
||||||
while (actisenseReader->GetMessageFromStream(N2kMsg)) {
|
while (actisenseReader->GetMessageFromStream(N2kMsg)) {
|
||||||
canReceive(N2kMsg.PGN);
|
countIn->add(String(N2kMsg.PGN));
|
||||||
handler(N2kMsg,sourceId);
|
handler(N2kMsg,sourceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -213,7 +200,7 @@ void GwChannel::sendActisense(const tN2kMsg &msg, int sourceId){
|
||||||
//currently actisense only for channels with a single source id
|
//currently actisense only for channels with a single source id
|
||||||
//so we can check it here
|
//so we can check it here
|
||||||
if (isOwnSource(sourceId)) return;
|
if (isOwnSource(sourceId)) return;
|
||||||
canSendOut(msg.PGN);
|
countOut->add(String(msg.PGN));
|
||||||
msg.SendInActisenseFormat(channelStream);
|
msg.SendInActisenseFormat(channelStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,8 +56,6 @@ class GwChannel{
|
||||||
}
|
}
|
||||||
bool isEnabled(){return enabled;}
|
bool isEnabled(){return enabled;}
|
||||||
bool shouldRead(){return enabled && NMEAin;}
|
bool shouldRead(){return enabled && NMEAin;}
|
||||||
bool canSendOut(unsigned long pgn);
|
|
||||||
bool canReceive(unsigned long pgn);
|
|
||||||
bool canSendOut(const char *buffer);
|
bool canSendOut(const char *buffer);
|
||||||
bool canReceive(const char *buffer);
|
bool canReceive(const char *buffer);
|
||||||
bool sendSeaSmart(){ return seaSmartOut;}
|
bool sendSeaSmart(){ return seaSmartOut;}
|
||||||
|
|
|
@ -67,6 +67,7 @@ void GwChannelList::begin(bool fallbackSerial){
|
||||||
config->getBool(config->usbActisense),
|
config->getBool(config->usbActisense),
|
||||||
config->getBool(config->usbActSend)
|
config->getBool(config->usbActSend)
|
||||||
);
|
);
|
||||||
|
theChannels.push_back(channel);
|
||||||
LOG_DEBUG(GwLog::LOG,"%s",channel->toString().c_str());
|
LOG_DEBUG(GwLog::LOG,"%s",channel->toString().c_str());
|
||||||
}
|
}
|
||||||
//TCP server
|
//TCP server
|
||||||
|
|
Loading…
Reference in New Issue