Browse Source

Add NETWORK_RESYNCH_LATENCY parameter to resynch in netjack2.

tags/v1.9.10
Stephane Letz 12 years ago
parent
commit
e0135c87cc
7 changed files with 42 additions and 25 deletions
  1. +7
    -7
      common/JackNetAPI.cpp
  2. +2
    -2
      common/JackNetDriver.cpp
  3. +11
    -4
      common/JackNetInterface.cpp
  4. +18
    -7
      common/JackNetInterface.h
  5. +1
    -1
      common/JackNetManager.cpp
  6. +1
    -2
      common/JackNetTool.cpp
  7. +2
    -2
      common/JackNetTool.h

+ 7
- 7
common/JackNetAPI.cpp View File

@@ -423,11 +423,11 @@ struct JackNetExtMaster : public JackNetMasterInterface {
return res;
case NET_PACKET_ERROR:
// Since sync packet is incorrect, don't decode it and continue with data
// since sync packet is incorrect, don't decode it and continue with data
break;
default:
//decode sync
// decode sync
DecodeSyncPacket();
break;
}
@@ -731,7 +731,7 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
bool Execute()
{
try {
// Keep running even in case of error
// keep running even in case of error
while (fThread.GetStatus() == JackThread::kRunning) {
if (Process() == SOCKET_ERROR) {
return false;
@@ -739,7 +739,7 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
}
return false;
} catch (JackNetException& e) {
// Otherwise just restart...
// otherwise just restart...
e.PrintMessage();
jack_info("NetSlave is restarted");
fThread.DropRealTime();
@@ -756,18 +756,18 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf

int Read()
{
//receive sync (launch the cycle)
// receive sync (launch the cycle)
switch (SyncRecv()) {
case SOCKET_ERROR:
return SOCKET_ERROR;
case NET_PACKET_ERROR:
// Since sync packet is incorrect, don't decode it and continue with data
// since sync packet is incorrect, don't decode it and continue with data
break;
default:
//decode sync
// decode sync
DecodeSyncPacket();
break;
}


+ 2
- 2
common/JackNetDriver.cpp View File

@@ -557,11 +557,11 @@ namespace Jack
return SOCKET_ERROR;
case NET_PACKET_ERROR:
// Since sync packet is incorrect, don't decode it and continue with data
// since sync packet is incorrect, don't decode it and continue with data
break;
default:
//decode sync
// decode sync
DecodeSyncPacket();
break;
}


+ 11
- 4
common/JackNetInterface.cpp View File

@@ -485,17 +485,24 @@ namespace Jack
if (rx_head->fDataType != 's') {
jack_error("Wrong packet type : %c", rx_head->fDataType);
// Not the last packet..
// not the last packet..
fRxHeader.fIsLastPckt = 0;
return NET_PACKET_ERROR;
}
fCurrentCycleOffset = fTxHeader.fCycle - rx_head->fCycle;

if (fCurrentCycleOffset < fMaxCycleOffset) {
if (fCurrentCycleOffset < fMaxCycleOffset && !fSynched) {
jack_info("Synching with latency = %d", fCurrentCycleOffset);
return 0;
} else {
if (fCurrentCycleOffset == fMaxCycleOffset) {
// when the sync offset is reached
fSynched = true;
} else if (abs(fCurrentCycleOffset - fMaxCycleOffset) >= NETWORK_RESYNCH_LATENCY) {
jack_info("Resync connection...");
fSynched = false;
}
rx_bytes = Recv(rx_head->fPacketSize, 0);
fRxHeader.fIsLastPckt = rx_head->fIsLastPckt;
return rx_bytes;
@@ -732,7 +739,7 @@ namespace Jack
}
while (strcmp(host_params.fPacketType, fParams.fPacketType) && (GetPacketType(&host_params) != SLAVE_SETUP) && (--try_count > 0));

// Time out failure..
// time out failure..
if (try_count == 0) {
jack_error("Time out error in connect");
return NET_CONNECT_ERROR;
@@ -873,7 +880,7 @@ namespace Jack
if (rx_head->fDataType != 's') {
jack_error("Wrong packet type : %c", rx_head->fDataType);
// Not the last packet...
// not the last packet...
fRxHeader.fIsLastPckt = 0;
return NET_PACKET_ERROR;
}


+ 18
- 7
common/JackNetInterface.h View File

@@ -32,12 +32,13 @@ namespace Jack

#define SLAVE_SETUP_RETRY 5

#define MANAGER_INIT_TIMEOUT 2000000 // in usec
#define MASTER_INIT_TIMEOUT 1000000 * 10 // in usec
#define SLAVE_INIT_TIMEOUT 1000000 * 10 // in usec
#define PACKET_TIMEOUT 500000 // in usec
#define MANAGER_INIT_TIMEOUT 1000000 * 2 // in usec
#define MASTER_INIT_TIMEOUT 1000000 * 10 // in usec
#define SLAVE_INIT_TIMEOUT 1000000 * 10 // in usec
#define PACKET_TIMEOUT 500000 // in usec

#define NETWORK_MAX_LATENCY 20
#define NETWORK_MAX_LATENCY 20 // maximun possile latency in network master/slave loop
#define NETWORK_RESYNCH_LATENCY 3 // number of cycles offset before a resync is done....

/**
\Brief This class describes the basic Net Interface, used by both master and slave.
@@ -137,6 +138,7 @@ namespace Jack
bool fRunning;
int fCurrentCycleOffset;
int fMaxCycleOffset;
bool fSynched;
bool Init();
bool SetParams();
@@ -161,10 +163,19 @@ namespace Jack

public:

JackNetMasterInterface() : JackNetInterface(), fRunning(false), fCurrentCycleOffset(0), fMaxCycleOffset(0)
JackNetMasterInterface()
: JackNetInterface(),
fRunning(false),
fCurrentCycleOffset(0),
fMaxCycleOffset(0),
fSynched(false)
{}
JackNetMasterInterface(session_params_t& params, JackNetSocket& socket, const char* multicast_ip)
: JackNetInterface(params, socket, multicast_ip), fRunning(false), fCurrentCycleOffset(0), fMaxCycleOffset(0)
: JackNetInterface(params, socket, multicast_ip),
fRunning(false),
fCurrentCycleOffset(0),
fMaxCycleOffset(0),
fSynched(false)
{}

virtual~JackNetMasterInterface()


+ 1
- 1
common/JackNetManager.cpp View File

@@ -524,7 +524,7 @@ namespace Jack
return res;
case NET_PACKET_ERROR:
// Since sync packet is incorrect, don't decode it and continue with data
// Since sync packet is incorrect, don't decode it and continue with data
break;
default:


+ 1
- 2
common/JackNetTool.cpp View File

@@ -680,7 +680,7 @@ namespace Jack
Cleanup();
}

if (port_num > 0) {
if (port_num > 0) {
int sub_period_bytes_size;
@@ -937,7 +937,6 @@ namespace Jack

#endif


NetIntAudioBuffer::NetIntAudioBuffer(session_params_t* params, uint32_t nports, char* net_buffer)
: NetAudioBuffer(params, nports, net_buffer)
{


+ 2
- 2
common/JackNetTool.h View File

@@ -38,8 +38,8 @@ using namespace std;
#endif
#endif

#define MASTER_PROTOCOL 6
#define SLAVE_PROTOCOL 6
#define MASTER_PROTOCOL 6
#define SLAVE_PROTOCOL 6

#define NET_PACKET_ERROR -2



Loading…
Cancel
Save