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