fork of what I have been writing

Dependencies:   Crypto

Files at this revision

API Documentation at this revision

Comitter:
kubitz
Date:
Fri Mar 06 14:27:16 2020 +0000
Parent:
10:3669e3d832ed
Child:
12:38afe92e67d0
Commit message:
File tree - restructured

Changed in this revision

ES_CW2_Starter_STARFISH/CryptoMining.h Show annotated file Show diff for this revision Revisions of this file
ES_CW2_Starter_STARFISH/SerialCommunication.h Show annotated file Show diff for this revision Revisions of this file
ES_CW2_Starter_STARFISH/import.h Show annotated file Show diff for this revision Revisions of this file
ES_CW2_Starter_STARFISH/main.cpp Show annotated file Show diff for this revision Revisions of this file
ES_CW2_Starter_STARFISH/mutexes.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ES_CW2_Starter_STARFISH/CryptoMining.h	Fri Mar 06 14:27:16 2020 +0000
@@ -0,0 +1,46 @@
+// Crypto mining variables
+uint8_t sequence[] = {0x45, 0x6D, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64,
+                      0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73,
+                      0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x75, 0x6E,
+                      0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x6F, 0x20,
+                      0x61, 0x77, 0x65, 0x73, 0x6F, 0x6D, 0x65, 0x20,
+                      0x74, 0x68, 0x69, 0x6E, 0x67, 0x73, 0x21, 0x20,
+                      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+uint64_t *key = (uint64_t *)&sequence[48];
+uint64_t *nonce = (uint64_t *)&sequence[56];
+uint32_t successful_nonce = 0;
+uint32_t last_nonce_number = 0;
+uint8_t hash[32];
+Mail<uint64_t, 16> crypto_mail;
+
+
+// Function declartion: 
+// Thread that prints the successful nonces
+void thread_crypto_print(); 
+// Adds email with successful nonce to Mailbox to be retrieved by thread_crypto_print()
+void putMessageCrypto(uint64_t nonce); 
+
+// Thread to print successful Hashes
+void thread_crypto_print()
+{
+    while (true)
+    {
+        osEvent evt = crypto_mail.get();
+        if (evt.status == osEventMail)
+        {
+            uint64_t *matching_nonce = (uint64_t *)evt.value.p;
+            pc.printf("Matching nonce found: %llu \n\r",(long long) *matching_nonce); 
+            crypto_mail.free(matching_nonce);
+        }
+    }
+}
+
+// Put message in Mail box for Crypto printing
+void putMessageCrypto(uint64_t nonce)
+{
+    uint64_t *mail = crypto_mail.alloc();
+    *mail = nonce; 
+    crypto_mail.put(mail);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ES_CW2_Starter_STARFISH/SerialCommunication.h	Fri Mar 06 14:27:16 2020 +0000
@@ -0,0 +1,87 @@
+
+// Serial port variables
+std::string buffer_serial = ""; 
+RawSerial pc(USBTX, USBRX);
+char command_category;
+Mail<uint8_t, 8> inCharQ;
+float NewRotation; 
+float NewSpeed; 
+uint64_t NewKey;
+
+// Serial port methods
+
+// Decode characters in the serial buffer
+void decode_serial_buffer(std::string serial_buffer); 
+// Thread that receives character one by one until \r is received
+void thread_processor_callback(); 
+// ISR -  Interrupt service routine for the Serial communication
+void serialISR(); 
+
+
+void decode_serial_buffer(std::string serial_buffer)
+{   
+    command_category = serial_buffer[0]; 
+    switch (command_category)
+    {
+    case 'R':
+        // Rotation command - R-?\d{1,s4}(\.\d)?
+        Rotation_mutex.lock(); 
+        sscanf(serial_buffer.c_str(), "%c %f", &command_category, &NewRotation); 
+        pc.printf("You have a new rotation: %f \r\n", NewRotation);
+        Rotation_mutex.unlock(); 
+
+        break;
+    case 'V':
+        // Speed command - V\d{1,3}(\.\d)?
+        Speed_mutex.lock();
+        sscanf(serial_buffer.c_str(), "%c %f", &command_category, &NewSpeed); 
+        pc.printf("You have a new speed: %f \r\n", NewSpeed);
+        Speed_mutex.unlock(); 
+        // to implement !
+        break;
+
+    case 'K':
+        // Bitcoin key command - K[0-9a-fA-F]{16}
+        NewKey_mutex.lock();
+        sscanf(serial_buffer.c_str(), "%c %llx", &command_category, &NewKey); 
+        pc.printf("You have entered a new bitcoin key: %llu \r\n",(long long) NewKey);
+        NewKey_mutex.unlock();
+        break;
+
+    case 'T':
+        // Melody command - T([A-G][#^]?[1-8]){1,16}
+        Music_mutex.lock();
+        pc.printf("You have entered a new melody: --> TO IMPLEMENT <--- \r\n");
+        Music_mutex.unlock(); 
+        // to implement !
+
+    default:
+        printf("Input value out of format - please try again! \r\n");
+    }
+}
+
+// Thread processor raw serial inputs:
+void thread_processor_callback()
+{
+    while (true)
+    {
+        osEvent evt = inCharQ.get();
+        uint8_t *newChar = (uint8_t *)evt.value.p;
+        buffer_serial += (*newChar); 
+        //Store the new character
+        if (buffer_serial.back() == '\r')
+          {
+            buffer_serial += '\0';
+            decode_serial_buffer(buffer_serial);
+            buffer_serial = ""; 
+            }
+        inCharQ.free(newChar);
+    }
+}
+
+void serialISR()
+{   
+    uint8_t *newChar = inCharQ.alloc();
+    *newChar = pc.getc();
+    inCharQ.put(newChar);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ES_CW2_Starter_STARFISH/import.h	Fri Mar 06 14:27:16 2020 +0000
@@ -0,0 +1,8 @@
+#include "mbed.h"
+#include "SHA256.h"
+#include "rtos.h"
+#include <stdlib.h>
+#include <string>
+#include "mutexes.h"
+#include "SerialCommunication.h"
+#include "CryptoMining.h"
--- a/ES_CW2_Starter_STARFISH/main.cpp	Wed Mar 04 15:56:19 2020 +0000
+++ b/ES_CW2_Starter_STARFISH/main.cpp	Fri Mar 06 14:27:16 2020 +0000
@@ -1,56 +1,16 @@
 
-#include "mbed.h"
-#include "SHA256.h"
-#include "rtos.h"
-#include <stdlib.h>
-#include <string>
-
-// Mail variables to pass data to threads
-
-Mail<uint64_t, 16> crypto_mail;
-Mail<uint8_t, 8> inCharQ;
+#include "import.h"
 
 // Declaration of threads
 Thread thread_crypto;
 Thread thread_processor;
 
-Mutex NewKey_mutex;
-Mutex Speed_mutex; 
-Mutex Music_mutex; 
-Mutex Rotation_mutex; 
-
-// Crypto mining variables
-uint8_t sequence[] = {0x45, 0x6D, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64,
-                      0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73,
-                      0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x75, 0x6E,
-                      0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x6F, 0x20,
-                      0x61, 0x77, 0x65, 0x73, 0x6F, 0x6D, 0x65, 0x20,
-                      0x74, 0x68, 0x69, 0x6E, 0x67, 0x73, 0x21, 0x20,
-                      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-uint64_t *key = (uint64_t *)&sequence[48];
-uint64_t *nonce = (uint64_t *)&sequence[56];
-uint32_t successful_nonce = 0;
-uint32_t last_nonce_number = 0;
-uint8_t hash[32];
-uint64_t NewKey;
-
-float NewRotation; 
-float NewSpeed; 
 
 // Timing variables for printing calculation rate
 Timer timer_nonce;
 uint32_t previous_time;
 
-// Serial port variables
-// Max size of serial input is 49 + Null character
-char serial_buffer[50];
-std::string buffer_serial = ""; 
-RawSerial pc(USBTX, USBRX);
-char command_category;
-char *trimmed_serial_buffer;
-uint64_t extracted_value_serial_hex;
-uint8_t idx;
+
 //Photointerrupter input pins
 #define I1pin D3
 #define I2pin D6
@@ -184,100 +144,6 @@
     intStateOld = intState;
 }
 
-// Thread to print successful Hashes
-void thread_crypto_print()
-{
-    while (true)
-    {
-        osEvent evt = crypto_mail.get();
-        if (evt.status == osEventMail)
-        {
-            uint64_t *matching_nonce = (uint64_t *)evt.value.p;
-            pc.printf("Matching nonce found: %llu \n\r",(long long) *matching_nonce); 
-            crypto_mail.free(matching_nonce);
-        }
-    }
-}
-
-void decode_serial_buffer(std::string serial_buffer)
-{   
-    command_category = serial_buffer[0]; 
-    switch (command_category)
-    {
-    case 'R':
-        // Rotation command - R-?\d{1,s4}(\.\d)?
-        Rotation_mutex.lock(); 
-        sscanf(serial_buffer.c_str(), "%c-%f", &command_category, &NewRotation); 
-        pc.printf("You have a new rotation: %f \r\n", NewRotation);
-        Rotation_mutex.unlock(); 
-
-        break;
-    case 'V':
-        // Speed command - V\d{1,3}(\.\d)?
-        Speed_mutex.lock();
-        sscanf(serial_buffer.c_str(), "%c %f", &command_category, &NewSpeed); 
-        pc.printf("You have a new speed: %f \r\n", NewSpeed);
-        Speed_mutex.unlock(); 
-        // to implement !
-        break;
-
-    case 'K':
-        // Bitcoin key command - K[0-9a-fA-F]{16}
-        NewKey_mutex.lock();
-        sscanf(serial_buffer.c_str(), "%c %llx", &command_category, &NewKey); 
-        pc.printf("You have entered a new bitcoin key: %llu \r\n",(long long) NewKey);
-        NewKey_mutex.unlock();
-        break;
-
-    case 'T':
-        // Melody command - T([A-G][#^]?[1-8]){1,16}
-        Music_mutex.lock();
-        pc.printf("You have entered a new melody: --> TO IMPLEMENT <--- \r\n");
-        Music_mutex.unlock(); 
-        // to implement !
-
-    default:
-        printf("Input value out of format - please try again! \r\n");
-    }
-}
-
-// Thread processor raw serial inputs:
-void thread_processor_callback()
-{
-    while (true)
-    {
-        osEvent evt = inCharQ.get();
-        uint8_t *newChar = (uint8_t *)evt.value.p;
-        buffer_serial += (*newChar); 
-        //Store the new character
-        if (buffer_serial.back() == '\r')
-          {
-            buffer_serial += '\0';
-            decode_serial_buffer(buffer_serial);
-            buffer_serial = ""; 
-            }
-        inCharQ.free(newChar);
-    }
-}
-
-
-// Put message in Mail box for Crypto printing
-void putMessageCrypto(uint64_t nonce)
-{
-    uint64_t *mail = crypto_mail.alloc();
-    *mail = nonce; 
-    crypto_mail.put(mail);
-}
-
-// ISR routine to get charachter from Serial command
-void serialISR()
-{   
-    uint8_t *newChar = inCharQ.alloc();
-    *newChar = pc.getc();
-    inCharQ.put(newChar);
-}
-
-// Attach interrupt routine on serial port
 
 //Main
 int main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ES_CW2_Starter_STARFISH/mutexes.h	Fri Mar 06 14:27:16 2020 +0000
@@ -0,0 +1,4 @@
+Mutex NewKey_mutex;
+Mutex Speed_mutex; 
+Mutex Music_mutex; 
+Mutex Rotation_mutex;