Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SoftSerial MAX14690 Buffer
Fork of rtos_threading_with_callback by
Diff: main.cpp
- Revision:
- 2:bf699e054b34
- Parent:
- 0:d4b2a035ffe3
- Child:
- 3:d7ec6dc025b0
--- a/main.cpp Fri Jun 23 14:21:38 2017 -0500
+++ b/main.cpp Sun Feb 25 16:40:28 2018 +0000
@@ -1,21 +1,73 @@
#include "mbed.h"
+#include "rtos.h"
+#include "global.h"
+#include "linkLayer.h"
+#include "txQueue.h"
+
+#include "max32630fthr.h"
+MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
+
+
+SPI spi(P5_1, P5_2, P5_0);
+I2C i2c(P5_7, P6_0); //sda, scl
+I2C i2c2(P3_4, P3_5); //sda, scl
-Thread thread;
-DigitalOut led1(LED1);
-volatile bool running = true;
+TxQueue txQueue;
+LinkLayerEncoder linkEnc;
+
+Thread registeredThreads[15];
+threadFunc_t registeredThreadFunctions[15];
+unsigned numRegisteredThreads=0;
+Thread thread_txRF(osPriorityHigh);
+
+
+float temperature, pressure, altitude, humidity;
+float acc1[3];
+float acc2[3];
+float gyro1[3], gyro2[3];
-// Blink function toggles the led in a long running loop
-void blink(DigitalOut *led) {
- while (running) {
- *led = !*led;
- wait(1);
+bool registerThread(threadFunc_t f)
+{
+ if(numRegisteredThreads >= 14)
+ {
+ printf("ERROR: Max registerable threads reached\r\n");
+ return false;
+ }
+ registeredThreadFunctions[numRegisteredThreads++]=f;
+ printf("registered function\r\n");
+ return true;
+}
+void setupTx()
+{
+ spi.frequency(1000);//1kbps
+}
+void txData() //TODO: evaluate callback async
+{
+ spi.lock();
+ while(1)
+ {
+ uint8_t txBuf[8]={0,0,0,0,0,0,0,0};
+ for(unsigned i = 0; i < 8; i++)
+ for(unsigned j=0; j<8;j++)
+ {
+ txBuf[i]|=(linkEnc.getNext()<<j);
+ }
+ printf("0x%02x%02x%02x%02x%02x%02x%02x%02x\r\n", txBuf[0], txBuf[1], txBuf[2], txBuf[3], txBuf[4], txBuf[5], txBuf[6], txBuf[7]);
+ spi.write((char*)txBuf, 8, (char*)0, 0);
}
}
-
-// Spawns a thread to run blink for 5 seconds
int main() {
- thread.start(callback(blink, &led1));
- wait(5);
- running = false;
- thread.join();
-}
\ No newline at end of file
+ setupTx();
+ thread_txRF.start(txData);
+
+ for(int i=0; i<numRegisteredThreads; i++)
+ {
+ registeredThreads[i].set_priority(osPriorityBelowNormal);
+ registeredThreads[i].start(registeredThreadFunctions[i]);
+ }
+ printf("MAIN: started %u registered application threads\r\n", numRegisteredThreads);
+
+ while(1)
+ wait(1024);
+}
+
\ No newline at end of file
