Updated to libmDot 1.0.8-1

Dependencies:   DOGS102 GpsParser ISL29011 MMA845x MPL3115A2 MTS-Serial NCP5623B libmDot mbed-rtos mbed

Fork of MTDOT-BOX-EVB-Factory-Firmware by MultiTech

Committer:
jreiss
Date:
Wed Jul 13 19:14:04 2016 +0000
Revision:
6:ab581c4260e7
Parent:
1:71125aa00e33
Use DR enum values instead of SF values

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mike Fiore 1:71125aa00e33 1 /* Copyright (c) <2016> <MultiTech Systems>, MIT License
Mike Fiore 1:71125aa00e33 2 *
Mike Fiore 1:71125aa00e33 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
Mike Fiore 1:71125aa00e33 4 * and associated documentation files (the "Software"), to deal in the Software without restriction,
Mike Fiore 1:71125aa00e33 5 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
Mike Fiore 1:71125aa00e33 6 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
Mike Fiore 1:71125aa00e33 7 * furnished to do so, subject to the following conditions:
Mike Fiore 1:71125aa00e33 8 *
Mike Fiore 1:71125aa00e33 9 * The above copyright notice and this permission notice shall be included in all copies or
Mike Fiore 1:71125aa00e33 10 * substantial portions of the Software.
Mike Fiore 1:71125aa00e33 11 *
Mike Fiore 1:71125aa00e33 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
Mike Fiore 1:71125aa00e33 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Mike Fiore 1:71125aa00e33 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
Mike Fiore 1:71125aa00e33 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Mike Fiore 1:71125aa00e33 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Mike Fiore 1:71125aa00e33 17 */
Mike Fiore 1:71125aa00e33 18
Mike Fiore 1:71125aa00e33 19 #include "LayoutSurveySuccess.h"
Mike Fiore 1:71125aa00e33 20 #include "MTSLog.h"
Mike Fiore 1:71125aa00e33 21
Mike Fiore 1:71125aa00e33 22 LayoutSurveySuccess::LayoutSurveySuccess(DOGS102* lcd)
Mike Fiore 1:71125aa00e33 23 : Layout(lcd),
Mike Fiore 1:71125aa00e33 24 _lId(0, 0, "ID"),
Mike Fiore 1:71125aa00e33 25 _lDr(8, 0, "DR"),
Mike Fiore 1:71125aa00e33 26 _lPwr(13, 0, "P"),
Mike Fiore 1:71125aa00e33 27 _lUp(0, 1, "UP Margin"),
Mike Fiore 1:71125aa00e33 28 _lDown(0, 2, "DWN"),
Mike Fiore 1:71125aa00e33 29 _fId(2, 0, 5),
Mike Fiore 1:71125aa00e33 30 _fDr(10, 0, 2),
Mike Fiore 1:71125aa00e33 31 _fPwr(14, 0, 2),
Mike Fiore 1:71125aa00e33 32 _fUpMargin(10, 1, 5),
Mike Fiore 1:71125aa00e33 33 _fDownRssi(4, 2, 7),
Mike Fiore 1:71125aa00e33 34 _fDownSnr(12, 2, 5),
Mike Fiore 1:71125aa00e33 35 _fGpsLat(0, 4, 17),
Mike Fiore 1:71125aa00e33 36 _fGpsLon(0, 3, 17),
Mike Fiore 1:71125aa00e33 37 _fGpsTime(0, 5, 17),
Mike Fiore 1:71125aa00e33 38 _fInfo(0, 6, 17),
Mike Fiore 1:71125aa00e33 39 _fSw1(9, 7, 8),
Mike Fiore 1:71125aa00e33 40 _fSw2(0, 7, 8)
Mike Fiore 1:71125aa00e33 41 {}
Mike Fiore 1:71125aa00e33 42
Mike Fiore 1:71125aa00e33 43 LayoutSurveySuccess::~LayoutSurveySuccess() {}
Mike Fiore 1:71125aa00e33 44
Mike Fiore 1:71125aa00e33 45 void LayoutSurveySuccess::display() {
Mike Fiore 1:71125aa00e33 46 clear();
Mike Fiore 1:71125aa00e33 47 startUpdate();
Mike Fiore 1:71125aa00e33 48
Mike Fiore 1:71125aa00e33 49 writeLabel(_lId);
Mike Fiore 1:71125aa00e33 50 writeLabel(_lDr);
Mike Fiore 1:71125aa00e33 51 writeLabel(_lPwr);
Mike Fiore 1:71125aa00e33 52 writeLabel(_lUp);
Mike Fiore 1:71125aa00e33 53 writeLabel(_lDown);
Mike Fiore 1:71125aa00e33 54
Mike Fiore 1:71125aa00e33 55 endUpdate();
Mike Fiore 1:71125aa00e33 56 }
Mike Fiore 1:71125aa00e33 57
Mike Fiore 1:71125aa00e33 58 void LayoutSurveySuccess::updateId(uint32_t id) {
Mike Fiore 1:71125aa00e33 59 char buf[16];
Mike Fiore 1:71125aa00e33 60 size_t size;
Mike Fiore 1:71125aa00e33 61
Mike Fiore 1:71125aa00e33 62 size = snprintf(buf, sizeof(buf), "%lu", id);
Mike Fiore 1:71125aa00e33 63 writeField(_fId, buf, size, true);
Mike Fiore 1:71125aa00e33 64 }
Mike Fiore 1:71125aa00e33 65
Mike Fiore 1:71125aa00e33 66 void LayoutSurveySuccess::updateRate(std::string rate) {
Mike Fiore 1:71125aa00e33 67 writeField(_fDr, rate, true);
Mike Fiore 1:71125aa00e33 68 }
Mike Fiore 1:71125aa00e33 69
Mike Fiore 1:71125aa00e33 70 void LayoutSurveySuccess::updatePower(uint32_t power) {
Mike Fiore 1:71125aa00e33 71 char buf[16];
Mike Fiore 1:71125aa00e33 72 size_t size;
Mike Fiore 1:71125aa00e33 73
Mike Fiore 1:71125aa00e33 74 size = snprintf(buf, sizeof(buf), "%lu", power);
Mike Fiore 1:71125aa00e33 75 writeField(_fPwr, buf, size, true);
Mike Fiore 1:71125aa00e33 76 }
Mike Fiore 1:71125aa00e33 77
Mike Fiore 1:71125aa00e33 78 void LayoutSurveySuccess::updateStats(LoRaHandler::LoRaLink link) {
Mike Fiore 1:71125aa00e33 79 char buf[16];
Mike Fiore 1:71125aa00e33 80 size_t size;
Mike Fiore 1:71125aa00e33 81
Mike Fiore 1:71125aa00e33 82 startUpdate();
Mike Fiore 1:71125aa00e33 83
Mike Fiore 1:71125aa00e33 84 size = snprintf(buf, sizeof(buf), "%d", link.up.dBm);
Mike Fiore 1:71125aa00e33 85 writeField(_fUpMargin, buf, size);
Mike Fiore 1:71125aa00e33 86
Mike Fiore 1:71125aa00e33 87 memset(buf, 0, sizeof(buf));
Mike Fiore 1:71125aa00e33 88 size = snprintf(buf, sizeof(buf), "%3d dbm", link.down.rssi);
Mike Fiore 1:71125aa00e33 89 writeField(_fDownRssi, buf, size);
Mike Fiore 1:71125aa00e33 90
Mike Fiore 1:71125aa00e33 91 memset(buf, 0, sizeof(buf));
Mike Fiore 1:71125aa00e33 92 size = snprintf(buf, sizeof(buf), "%2.1f", (float)link.down.snr / 10.0);
Mike Fiore 1:71125aa00e33 93 writeField(_fDownSnr, buf, size);
Mike Fiore 1:71125aa00e33 94
Mike Fiore 1:71125aa00e33 95 endUpdate();
Mike Fiore 1:71125aa00e33 96 }
Mike Fiore 1:71125aa00e33 97
Mike Fiore 1:71125aa00e33 98 void LayoutSurveySuccess::updateGpsLatitude(GPSPARSER::latitude lat) {
Mike Fiore 1:71125aa00e33 99 char buf[32];
Mike Fiore 1:71125aa00e33 100 size_t size;
Mike Fiore 1:71125aa00e33 101
Mike Fiore 1:71125aa00e33 102 size = snprintf(buf, sizeof(buf), "%d %d %d.%03d %c",
Mike Fiore 1:71125aa00e33 103 abs(lat.degrees),
Mike Fiore 1:71125aa00e33 104 lat.minutes,
Mike Fiore 1:71125aa00e33 105 (lat.seconds * 6) / 1000,
Mike Fiore 1:71125aa00e33 106 (lat.seconds * 6) % 1000,
Mike Fiore 1:71125aa00e33 107 (lat.degrees > 0) ? 'N' : 'S');
Mike Fiore 1:71125aa00e33 108 writeField(_fGpsLat, buf, size, true);
Mike Fiore 1:71125aa00e33 109 }
Mike Fiore 1:71125aa00e33 110
Mike Fiore 1:71125aa00e33 111 void LayoutSurveySuccess::updateGpsLatitude(std::string msg) {
Mike Fiore 1:71125aa00e33 112 writeField(_fGpsLat, msg, true);
Mike Fiore 1:71125aa00e33 113 }
Mike Fiore 1:71125aa00e33 114
Mike Fiore 1:71125aa00e33 115 void LayoutSurveySuccess::updateGpsLongitude(GPSPARSER::longitude lon) {
Mike Fiore 1:71125aa00e33 116 char buf[32];
Mike Fiore 1:71125aa00e33 117 size_t size;
Mike Fiore 1:71125aa00e33 118
Mike Fiore 1:71125aa00e33 119 size = snprintf(buf, sizeof(buf), "%d %d %d.%03d %c",
Mike Fiore 1:71125aa00e33 120 abs(lon.degrees),
Mike Fiore 1:71125aa00e33 121 lon.minutes,
Mike Fiore 1:71125aa00e33 122 (lon.seconds * 6) / 1000,
Mike Fiore 1:71125aa00e33 123 (lon.seconds * 6) % 1000,
Mike Fiore 1:71125aa00e33 124 (lon.degrees > 0) ? 'E' : 'W');
Mike Fiore 1:71125aa00e33 125 writeField(_fGpsLon, buf, size, true);
Mike Fiore 1:71125aa00e33 126 }
Mike Fiore 1:71125aa00e33 127
Mike Fiore 1:71125aa00e33 128 void LayoutSurveySuccess::updateGpsTime(struct tm time) {
Mike Fiore 1:71125aa00e33 129 char buf[32];
Mike Fiore 1:71125aa00e33 130 size_t size;
Mike Fiore 1:71125aa00e33 131
Mike Fiore 1:71125aa00e33 132 size = snprintf(buf, sizeof(buf), "%02d:%02d %02d/%02d/%04d",
Mike Fiore 1:71125aa00e33 133 time.tm_hour,
Mike Fiore 1:71125aa00e33 134 time.tm_min,
Mike Fiore 1:71125aa00e33 135 time.tm_mon + 1,
Mike Fiore 1:71125aa00e33 136 time.tm_mday,
Mike Fiore 1:71125aa00e33 137 time.tm_year + 1900);
Mike Fiore 1:71125aa00e33 138 writeField(_fGpsTime, buf, size, true);
Mike Fiore 1:71125aa00e33 139 }
Mike Fiore 1:71125aa00e33 140
Mike Fiore 1:71125aa00e33 141 void LayoutSurveySuccess::updateInfo(std::string info) {
Mike Fiore 1:71125aa00e33 142 writeField(_fInfo, info, true);
Mike Fiore 1:71125aa00e33 143 }
Mike Fiore 1:71125aa00e33 144
Mike Fiore 1:71125aa00e33 145 void LayoutSurveySuccess::updateSw1(std::string sw1) {
Mike Fiore 1:71125aa00e33 146 writeField(_fSw1, sw1, true);
Mike Fiore 1:71125aa00e33 147 }
Mike Fiore 1:71125aa00e33 148
Mike Fiore 1:71125aa00e33 149 void LayoutSurveySuccess::updateSw2(std::string sw2) {
Mike Fiore 1:71125aa00e33 150 writeField(_fSw2, sw2, true);
Mike Fiore 1:71125aa00e33 151 }
Mike Fiore 1:71125aa00e33 152
Mike Fiore 1:71125aa00e33 153 void LayoutSurveySuccess::updateCountdown(uint32_t seconds) {
Mike Fiore 1:71125aa00e33 154 char buf[32];
Mike Fiore 1:71125aa00e33 155 size_t size;
Mike Fiore 1:71125aa00e33 156
Mike Fiore 1:71125aa00e33 157 // make sure the string version is used
Mike Fiore 1:71125aa00e33 158 writeField(_fInfo, string("No Free Channel"), true);
Mike Fiore 1:71125aa00e33 159 size = snprintf(buf, sizeof(buf), "%lu s", seconds);
Mike Fiore 1:71125aa00e33 160 writeField(_fSw2, buf, size, true);
Mike Fiore 1:71125aa00e33 161 }
Mike Fiore 1:71125aa00e33 162
Mike Fiore 1:71125aa00e33 163 void LayoutSurveySuccess::updatePassFail(uint8_t pass, uint8_t fail) {
Mike Fiore 1:71125aa00e33 164 char buf[32];
Mike Fiore 1:71125aa00e33 165 size_t size;
Mike Fiore 1:71125aa00e33 166
Mike Fiore 1:71125aa00e33 167 size = snprintf(buf, sizeof(buf), "Pass %u Fail %u", pass, fail);
Mike Fiore 1:71125aa00e33 168 writeField(_fGpsTime, buf, size, true);
Mike Fiore 1:71125aa00e33 169 }
Mike Fiore 1:71125aa00e33 170