SRK Version of mDot LoRa_Sensormode_SRK

Dependencies:   libmDot mbed-rtos mbed

Fork of mDot_LoRa_Sensornode by Adrian Mitevski

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TaskTesla.cpp Source File

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