fork of what I have been writing

Dependencies:   Crypto

Committer:
le1917
Date:
Mon Mar 09 17:19:39 2020 +0000
Revision:
13:f6e37c21d31d
Parent:
12:38afe92e67d0
Thread start stopping not working;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
le1917 12:38afe92e67d0 1 #include "mbed.h"
le1917 12:38afe92e67d0 2 #include "SHA256.h"
le1917 12:38afe92e67d0 3 #include "rtos.h"
le1917 12:38afe92e67d0 4 #include <stdlib.h>
le1917 12:38afe92e67d0 5 #include <string>
le1917 13:f6e37c21d31d 6
le1917 13:f6e37c21d31d 7 Mutex NewKey_mutex;
le1917 13:f6e37c21d31d 8 Mutex NewMotorCommand_mutex;
le1917 13:f6e37c21d31d 9 Mutex Music_mutex;
le1917 13:f6e37c21d31d 10
le1917 13:f6e37c21d31d 11 // Global Variable Shared between threads
le1917 13:f6e37c21d31d 12 float NewRotation;
le1917 13:f6e37c21d31d 13 float NewSpeed;
le1917 13:f6e37c21d31d 14 uint64_t NewKey;
le1917 13:f6e37c21d31d 15
le1917 13:f6e37c21d31d 16 bool NewSpeed_flag;
le1917 13:f6e37c21d31d 17 bool NewRotation_flag;
le1917 13:f6e37c21d31d 18
le1917 12:38afe92e67d0 19 #include "SerialCommunication.h"
le1917 12:38afe92e67d0 20 #include "CryptoMining.h"
le1917 12:38afe92e67d0 21 #include "MotorControl.h"
kubitz 9:4135d0c8dc10 22
le1917 13:f6e37c21d31d 23
le1917 13:f6e37c21d31d 24
le1917 13:f6e37c21d31d 25
le1917 13:f6e37c21d31d 26
kubitz 9:4135d0c8dc10 27 // Declaration of threads
kubitz 6:5f4a954cb8bc 28 Thread thread_crypto;
kubitz 9:4135d0c8dc10 29 Thread thread_processor;
kubitz 10:3669e3d832ed 30
kubitz 9:4135d0c8dc10 31 // Timing variables for printing calculation rate
kubitz 9:4135d0c8dc10 32 Timer timer_nonce;
kubitz 9:4135d0c8dc10 33 uint32_t previous_time;
kubitz 9:4135d0c8dc10 34
kubitz 0:19fd8c1944fb 35 //Main
kubitz 9:4135d0c8dc10 36 int main()
kubitz 9:4135d0c8dc10 37 {
kubitz 9:4135d0c8dc10 38 pc.attach(&serialISR);
kubitz 9:4135d0c8dc10 39
kubitz 9:4135d0c8dc10 40 // Initialize threads and timers
kubitz 9:4135d0c8dc10 41 timer_nonce.start();
kubitz 7:aef5b29d7a7c 42 thread_crypto.start(thread_crypto_print);
kubitz 9:4135d0c8dc10 43 thread_processor.start(thread_processor_callback);
le1917 13:f6e37c21d31d 44 //NewSpeed = 30;
le1917 13:f6e37c21d31d 45 //thread_motorCtrl.start(&NewSpeed, motorCtrlFn);
le1917 13:f6e37c21d31d 46
kubitz 9:4135d0c8dc10 47 uint8_t hash[32];
kubitz 5:de6430aee646 48
le1917 12:38afe92e67d0 49 while (1) {
le1917 13:f6e37c21d31d 50 //Luccas' Code until we can move rest into seperate thread
le1917 13:f6e37c21d31d 51
le1917 13:f6e37c21d31d 52 NewMotorCommand_mutex.lock();
le1917 13:f6e37c21d31d 53
le1917 13:f6e37c21d31d 54 pc.printf("Thread Actual %d\r\n", thread_motorCtrl.get_state());
le1917 13:f6e37c21d31d 55 pc.printf("Thread state Expected %d\r\n",Thread::Running);
le1917 13:f6e37c21d31d 56
le1917 13:f6e37c21d31d 57
le1917 13:f6e37c21d31d 58
le1917 13:f6e37c21d31d 59 if(NewSpeed_flag && thread_motorCtrl.get_state() != Thread::Deleted){
le1917 13:f6e37c21d31d 60 pc.printf("Ending Previous Thread");
le1917 13:f6e37c21d31d 61 thread_motorCtrl.terminate();
le1917 13:f6e37c21d31d 62 }
le1917 13:f6e37c21d31d 63
le1917 13:f6e37c21d31d 64 if(NewSpeed_flag){
le1917 13:f6e37c21d31d 65 pc.printf("starting thread");
le1917 13:f6e37c21d31d 66 thread_motorCtrl.start(&NewSpeed, motorCtrlFn);
le1917 13:f6e37c21d31d 67 NewSpeed_flag = false;
le1917 13:f6e37c21d31d 68 }
le1917 13:f6e37c21d31d 69
le1917 13:f6e37c21d31d 70 NewMotorCommand_mutex.unlock();
le1917 13:f6e37c21d31d 71
le1917 13:f6e37c21d31d 72 wait(1);
le1917 13:f6e37c21d31d 73
kubitz 10:3669e3d832ed 74 // Set main as lowest priority thread
kubitz 10:3669e3d832ed 75 NewKey_mutex.lock();
le1917 12:38afe92e67d0 76 *key = NewKey;
kubitz 10:3669e3d832ed 77 NewKey_mutex.unlock();
kubitz 10:3669e3d832ed 78
kubitz 9:4135d0c8dc10 79 SHA256::computeHash(hash, (uint8_t *)sequence, 64);
kubitz 5:de6430aee646 80 *nonce = *nonce + 1;
kubitz 5:de6430aee646 81
le1917 12:38afe92e67d0 82 if ((hash[0] == 0) && (hash[1] == 0)) {
kubitz 0:19fd8c1944fb 83 last_nonce_number = successful_nonce;
kubitz 10:3669e3d832ed 84 putMessageCrypto(*nonce);
kubitz 0:19fd8c1944fb 85 successful_nonce++;
kubitz 9:4135d0c8dc10 86 }
kubitz 9:4135d0c8dc10 87
le1917 12:38afe92e67d0 88 if ((timer_nonce.read_ms() - previous_time) > 1000) {
kubitz 9:4135d0c8dc10 89 //pc.printf("Computation Rate: %lu computation /sec\n\r", (*nonce - last_nonce_number));
kubitz 0:19fd8c1944fb 90 last_nonce_number = *nonce;
kubitz 5:de6430aee646 91 previous_time = timer_nonce.read_ms();
kubitz 0:19fd8c1944fb 92 }
kubitz 0:19fd8c1944fb 93 }
kubitz 0:19fd8c1944fb 94
kubitz 9:4135d0c8dc10 95 return 0;
le1917 12:38afe92e67d0 96 }