From 2d9337a1170ea7e5b16294a820b44593c59301ab Mon Sep 17 00:00:00 2001
From: Vipin Thomas <vipin.thomas@stud.th-deg.de>
Date: Mon, 21 Jun 2021 09:54:48 +0000
Subject: [PATCH] Update pixel.cpp

---
 pixel.cpp | 72 +++++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 54 insertions(+), 18 deletions(-)

diff --git a/pixel.cpp b/pixel.cpp
index e386207..1950682 100644
--- a/pixel.cpp
+++ b/pixel.cpp
@@ -9,52 +9,81 @@ using namespace std;
 typedef ap_axis<32,0,0,0> pkt_t;
 static int count_streams = 0;
 static long long charIn=0;
+static long long final_char=0;
 int addNum=0;
 
-long long toAscii(int number);
 long long convert(int n);
 int convertBinInt(long long n);
+void decrypt(int data);
 
 
-void pixel(char key,
+void pixel(ap_int<32> selector,
 		ap_int<32> position1,
 		ap_int<32> position2,
 		ap_int<32> stream_count,
-		ap_int<32> ascii,
+		ap_int<32> &ascii,
 		hls::stream< pkt_t > &din,
 		hls::stream< pkt_t > &dout
 ) {
 	#pragma HLS INTERFACE ap_ctrl_none port=return
-    #pragma HLS INTERFACE s_axilite port=key
+    #pragma HLS INTERFACE s_axilite port=selector
 	#pragma HLS INTERFACE s_axilite port=position1
 	#pragma HLS INTERFACE s_axilite port=position2
 	#pragma HLS INTERFACE s_axilite port=stream_count
-	#pragma HLS INTERFACE s_axilite port=ascii
+	#pragma HLS INTERFACE s_axilite port=ascii 
 	#pragma HLS INTERFACE axis port=din
 	#pragma HLS INTERFACE axis port=dout
 
-	pkt_t pkt=din.read();
-    if (count_streams == 0){
-        charIn=toAscii(ascii);
-    }
+    pkt_t pkt=din.read();
 
-    if((count_streams >= 3 * (position1 - 1)) && (count_streams < 3 * (position2))&& (charIn!=0)){
+    switch(selector)
+    {
+        case 0:
+            
+            if (count_streams == 0){
+                charIn=convert(ascii);
+            }
 
-        addNum=charIn%10;
-		charIn=(int)charIn/10;
+            if((count_streams >= 3 * (position1 - 1)) && (count_streams < 3 * (position2) - 1)){
+                addNum=0;
+                if(charIn!=0){
+                    addNum=charIn%10;
+		            charIn=(int)charIn/10;
+                }
 
-        pkt.data = convertBinInt((convert(pkt.data)/10)*10+addNum)
-        // pkt.data-=addNum;
+                if(pkt.data % 2 == 0 && addNum == 1){
+                    pkt.data += 1;
+                }else if(pkt.data % 2 != 0 && addNum == 0){
+                    pkt.data -= 1;
+                }
 
-    }
+            }
+
+            break;
 
+        case 1:
 
+            if((count_streams >= 3 * (position1 - 1)) && (count_streams < 3 * (position2))){
+                
+                decrypt(pkt.data);
+            
+            }
+            break;
+
+        default:
+            break;
+    }
+	
 	count_streams++;
 
 	if (count_streams == stream_count){
 		count_streams = 0;
         charIn=0;
         addNum=0;
+        
+        if(selector == 1){
+            ascii= convertBinInt(final_char);
+        }
 
 	}
 
@@ -74,10 +103,15 @@ long long convert(int n) {
     return bin;
 }
 
+void decrypt(int data) {
+int bit;
+if(data % 2 == 0){
+   bit = 0;
+}else if(data % 2 != 0){
+    bit=1;
+}
+final_char= final_char*10+bit;
 
-long long toAscii(int c) {
-    long long bin = convert(c);
-    return bin;
 }
 
 int convertBinInt(long long n) {
@@ -90,3 +124,5 @@ int convertBinInt(long long n) {
     }
     return dec;
 }
+
+
-- 
GitLab