Leon Wehmeier / Mbed OS fiasco_max32630

Dependencies:   SoftSerial MAX14690 Buffer

Fork of rtos_threading_with_callback by mbed_example

Committer:
lwehmeier
Date:
Sun Feb 25 16:40:28 2018 +0000
Revision:
2:bf699e054b34
Parent:
0:d4b2a035ffe3
Child:
3:d7ec6dc025b0
changed to modular design; rtos support; BMI160, BMP180, SSD1306, MPU6050, DHT11, SD support implemented; bit stuffing for link layer implemented; priority queue for data transmission; high-priority SPI link layer output thread

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mab5449 0:d4b2a035ffe3 1 #include "mbed.h"
lwehmeier 2:bf699e054b34 2 #include "rtos.h"
lwehmeier 2:bf699e054b34 3 #include "global.h"
lwehmeier 2:bf699e054b34 4 #include "linkLayer.h"
lwehmeier 2:bf699e054b34 5 #include "txQueue.h"
lwehmeier 2:bf699e054b34 6
lwehmeier 2:bf699e054b34 7 #include "max32630fthr.h"
lwehmeier 2:bf699e054b34 8 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
lwehmeier 2:bf699e054b34 9
lwehmeier 2:bf699e054b34 10
lwehmeier 2:bf699e054b34 11 SPI spi(P5_1, P5_2, P5_0);
lwehmeier 2:bf699e054b34 12 I2C i2c(P5_7, P6_0); //sda, scl
lwehmeier 2:bf699e054b34 13 I2C i2c2(P3_4, P3_5); //sda, scl
mab5449 0:d4b2a035ffe3 14
lwehmeier 2:bf699e054b34 15 TxQueue txQueue;
lwehmeier 2:bf699e054b34 16 LinkLayerEncoder linkEnc;
lwehmeier 2:bf699e054b34 17
lwehmeier 2:bf699e054b34 18 Thread registeredThreads[15];
lwehmeier 2:bf699e054b34 19 threadFunc_t registeredThreadFunctions[15];
lwehmeier 2:bf699e054b34 20 unsigned numRegisteredThreads=0;
lwehmeier 2:bf699e054b34 21 Thread thread_txRF(osPriorityHigh);
lwehmeier 2:bf699e054b34 22
lwehmeier 2:bf699e054b34 23
lwehmeier 2:bf699e054b34 24 float temperature, pressure, altitude, humidity;
lwehmeier 2:bf699e054b34 25 float acc1[3];
lwehmeier 2:bf699e054b34 26 float acc2[3];
lwehmeier 2:bf699e054b34 27 float gyro1[3], gyro2[3];
mab5449 0:d4b2a035ffe3 28
lwehmeier 2:bf699e054b34 29 bool registerThread(threadFunc_t f)
lwehmeier 2:bf699e054b34 30 {
lwehmeier 2:bf699e054b34 31 if(numRegisteredThreads >= 14)
lwehmeier 2:bf699e054b34 32 {
lwehmeier 2:bf699e054b34 33 printf("ERROR: Max registerable threads reached\r\n");
lwehmeier 2:bf699e054b34 34 return false;
lwehmeier 2:bf699e054b34 35 }
lwehmeier 2:bf699e054b34 36 registeredThreadFunctions[numRegisteredThreads++]=f;
lwehmeier 2:bf699e054b34 37 printf("registered function\r\n");
lwehmeier 2:bf699e054b34 38 return true;
lwehmeier 2:bf699e054b34 39 }
lwehmeier 2:bf699e054b34 40 void setupTx()
lwehmeier 2:bf699e054b34 41 {
lwehmeier 2:bf699e054b34 42 spi.frequency(1000);//1kbps
lwehmeier 2:bf699e054b34 43 }
lwehmeier 2:bf699e054b34 44 void txData() //TODO: evaluate callback async
lwehmeier 2:bf699e054b34 45 {
lwehmeier 2:bf699e054b34 46 spi.lock();
lwehmeier 2:bf699e054b34 47 while(1)
lwehmeier 2:bf699e054b34 48 {
lwehmeier 2:bf699e054b34 49 uint8_t txBuf[8]={0,0,0,0,0,0,0,0};
lwehmeier 2:bf699e054b34 50 for(unsigned i = 0; i < 8; i++)
lwehmeier 2:bf699e054b34 51 for(unsigned j=0; j<8;j++)
lwehmeier 2:bf699e054b34 52 {
lwehmeier 2:bf699e054b34 53 txBuf[i]|=(linkEnc.getNext()<<j);
lwehmeier 2:bf699e054b34 54 }
lwehmeier 2:bf699e054b34 55 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]);
lwehmeier 2:bf699e054b34 56 spi.write((char*)txBuf, 8, (char*)0, 0);
mab5449 0:d4b2a035ffe3 57 }
mab5449 0:d4b2a035ffe3 58 }
mab5449 0:d4b2a035ffe3 59 int main() {
lwehmeier 2:bf699e054b34 60 setupTx();
lwehmeier 2:bf699e054b34 61 thread_txRF.start(txData);
lwehmeier 2:bf699e054b34 62
lwehmeier 2:bf699e054b34 63 for(int i=0; i<numRegisteredThreads; i++)
lwehmeier 2:bf699e054b34 64 {
lwehmeier 2:bf699e054b34 65 registeredThreads[i].set_priority(osPriorityBelowNormal);
lwehmeier 2:bf699e054b34 66 registeredThreads[i].start(registeredThreadFunctions[i]);
lwehmeier 2:bf699e054b34 67 }
lwehmeier 2:bf699e054b34 68 printf("MAIN: started %u registered application threads\r\n", numRegisteredThreads);
lwehmeier 2:bf699e054b34 69
lwehmeier 2:bf699e054b34 70 while(1)
lwehmeier 2:bf699e054b34 71 wait(1024);
lwehmeier 2:bf699e054b34 72 }
lwehmeier 2:bf699e054b34 73