SRK Version of mDot LoRa_Sensormode_SRK
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
TaskTesla.cpp
00001 /* 00002 * TaskTesla.cpp 00003 * 00004 * Created on: 01.06.2016 00005 * Author: Adrian 00006 */ 00007 00008 #include "TaskTesla.h " 00009 00010 TaskTesla::TaskTesla(MPU9250* mpu9250,Mutex* mutexI2C, Queue<MPU9250TeslaMessage,TESLA_QUEUE_LENGHT>* queue){ 00011 this->mpu9250 = mpu9250; 00012 setMutex(mutexI2C); 00013 setQueue(queue); 00014 } 00015 00016 TaskTesla::TaskTesla(MPU9250* mpu9250,rtos::Mutex* mutexI2C, 00017 rtos::Queue<MPU9250TeslaMessage,TESLA_QUEUE_LENGHT>* queue, 00018 osPriority priority, uint32_t stackSize, unsigned char *stackPointer){ 00019 this->mpu9250 = mpu9250; 00020 setMutex(mutexI2C); 00021 setQueue(queue); 00022 setPriority(priority); 00023 setStackSize(stackSize); 00024 setStackPointer(stackPointer); 00025 setState(SLEEPING); 00026 } 00027 00028 TaskTesla::~TaskTesla() { 00029 // TODO Auto-generated destructor stub 00030 } 00031 00032 osStatus TaskTesla::start(){ 00033 setState(RUNNING); 00034 this->thread = new rtos::Thread(callBack,this); 00035 } 00036 00037 osStatus TaskTesla::stop(){ 00038 thread->terminate(); 00039 setState(SLEEPING); 00040 delete this->thread; 00041 } 00042 00043 void TaskTesla::callBack(void const* data){ 00044 // WOODHAMMER METHOD of Casting! 00045 const TaskTesla* constInstance = static_cast<const TaskTesla* >(data); 00046 TaskTesla* instance = const_cast<TaskTesla*>(constInstance); 00047 00048 instance->measureTesla(); 00049 } 00050 00051 void TaskTesla::measureTesla(){ 00052 MPU9250TeslaMessage mpu9250TeslaMessage; 00053 00054 while(true){ 00055 mutexI2C->lock(osWaitForever); 00056 mpu9250TeslaMessage.setXTesla(mpu9250->getXAxisTesla()); 00057 mpu9250TeslaMessage.setYTesla(mpu9250->getYAxisTesla()); 00058 mpu9250TeslaMessage.setZTesla(mpu9250->getZAxisTesla()); 00059 mutexI2C->unlock(); 00060 00061 queue->put(&mpu9250TeslaMessage,osWaitForever); 00062 osDelay(TESLA_TASK_DELAY_MS); 00063 } 00064 } 00065 00066 void TaskTesla::setQueue(Queue<MPU9250TeslaMessage,TESLA_QUEUE_LENGHT>* queue){ 00067 this->queue = queue; 00068 } 00069 00070 void TaskTesla::setMutex(Mutex* mutex){ 00071 this->mutexI2C = mutex; 00072 } 00073 00074 void TaskTesla::setPriority(osPriority priority){ 00075 this->priority = priority; 00076 } 00077 00078 void TaskTesla::setStackSize(uint32_t stacksize){ 00079 this->stack_size = stacksize; 00080 } 00081 00082 void TaskTesla::setStackPointer(unsigned char* stackPointer){ 00083 this->stack_pointer = stackPointer; 00084 } 00085 00086 void TaskTesla::setState(TASK_STATE state){ 00087 this->state = state; 00088 } 00089 00090 TASK_STATE TaskTesla::getState(){ 00091 return state; 00092 } 00093
Generated on Wed Jul 13 2022 09:23:48 by 1.7.2