From cd6cb915123c31e29bcee18f227f612bf197b78f Mon Sep 17 00:00:00 2001 From: lm Date: Fri, 7 May 2010 18:27:43 +0200 Subject: [PATCH] Added PNGs for mac icon, moved UAS timestamps to microseconds instead of milliseconds --- images/icons/macx_128x128x32.png | Bin 0 -> 27200 bytes images/icons/macx_16x16x1.png | Bin 0 -> 121 bytes images/icons/macx_16x16x32.png | Bin 0 -> 761 bytes images/icons/macx_32x32x1.png | Bin 0 -> 179 bytes images/icons/macx_32x32x32.png | Bin 0 -> 2331 bytes images/icons/macx_48x48x1.png | Bin 0 -> 255 bytes images/icons/macx_48x48x32.png | Bin 0 -> 4683 bytes src/comm/MAVLinkProtocol.cc | 15 ++++++++++++--- src/comm/MAVLinkProtocol.h | 2 ++ src/uas/UAS.cc | 10 +++++----- src/ui/uas/UASInfoWidget.cc | 2 +- 11 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 images/icons/macx_128x128x32.png create mode 100644 images/icons/macx_16x16x1.png create mode 100644 images/icons/macx_16x16x32.png create mode 100644 images/icons/macx_32x32x1.png create mode 100644 images/icons/macx_32x32x32.png create mode 100644 images/icons/macx_48x48x1.png create mode 100644 images/icons/macx_48x48x32.png diff --git a/images/icons/macx_128x128x32.png b/images/icons/macx_128x128x32.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc381c8d040aa2f1442c2140c241563405d9841 GIT binary patch literal 27200 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 T8XEx(u`9IOn zue8NP$f!f*>HuJ*LF?_p$?=MM4o2=P1>a??6LJ-ssDA1Y+V}{=R1M}wV*V-qP1fvZf`(v%|+h?t__p;gcSzfPK35SDM!lB@n z1>!8WpLWlxt*!M4d}t-2h}&kO9Ub{zr1Cw8#*<(%QQ%jYW?!?@>6B%WFU32$kes}Q z#NsE6uKvP_XJz6akvMx3ZRswkqEKSmJ?5I4nt&>aWhpxZ|K$%bmdbG6C?Y-e%0d%y zW2pq+{CmimL1>CtW}Y4YfpFNr9P7w{n|p)0!Z$P&KBMY-5vPalV|3^q@$XjbU||E? z>}#0m4ES((nY>jtdtIHRh+;(>yAAQqPaH0MLDRK$I0@e2$M6k5f{VC&VFUG)`jSFAl7=D6!f|EFld1yaWSV!Z`TUZ{q zd(y^vJex+U3xVlX9J#Ot;o?igr=O#9<^{T^meD=^6dB?Piixvp@DmRZk0d+6c|AoN z=kskEtue@*1BmrcAUiOQzTT4k=`DR^!4IsK96KF0Zo-HO^CF5MElc%-ENm;S*nOa z3qpd7C{>fo<)Er6+EXc{(`l%hhFmraJ!+ChgV4f5R-{UGb#;q%jm^!?%Z467Fc^f{ zmV_uPkR%BvmC2we3K>+&r4S$u)B4F{UE|I}5(J^lT9L@Csv2|>>AJoP7Gt@Hra&a^ z-w(-J)QT(!e91HoM5sUA(040f2WT2q5H*;&#I*mKCl9r;qAK!sG^$$$lkIevswmqm r$29+)O8SDraU2`rEe6I}Y(MR99sNnbh1V#+00000NkvXXu0mjfO1)?7 literal 0 HcmV?d00001 diff --git a/images/icons/macx_32x32x1.png b/images/icons/macx_32x32x1.png new file mode 100644 index 0000000000000000000000000000000000000000..97836fcad0ff65f0da0a09b90de52985276d3805 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJDo+>3kcif|*AMa?P~cz=`2T&7g)f2K026CwU;b-KYueji$atj}W z=s(vCh6@jE7cp%4u#PK$!Kk5*ms{bZgeSub?oO75eN(*FJQb3kJXxT8-}MQtEzjMg em1mq;!~S#sr4p~lo#H@OFnGH9xvX_mVN+#oo$D@#UcDwzS@QTd;44jvjS79tKKk9NhM^mX3(y2INAs>PsCp<0(Yz_w$ zlAG&*$AM_bOM_?}dEIXJXgOs?#}5M6>2xhNo9#|gPML@x;8qX}M^Ik57&R~LM`YVE z9Q@rN`i`GKYR892Z`=b@)e`uFA^2Q&%0y{Q67<>~(e+f|Wo2bqhr{t8lSv`scf%J7 zL*K9+>yBT7WzSW#{_-D49=d_wUb~B(C;y4YqqmTH_XbjjZld+wvnsDI5Jbr9L{()9 zE~o23adC0>Nl(7nQ~Bft#4~-gPwo{5qU(UWWbkVT1>+z`}Lt z?Mo={8^-Ei--LJHRn#8&J8Jh2!jM=1pHoqFdA(kgl$31#KI|Xq_4;t z4%*HODC$0sA}XG`>k1AfSCW=<{S}IPhWTz7IvP;;%9nVq;~aFoBh>K~jP+S~J#JK{ zldxK?w*~8Q@F{f9;Yc{lEce5lX+PeL ze?aLQe?g&u^CTrb-zqPnaxD$B{Nx1IHt)jP1v_EqTGKl+!82y$Fmkt@M&6FIn6di` z(y#p<4v!y#!OFNRm=7gh@jx^ZK_uXXX~9-z^=-8N;yMcG%A)QO)e{dZ*LPn)LHj$H z($s^gP2JG89Y6{9^po%vy?Po;j(v@)!#7dRPy|_3u~-Df#iaw|`1$2V~q1eY5=;| z8T(fmyDlnV848v5T}Bxdm8v8m7-4CihHlAT6fNBkE!Pr)GQJZYgYflTo{-n|U1Bv| zfcB?fqip#;1bt3Km~(4`4N^c z=|?+h&GNl?nY8+?KVrwGy?CMHeXQMcl6(8Gn)_|Sx2Rv05m{Bo?vqIOpTL~Gr{G=F z&z|5wjO8fU-x}a&a?~`VdBp}K7jMSA6C^feb+56$9!nOsU~$VrEaGo-QzPchosDob29qnS>b96o2(sKKLcmPS zde|o8u`m=e*cAm9rw>)FYfxKLjdVJ#GRtMcW`)|iTC9D39o8>hik`Nm=q0UhYs0z? z8&FeIqw+{nN9p2BCPRa3QA=-FJW<%G-%JC>Jnn;F=S-bCHEuDRN96)i6dR3Dpx7O- z#^%XTArp?Ol%tmluzvk|)u0HcqBa__j3nzAY2(I?m^*haLCmU*-C^gj;)EqK2Udqi z-Lu-vkQqZtU$E6i#NK=@ole2yb}|fB)ew_22&>&GZ4(xY8P(O*DnL9Q7h%Yi-NcXx zjeAGlZQ8U6GiT1Ej762T@-RkMgojepJ*Shy3NIyt!7$c{m#aI9uG3bG|)Onb^A|w6YXfWR4$)E1S?gMfd{AWm zAHa`4`Rw1R+=7A*8gz!r3b`Q5TL(k$HPn+_aaEHJA;zs2ZY(}LdXN-G|l za{T%syvXGbU!YoD>kC$gj)$JR$0x9+&i~F-WcYin3ts`qdkmhgelF{r5}E*+ CqF|E% literal 0 HcmV?d00001 diff --git a/images/icons/macx_48x48x32.png b/images/icons/macx_48x48x32.png new file mode 100644 index 0000000000000000000000000000000000000000..07399ed5bc008593ee43b238e58e8a0c3adfbbb7 GIT binary patch literal 4683 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/heartbeatRate); totalReceiveCounter = 0; totalLossCounter = 0; + currReceiveCounter = 0; + currLossCounter = 0; for (int i = 0; i < 256; i++) { for (int j = 0; j < 256; j++) @@ -131,6 +133,7 @@ void MAVLinkProtocol::receiveBytes(LinkInterface* link) } // Increase receive counter totalReceiveCounter++; + currReceiveCounter++; qint64 lastLoss = totalLossCounter; // Update last packet index if (lastIndex[message.sysid][message.compid] == -1) @@ -150,7 +153,7 @@ void MAVLinkProtocol::receiveBytes(LinkInterface* link) int safeguard = 0; //qDebug() << "SYSID" << message.sysid << "COMPID" << message.compid << "MSGID" << message.msgid << "LASTINDEX" << lastIndex[message.sysid][message.compid] << "SEQ" << message.seq; - while(lastIndex[message.sysid][message.compid] != message.seq && safeguard < 1) + while(lastIndex[message.sysid][message.compid] != message.seq && safeguard < 255) { if (lastIndex[message.sysid][message.compid] == 255) { @@ -161,6 +164,7 @@ void MAVLinkProtocol::receiveBytes(LinkInterface* link) lastIndex[message.sysid][message.compid]++; } totalLossCounter++; + currLossCounter++; safeguard++; } } @@ -171,12 +175,17 @@ void MAVLinkProtocol::receiveBytes(LinkInterface* link) // while (lastCompIndex->value(message.compid, 0)+1 ) // } //if () - if (lastLoss != totalLossCounter || (totalReceiveCounter / 64) == 0) + + // If a new loss was detected or we just hit one 128th packet step + if (lastLoss != totalLossCounter || (totalReceiveCounter & 0b1111111) == 0) { // Calculate new loss ratio // Receive loss - float receiveLoss = (double)totalLossCounter/(double)(totalReceiveCounter+totalLossCounter); + float receiveLoss = (double)currLossCounter/(double)(currReceiveCounter+currLossCounter); receiveLoss *= 100.0f; + // qDebug() << "LOSSCHANGED" << receiveLoss; + currLossCounter = 0; + currReceiveCounter = 0; emit receiveLossChanged(receiveLoss); } diff --git a/src/comm/MAVLinkProtocol.h b/src/comm/MAVLinkProtocol.h index 5995c3b50..05ba5f7e1 100644 --- a/src/comm/MAVLinkProtocol.h +++ b/src/comm/MAVLinkProtocol.h @@ -90,6 +90,8 @@ protected: int lastIndex[256][256]; int totalReceiveCounter; int totalLossCounter; + int currReceiveCounter; + int currLossCounter; signals: /** @brief Message received and directly copied via signal */ diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc index 9e12210e6..653dc418b 100644 --- a/src/uas/UAS.cc +++ b/src/uas/UAS.cc @@ -225,15 +225,15 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) { mavlink_aux_status_t status; mavlink_msg_aux_status_decode(&message, &status); - emit loadChanged(this, status.load/100.0f); - emit valueChanged(this, "Load", status.load/1000.0f, MG::TIME::getGroundTimeNow()); + emit loadChanged(this, status.load/10.0f); + emit valueChanged(this, "Load", ((float)status.load)/1000.0f, MG::TIME::getGroundTimeNow()); } break; case MAVLINK_MSG_ID_RAW_IMU: { mavlink_raw_imu_t raw; mavlink_msg_raw_imu_decode(&message, &raw); - quint64 time = raw.msec; + quint64 time = raw.msec/1000; if (time == 0) { time = MG::TIME::getGroundTimeNow(); @@ -285,7 +285,7 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) { mavlink_attitude_t attitude; mavlink_msg_attitude_decode(&message, &attitude); - quint64 time = mavlink_msg_attitude_get_msec(&message); + quint64 time = mavlink_msg_attitude_get_msec(&message)/1000; if (time == 0) { time = MG::TIME::getGroundTimeNow(); @@ -316,7 +316,7 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) { mavlink_position_t pos; mavlink_msg_position_decode(&message, &pos); - quint64 time = pos.msec; + quint64 time = pos.msec/1000; if (time == 0) { time = MG::TIME::getGroundTimeNow(); diff --git a/src/ui/uas/UASInfoWidget.cc b/src/ui/uas/UASInfoWidget.cc index d33c9acd9..d1e348f03 100644 --- a/src/ui/uas/UASInfoWidget.cc +++ b/src/ui/uas/UASInfoWidget.cc @@ -113,7 +113,7 @@ void UASInfoWidget::updateCPULoad(UASInterface* uas, double load) { if (activeUAS == uas) { - this->load = load*100.0f; + this->load = load; } } -- 2.22.0