MKData.cpp
Go to the documentation of this file.
00001 /*
00002  * MKData.cpp
00003  *
00004  *  Created on: Nov 25, 2011
00005  *      Author: mriedel
00006  */
00007 
00008 #include <tk_mkinterface/MKData.hpp>
00009 
00010 #include <boost/foreach.hpp>
00011 
00012 namespace TELEKYB_NAMESPACE {
00013 MKData::MKData()
00014 {
00015         // create Map
00016         createMap();
00017 }
00018 
00019 MKData::~MKData()
00020 {
00021         MKValueMap::iterator it;
00022         for (it = valueMap.begin(); it != valueMap.end(); it++) {
00023                 delete (*it).second;
00024         }
00025 }
00026 
00027 void MKData::createMap()
00028 {
00029         for (int i = 0; i < MKDataDefines::MKDATAIDS_NUM; ++i) {
00030                 valueMap[i] = new MKValue( MKDataDefines::MKDATAIDS_NAMES[i],i);
00031         }
00032 }
00033 
00034 MKValue* MKData::getValueByID(MKInt id) const
00035 {
00036         MKValue* value = NULL;
00037         if (valueMap.count(id) > 0) {
00038                 value = valueMap.at(id);
00039         }
00040         return value;
00041 }
00042 
00043 MKValue* MKData::setValue(MKSingleValuePacket packet)
00044 {
00045         MKValue* value = getValueByID(packet.id);
00046         if (value) {
00047                 value->setValue(packet.value);
00048                 // notify
00049                 notifyMKDataListeners(value);
00050         }
00051         // NULL means not successful!
00052         return value;
00053 }
00054 
00055 void MKData::notifyMKDataListeners(MKValue* value)
00056 {
00057         BOOST_FOREACH(MKDataListener* l, dataListenerSet) {
00058                 l->dataValueUpdated(value);
00059         }
00060 }
00061 
00062 bool MKData::isMember(MKValue* value_) const
00063 {
00064         return value_ && (value_ == getValueByID(value_->getID()));
00065 }
00066 
00067 MKActiveIDs MKData::getPattern(MKDataPattern pattern)
00068 {
00069         MKActiveIDs activeIDs;
00070         switch (pattern.value()) {
00071                 case MKDataPattern::RawImuAttEst:
00072                         activeIDs.ids[0] = MKDataDefines::RAW_ACC_X;
00073                         activeIDs.ids[1] = MKDataDefines::RAW_ACC_Y;
00074                         activeIDs.ids[2] = MKDataDefines::RAW_ACC_Z;
00075                         activeIDs.ids[3] = MKDataDefines::RAW_GYRO_X;
00076                         activeIDs.ids[4] = MKDataDefines::RAW_GYRO_Y;
00077                         activeIDs.ids[5] = MKDataDefines::RAW_GYRO_Z;
00078                         activeIDs.ids[6] = MKDataDefines::PITCH;
00079                         activeIDs.ids[7] = MKDataDefines::ROLL;
00080                         activeIDs.ids[8] = MKDataDefines::MOTOR_STATE;
00081                         activeIDs.ids[9] = MKDataDefines::TIME_MS_MOD_60S;
00082                         break;
00083                 case MKDataPattern::AccOffsetGyroDrift:
00084                         activeIDs.ids[0] = MKDataDefines::DRIFT_GYRO_X;
00085                         activeIDs.ids[1] = MKDataDefines::DRIFT_GYRO_Y;
00086                         activeIDs.ids[2] = MKDataDefines::DRIFT_GYRO_Z;
00087                         activeIDs.ids[3] = MKDataDefines::OFFSET_RAW_ACC_X;
00088                         activeIDs.ids[4] = MKDataDefines::OFFSET_RAW_ACC_Y;
00089                         activeIDs.ids[5] = MKDataDefines::OFFSET_RAW_ACC_Z;
00090                         activeIDs.ids[6] = MKDataDefines::DRIFT_ESTIM_ACTIVE;
00091                         activeIDs.ids[7] = MKDataDefines::MIRROR_DATA_ACTIVE;
00092                         activeIDs.ids[8] = MKDataDefines::MOTOR_STATE;
00093                         activeIDs.ids[9] = MKDataDefines::TIME_MS_MOD_60S;
00094                         break;
00095                 case MKDataPattern::CompFilt:
00096                         activeIDs.ids[0] = MKDataDefines::PITCH;
00097                         activeIDs.ids[1] = MKDataDefines::ROLL;
00098                         activeIDs.ids[2] = MKDataDefines::PITCH_RATE;
00099                         activeIDs.ids[3] = MKDataDefines::ROLL_RATE;
00100                         activeIDs.ids[4] = MKDataDefines::RAW_ACC_X;
00101                         activeIDs.ids[5] = MKDataDefines::RAW_ACC_Y;
00102                         activeIDs.ids[6] = MKDataDefines::RAW_ACC_Z;
00103                         activeIDs.ids[7] = MKDataDefines::MIRROR_TIME_PERIOD;
00104                         activeIDs.ids[8] = MKDataDefines::MOTOR_STATE;
00105                         activeIDs.ids[9] = MKDataDefines::TIME_MS_MOD_60S;
00106                         break;
00107                 case MKDataPattern::Stats:
00108                         activeIDs.ids[0] = MKDataDefines::RCVD_CMD_PER_SEC;
00109                         activeIDs.ids[1] = MKDataDefines::MAX_RCVD_PERIOD_MS;
00110                         activeIDs.ids[2] = MKDataDefines::SENT_PKT_PER_SEC;
00111                         activeIDs.ids[3] = MKDataDefines::MAX_SENT_PERIOD_MS;
00112                         activeIDs.ids[4] = MKDataDefines::CTRL_STEPS_PER_SEC;
00113                         activeIDs.ids[5] = MKDataDefines::MAX_FLIGHT_CTRL_PERIOD_MS;
00114                         activeIDs.ids[6] = MKDataDefines::BATT_VOLT;
00115                         activeIDs.ids[7] = MKDataDefines::MIRROR_TIME_PERIOD;
00116                         activeIDs.ids[8] = MKDataDefines::MOTOR_STATE;
00117                         activeIDs.ids[9] = MKDataDefines::TIME_MS_MOD_60S;
00118                         break;
00119                 default:
00120 
00121                         // Default Config
00122                         for (int i = 0; i < ACTIVEDATA_SIZE; i++) {
00123                                 activeIDs.ids[i] = i;
00124                         }
00125 
00126 
00127                         break;
00128         }
00129 
00130         return activeIDs;
00131 }
00132 
00133 void MKData::registerMKDataListener(MKDataListener* listener)
00134 {
00135         dataListenerSet.insert(listener);
00136 }
00137 
00138 void MKData::unRegisterMKDataListener(MKDataListener* listener)
00139 {
00140         dataListenerSet.erase(listener);
00141 }
00142 
00143 
00144 } /* namespace telekyb */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Defines


tk_mkinterface
Author(s): Martin Riedel
autogenerated on Wed Apr 24 2013 11:29:54