From 208d74da157be8b9dc5e14a397b64952a1e1a1d0 Mon Sep 17 00:00:00 2001 From: Martin Koegler Date: Mon, 2 Nov 2009 19:23:56 +0100 Subject: [PATCH] EMI2: Handle device reset Signed-off-by: Martin Koegler --- eibd/backend/ft12.cpp | 8 ++++++++ eibd/libserver/emi2.cpp | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/eibd/backend/ft12.cpp b/eibd/backend/ft12.cpp index 045499a..aebc5bb 100644 --- a/eibd/backend/ft12.cpp +++ b/eibd/backend/ft12.cpp @@ -248,6 +248,14 @@ FT12LowLevelDriver::Run (pth_sem_t * stop1) //right sequence number recvflag = !recvflag; } + if ((akt[1] & 0x0f) == 0) + { + const uchar reset[1] = { 0xA0 }; + CArray *c = new CArray (reset, sizeof (reset)); + t->TracePacket (0, this, "RecvReset", *c); + outqueue.put (c); + pth_sem_inc (&out_signal, TRUE); + } } akt.deletepart (0, 4); } diff --git a/eibd/libserver/emi2.cpp b/eibd/libserver/emi2.cpp index aed6dbf..aaeefad 100644 --- a/eibd/libserver/emi2.cpp +++ b/eibd/libserver/emi2.cpp @@ -263,6 +263,18 @@ EMI2Layer2Interface::Run (pth_sem_t * stop1) CArray *c = iface->Get_Packet (stop); if (!c) continue; + if (c->len () == 1 && (*c)[0] == 0xA0 && mode == 2) + { + TRACEPRINTF (t, 2, this, "Reopen"); + mode = 0; + Open (); + } + if (c->len () == 1 && (*c)[0] == 0xA0 && mode == 1) + { + TRACEPRINTF (t, 2, this, "Reopen Busmonitor"); + mode = 0; + enterBusmonitor (); + } if (c->len () && (*c)[0] == 0x29 && mode == 2) { L_Data_PDU *p = EMI_to_L_Data (*c); -- 2.11.4.GIT