updated to mbed os 5.4
Fork of Task633 by
Revision 11:ae623ddb2eff, committed 2017-04-03
- Comitter:
- noutram
- Date:
- Mon Apr 03 14:24:10 2017 +0000
- Parent:
- 10:3a3d2a571c8f
- Commit message:
- updated to mbed os 5.4
Changed in this revision
--- a/main.cpp Tue Mar 22 13:40:05 2016 +0000
+++ b/main.cpp Mon Apr 03 14:24:10 2017 +0000
@@ -1,13 +1,12 @@
#include "mbed.h"
-#include "rtos.h"
#include "string.h"
#include <stdio.h>
#include <ctype.h>
#define SWITCH1_RELEASE 1
-void thread1( const void* );
-void thread2( const void* );
+void thread1();
+void thread2();
void switchISR();
//Analogue inputs
@@ -43,13 +42,18 @@
};
//Memory Pool - with capacity for 16 message_t types
-MemoryPool<message_t, 16> mpool;
+//MemoryPool<message_t, 16> mpool;
//Message queue - matched to the memory pool
-Queue<message_t, 16> queue;
+//Queue<message_t, 16> queue;
+
+//Mail queue
+Mail<message_t, 16> mail_box;
+
// Call this on precise intervals
void adcISR() {
+
//Read sample - make a copy
float sample = adcIn;
@@ -58,9 +62,10 @@
uint32_t switch2State = sw2;
//Allocate a block from the memory pool
- message_t *message = mpool.alloc();
+ message_t *message = mail_box.alloc();
if (message == NULL) {
//Out of memory
+ printf("Out of memory\n\r");
redLED = 1;
return;
}
@@ -71,39 +76,42 @@
message->sw2State = switch2State;
//Write to queue
- osStatus stat = queue.put(message); //Note we are sending the "pointer"
+ osStatus stat = mail_box.put(message); //Note we are sending the "pointer"
//Check if succesful
if (stat == osErrorResource) {
redLED = 1;
printf("queue->put() Error code: %4Xh, Resource not available\r\n", stat);
- mpool.free(message);
+ mail_box.free(message);
return;
}
+
+
}
//Normal priority thread (consumer)
-void thread1( const void* arg )
+void thread1()
{
while (true) {
//Block on the queue
- osEvent evt = queue.get();
+ osEvent evt = mail_box.get();
//Check status
- if (evt.status == osEventMessage) {
+ if (evt.status == osEventMail) {
message_t *pMessage = (message_t*)evt.value.p; //This is the pointer (address)
//Make a copy
message_t msg(pMessage->adcValue, pMessage->sw1State, pMessage->sw2State);
//We are done with this, so give back the memory to the pool
- mpool.free(pMessage);
+ mail_box.free(pMessage);
//Echo to the terminal
printf("ADC Value: %.2f\t", msg.adcValue);
printf("SW1: %u\t", msg.sw1State);
printf("SW2: %u\n\r", msg.sw2State);
- }
-
-
+ } else {
+ printf("ERROR: %x\n\r", evt.status);
+ }
+
} //end while
}
@@ -122,7 +130,8 @@
timer.attach(&adcISR, 0.1);
//Threads
- t1 = new Thread(&thread1);
+ t1 = new Thread();
+ t1->start(thread1);
printf("Main Thread\n");
while (true) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Mon Apr 03 14:24:10 2017 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#50b3418e45484ebf442b88cd935a2d5355402d7d
--- a/mbed-rtos.lib Tue Mar 22 13:40:05 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/mbed_official/code/mbed-rtos/#b4c5542476ba
--- a/mbed.bld Tue Mar 22 13:40:05 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/252557024ec3 \ No newline at end of file
Nicholas Outram