From e158ce7ccacc61ec8399cd7259236ed2ada9d1e7 Mon Sep 17 00:00:00 2001
From: apvrille <ludovic.apvrille@eurecom.fr>
Date: Fri, 22 Mar 2019 15:22:16 +0100
Subject: [PATCH] Update on Terminal char: backspace and ret

---
 src/main/java/myutil/Terminal.java            | 31 ++++++--
 .../tmltranslator/tonetwork/TMAP2Network.java | 13 ++-
 .../tonetwork/TranslatedRouter.java           | 79 ++++++++++++++++++-
 3 files changed, 113 insertions(+), 10 deletions(-)

diff --git a/src/main/java/myutil/Terminal.java b/src/main/java/myutil/Terminal.java
index 7ae9eb8474..1554aee3cb 100644
--- a/src/main/java/myutil/Terminal.java
+++ b/src/main/java/myutil/Terminal.java
@@ -53,11 +53,18 @@ import java.util.Vector;
 public class Terminal {
     private final static int MAX_BUFFER_SIZE = 5000;
 
+    private final static int CR = 10;
+
+    private final static int BACKSPACE = 8;
+    private final static int DEL = 127;
+
     private Vector<String> buffer;
     private int maxbufferSize = MAX_BUFFER_SIZE;
     private TerminalProviderInterface terminalProvider;
     private int cpt;
 
+
+
    public Terminal() {
        buffer = new Vector<>();
        cpt = 0;
@@ -80,17 +87,29 @@ public class Terminal {
 
                val = (RawConsoleInput.read(true));
                x = (char) val;
-               if (val >= 32) {
+
+               if (val == CR) {
+                   if (currentBuf.length() == 0) {
+                       myPrint("\n");
+                       printPrompt(cpt);
+                   } else {
+                       cpt++;
+                       //myPrint("\n");
+                       return currentBuf;
+                   }
+               }
+
+               if ((val == BACKSPACE) || (val == DEL)) {
+                   myPrint("\b \b");
+                   if (currentBuf.length() > 0) {
+                       currentBuf = currentBuf.substring(0, currentBuf.length() - 1);
+                   }
+               } else if (val >= 32) {
                    //System.out.print("" + x + "(val=" + val + ");");
                    myPrint(""+x);
                    currentBuf += x;
                }
-               if (val == 10) {
-                   cpt ++;
-                   //myPrint("\n");
 
-                   return currentBuf;
-               }
            }
        } catch (Exception e) {
            return null;
diff --git a/src/main/java/tmltranslator/tonetwork/TMAP2Network.java b/src/main/java/tmltranslator/tonetwork/TMAP2Network.java
index 6d3e3f0c77..e729077f03 100644
--- a/src/main/java/tmltranslator/tonetwork/TMAP2Network.java
+++ b/src/main/java/tmltranslator/tonetwork/TMAP2Network.java
@@ -170,7 +170,7 @@ public class TMAP2Network<E>  {
         TMLArchitecture tmla = tmlmapping.getTMLArchitecture();
         TMLModeling<?> tmlm = tmlmapping.getTMLModeling();
 
-        // we have to redo the architecture:
+        // *** we have to redo the architecture:
         // we assume that each processor is connected directly to the NoC via a first bus
         // so, each CPU gets one memory, on bus connecting the mem and the NoC.
         // all local channels are mapped on this memory, otherwise they
@@ -262,7 +262,7 @@ public class TMAP2Network<E>  {
             }
         }
 
-        //Create routers
+        // *** Create routers
         for(int i=0; i<nocSize; i++) {
             for(int j=0; j<nocSize; j++) {
                 // We must find the number of apps connected on this router
@@ -272,6 +272,15 @@ public class TMAP2Network<E>  {
             }
         }
 
+
+        // Make the channels & events of routers
+        for(int i=0; i<nocSize; i++) {
+            for(int j=0; j<nocSize; j++) {
+                // We must find the number of apps connected on this router
+                routers[i][j].makeOutputEventsChannels();
+            }
+        }
+
         // Make all routers
         for(int i=0; i<nocSize; i++) {
             for(int j=0; j<nocSize; j++) {
diff --git a/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java b/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java
index 895bb0bb58..430d4876f0 100644
--- a/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java
+++ b/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java
@@ -74,6 +74,21 @@ public class TranslatedRouter<E> {
     private TMLMapping<?> tmlmap;
 
 
+    // Events and channels with other routers
+
+    // Between  IN and INVC
+    TMLEvent [][] pktInEvtsVCs; // position, vc
+    TMLChannel [][] pktInChsVCs; // position, vc
+
+    // Between INVC and OUTVC
+    TMLEvent [][][] routeEvtVCs; // Task, vc, destination id
+    TMLEvent [][][] routeEvtVCsFeedback; // Task, vc, destination id
+
+    // Between OUTVC and OUT
+    TMLEvent [][] evtOutVCs; // position, vc
+    TMLEvent [][] evtSelectVC; // position, vc
+
+
     public TranslatedRouter(TMAP2Network<?> main, TMLMapping<?> tmlmap, HwNoC noc, List<TMLChannel> channelsViaNoc, int nbOfVCs, int xPos, int yPos) {
         this.main = main;
         this.nbOfVCs = nbOfVCs;
@@ -83,8 +98,6 @@ public class TranslatedRouter<E> {
         this.yPos = yPos;
         this.tmlmap = tmlmap;
 
-        //A router creates all its output events and channels, depending on its position in the NoC
-
     }
 
 
@@ -257,5 +270,67 @@ public class TranslatedRouter<E> {
 
     }
 
+    public void makeOutputEventsChannels() {
+        TMLModeling tmlm = tmlmap.getTMLModeling();
+
+
+
+
+        // Internal events and channels
+
+        // Between IN and INVC
+        pktInEvtsVCs = new TMLEvent[TMAP2Network.DOMAIN+1][nbOfVCs];
+        pktInChsVCs = new TMLChannel[TMAP2Network.DOMAIN+1][nbOfVCs];
+
+        for(int i=0; i<TMAP2Network.DOMAIN+1; i++) {
+            for(int j=0; j<nbOfVCs; j++) {
+                pktInEvtsVCs[i][j] = new TMLEvent("evt_pktin" + i + "_vc" + j + "_" + xPos + "_" + yPos,
+                        null, 8, true);
+                tmlm.addEvent(pktInEvtsVCs[i][j]);
+                pktInChsVCs[i][j] = new TMLChannel("ch_pktin" + i + "_vc" + j + "_" + xPos + "_" + yPos,
+                        null);
+                pktInChsVCs[i][j].setSize(4);
+                pktInChsVCs[i][j].setMax(8);
+                tmlm.addChannel(pktInChsVCs[i][j]);
+            }
+        }
+
+        // Between INVC and OUTVC
+        routeEvtVCs = new TMLEvent[TMAP2Network.DOMAIN+1][nbOfVCs][TMAP2Network.DOMAIN+1];
+        routeEvtVCsFeedback = new TMLEvent[TMAP2Network.DOMAIN+1][nbOfVCs][TMAP2Network.DOMAIN+1];
+        for(int i=0; i<TMAP2Network.DOMAIN+1; i++) {
+            for (int j = 0; j < nbOfVCs; j++) {
+                 for (int k = 0; k < TMAP2Network.DOMAIN+1; k++) {
+                     routeEvtVCs[i][j][k] = new TMLEvent("evtroute_" + i + "_vc" + j + "_" + k + "_" +
+                             xPos + "_" + yPos, null, 8, true);
+                     tmlm.addEvent(routeEvtVCs[i][j][k]);
+                     routeEvtVCsFeedback[i][j][k] = new TMLEvent("evtfeedback_" + i + "_vc" + j + "_" + k + "_" +
+                             xPos + "_" + yPos, null, 8, true);
+                     tmlm.addEvent(routeEvtVCsFeedback[i][j][k]);
+                 }
+            }
+        }
+
+
+
+        // Between OUTVC and OUT
+        evtOutVCs = new TMLEvent[TMAP2Network.DOMAIN+1][nbOfVCs];
+        evtSelectVC = new TMLEvent[TMAP2Network.DOMAIN+1][nbOfVCs];
+        for(int i=0; i<TMAP2Network.DOMAIN+1; i++) {
+            for(int j=0; j<nbOfVCs; j++) {
+                evtOutVCs[i][j] = new TMLEvent("evt_out" + i + "_vc" + j + "_" + xPos + "_" + yPos,
+                        null, 8, true);
+                tmlm.addEvent(evtOutVCs[i][j]);
+                evtSelectVC[i][j] = new TMLEvent("evt_vcselect" + i + "_vc" + j + "_" + xPos + "_" + yPos,
+                        null, 8, true);
+                tmlm.addEvent(evtSelectVC[i][j]);
+            }
+        }
+
+
+        // Interconnection with routers depending on position
+
+    }
+
 
 }
-- 
GitLab