waypointList.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002  * @Brief     Functional class for waypoint. Mav-free and ROS-free singleton
00003  * @Version   0.3.0
00004  * @Author    Chris Liu
00005  * @Created   2015/11/18
00006  * @Modified  2015/11/25
00007  *****************************************************************************/
00008 
00009 #ifndef _DJI2MAV_WAYPOINTLIST_H_
00010 #define _DJI2MAV_WAYPOINTLIST_H_
00011 
00012 
00013 #include "dji_sdk_dji2mav/log.h"
00014 
00015 namespace dji2mav {
00016 
00017     class WaypointList {
00018         public:
00019             WaypointList() {
00020                 m_listSize = 0;
00021                 m_targetIdx = -1;
00022             }
00023 
00024 
00025             ~WaypointList() {
00026             }
00027 
00028 
00029             inline const float ( *getWaypointList() )[7] {
00030                 return m_wpList;
00031             }
00032 
00033 
00034             inline uint16_t getListSize() {
00035                 return m_listSize;
00036             }
00037 
00038 
00039             inline void setListSize(const uint16_t size) {
00040                 m_listSize = size;
00041             }
00042 
00043 
00044             inline uint16_t getTargetIdx() {
00045                 return m_targetIdx;
00046             }
00047 
00048 
00049             inline void setTargetIdx(uint16_t targetIdx) {
00050                 m_targetIdx = targetIdx;
00051             }
00052 
00053 
00054             inline void readyToUpload() {
00055                 m_targetIdx = 0;
00056             }
00057 
00058 
00059             inline void readyToDownload() {
00060                 m_targetIdx = 0;
00061             }
00062 
00063 
00064             inline void finishUpload() {
00065                 if(m_targetIdx != m_listSize) {
00066                     DJI2MAV_ERROR("Uploaded waypoint list size %u doesn't " 
00067                             "matched the one %u that is set while init!", 
00068                              m_targetIdx, m_listSize);
00069                 }
00070                 m_targetIdx = -1;
00071             }
00072 
00073 
00074             inline bool isDownloadFinished() {
00075                 if(m_targetIdx == m_listSize) {
00076                     m_targetIdx = -1;
00077                     return true;
00078                 } else {
00079                     return false;
00080                 }
00081             }
00082 
00083 
00084             inline bool isValidIdx(uint16_t idx) {
00085                 return (idx < m_listSize);
00086             }
00087 
00088 
00089             void getWaypointData(uint16_t idx, uint16_t &cmd,
00090                     float &param1, float &param2, float &param3, 
00091                     float &param4, float &lat, float &lon, float &alt) {
00092 
00093                 cmd = m_cmd[idx];
00094                 param1 = m_wpList[idx][0];
00095                 param2 = m_wpList[idx][1];
00096                 param3 = m_wpList[idx][2];
00097                 param4 = m_wpList[idx][3];
00098                 lat = m_wpList[idx][4];
00099                 lon = m_wpList[idx][5];
00100                 alt = m_wpList[idx][6];
00101 
00102                 ++m_targetIdx;
00103 
00104             }
00105 
00106 
00107             void setWaypointData(uint16_t idx, uint16_t cmd, float param1, 
00108                     float param2, float &param3, float param4, float lat, 
00109                     float lon, float alt) {
00110 
00111                 m_cmd[idx] = cmd;
00112                 m_wpList[idx][0] = param1;
00113                 m_wpList[idx][1] = param2;
00114                 m_wpList[idx][2] = param3;
00115                 m_wpList[idx][3] = param4;
00116                 m_wpList[idx][4] = lat;
00117                 m_wpList[idx][5] = lon;
00118                 m_wpList[idx][6] = alt;
00119 
00120                 ++m_targetIdx;
00121 
00122             }
00123 
00124 
00125             inline uint16_t getWaypointCmd(uint16_t idx) {
00126                 return m_cmd[idx];
00127             }
00128 
00129 
00130             inline void setWaypointCmd(uint16_t idx, uint16_t cmd) {
00131                 m_cmd[idx] = cmd;
00132             }
00133 
00134 
00135             inline float getWaypointParam1(uint16_t idx) {
00136                 return m_wpList[idx][0];
00137             }
00138 
00139 
00140             inline void setWaypointParam1(uint16_t idx, float param1) {
00141                 m_wpList[idx][0] = param1;
00142             }
00143 
00144 
00145             inline float getWaypointParam2(uint16_t idx) {
00146                 return m_wpList[idx][1];
00147             }
00148 
00149 
00150             inline void setWaypointParam2(uint16_t idx, float param2) {
00151                 m_wpList[idx][1] = param2;
00152             }
00153 
00154 
00155             inline float getWaypointParam3(uint16_t idx) {
00156                 return m_wpList[idx][2];
00157             }
00158 
00159 
00160             inline void setWaypointParam3(uint16_t idx, float param3) {
00161                 m_wpList[idx][2] = param3;
00162             }
00163 
00164 
00165             inline float getWaypointParam4(uint16_t idx) {
00166                 return m_wpList[idx][3];
00167             }
00168 
00169 
00170             inline void setWaypointParam4(uint16_t idx, float param4) {
00171                 m_wpList[idx][3] = param4;
00172             }
00173 
00174 
00175             inline float getWaypointLat(uint16_t idx) {
00176                 return m_wpList[idx][4];
00177             }
00178 
00179 
00180             inline void setWaypointLat(uint16_t idx, float lat) {
00181                 m_wpList[idx][4] = lat;
00182             }
00183 
00184 
00185             inline float getWaypointLon(uint16_t idx) {
00186                 return m_wpList[idx][5];
00187             }
00188 
00189 
00190             inline void setWaypointLon(uint16_t idx, float lon) {
00191                 m_wpList[idx][5] = lon;
00192             }
00193 
00194 
00195             inline float getWaypointAlt(uint16_t idx) {
00196                 return m_wpList[idx][5];
00197             }
00198 
00199 
00200             inline void setWaypointAlt(uint16_t idx, float alt) {
00201                 m_wpList[idx][5] = alt;
00202             }
00203 
00204 
00205             inline float getWpHeading(uint16_t idx) {
00206                 return getWaypointParam4(idx);
00207             }
00208 
00209 
00210             inline void setWpHeading(uint16_t idx, float heading) {
00211                 setWpHeading(idx, heading);
00212             }
00213 
00214 
00215             inline float getWpStaytime(uint16_t idx) {
00216                 return getWaypointParam1(idx);
00217             }
00218 
00219 
00220             inline void setWpStaytime(uint16_t idx, float staytime) {
00221                 setWaypointParam1(idx, staytime);
00222             }
00223 
00224 
00225             bool clearMission() {
00226                 m_listSize = 0;
00227                 m_targetIdx = -1;
00228             }
00229 
00230 
00231             void displayMission() {
00232                 DJI2MAV_INFO("Display the full waypoint mission:");
00233                 for(uint16_t i = 0; i < m_listSize; ++i) {
00234                     DJI2MAV_INFO("Index %d: param1 %f, param2 %f, param3 %f, "
00235                             "param4 %f, lat %f, lon %f, alt %f", i, 
00236                             m_wpList[i][0], m_wpList[i][1], m_wpList[i][2], 
00237                             m_wpList[i][3], m_wpList[i][4], m_wpList[i][5], 
00238                             m_wpList[i][6]);
00239                 }
00240                 DJI2MAV_INFO("--- End of display ---");
00241             }
00242 
00243 
00244         private:
00245             float m_wpList[100][7];
00246             uint16_t m_cmd[100];
00247             uint16_t m_listSize;
00248             int m_targetIdx;
00249 
00250     };
00251 
00252 } //namespace dji2mav
00253 
00254 
00255 #endif


dji_sdk_dji2mav
Author(s):
autogenerated on Thu Jun 6 2019 17:55:35