First Commit

Dependencies:   mbed Crypto_light mbed-rtos

Spin it 2 win it

Revision:
8:e7818c369bd3
Parent:
7:0d6632fba8d4
Child:
10:cedc98128562
diff -r 0d6632fba8d4 -r e7818c369bd3 main.cpp
--- a/main.cpp	Mon Mar 12 15:31:44 2018 +0000
+++ b/main.cpp	Mon Mar 12 18:57:42 2018 +0000
@@ -23,7 +23,8 @@
 #define MSG_HASHCOUNT 0
 #define MSG_NONCE_OK 1
 #define MSG_OVERFLOW 2
-
+#define INVALID_KEY  3
+#define KEY_UPDATED  4
 //FIFO constant definitions
 #define MAX_ARRAY_SIZE 19 //Max length of input codes
 
@@ -67,7 +68,7 @@
 Mail<message_t,16> outMessages;
 
 //Replacement for printf so that notification shortcodes can be sent 
-void putMessage(uint8_t code, uint32_t data)
+void putMessage(uint8_t code, uint64_t data)
 {
     message_t *pMessage = outMessages.alloc();
     pMessage->code = code;
@@ -91,7 +92,7 @@
 //Global varible for the Bitcoin Key
 volatile uint64_t newKey = 0; //check initialise value? ****
 
-Mutex newKey_mutex //for mutex locking 
+Mutex newKey_mutex; //for mutex locking 
 
 //Queue class
 Queue<void, 8> inCharQ;
@@ -102,23 +103,34 @@
  }
  
 
+
 //decode commands
 Thread decodeT;
 
 //set the global NewKey
 void setNewCmd(char newCmd[MAX_ARRAY_SIZE]){
-    //find prefix ***
-     
+    //regex error checking ****
+    
     //K 
-    if newCmd[0] == 'K'{
+    if(newCmd[0] == 'K'){
         newKey_mutex.lock();
         sscanf(newCmd, "K%x", &newKey); //Decode the command
+        //error for invalid key
+        //if(newKey != newCmd){
+//            putMessage(INVALID_KEY, newKey);
+//        }
         newKey_mutex.unlock();
     }
+    
     //V
+    if(newCmd[0] == 'V'){
+        //set new velocity***
+    }
     
     //R
-     
+    if(newCmd[0] == 'R'){
+        //set new rotation***
+    }
         
 }
 
@@ -139,15 +151,17 @@
             if(bufferPosition != 0){
                 if(newCmd[bufferPosition - 1] == '\\'){
                     //carriage found 
-                    newChar = '0';  //replace character
+//                    newChar = '0';  //replace character
                     
                     //add to array
-                    newCmd[bufferPosition] = newChar; 
+                    newCmd[bufferPosition] = '0'; 
                     
                     //reset buffer
                     bufferPosition = 0;
                     //send char array to decoder ***
                     setNewCmd(newCmd);
+                    putMessage(KEY_UPDATED, newKey);
+                    putMessage(KEY_UPDATED, 0x0123456789abcdef);
                 }
             }
         }
@@ -274,7 +288,13 @@
                             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*)((int)sequence + 48);
+    //set key to newKey
+    *key = newKey;
+    putMessage(KEY_UPDATED, *key);
+    
+    
     uint64_t* nonce = (uint64_t*)((int)sequence + 56);
     uint8_t hash[32];
     
@@ -288,6 +308,8 @@
 
         (*nonce)++;
         hashcount++;
+        *key = newKey;
+        //putMessage(KEY_UPDATED, *key);
         
     }
 }