diff --git a/doc/SimpleWeatherService.md b/doc/SimpleWeatherService.md
index c510e428..36993900 100644
--- a/doc/SimpleWeatherService.md
+++ b/doc/SimpleWeatherService.md
@@ -40,8 +40,8 @@ The byte array must contain the following data:
- 4 = Clouds & rain
- 5 = Rain
- 6 = Thunderstorm
- - 7 = snow
- - 8 = mist, smog
+ - 7 = Snow
+ - 8 = Mist, smog
### Forecast
@@ -65,4 +65,4 @@ The byte array must contain the following data:
- [22] Day 3 Icon ID
- [23] Day 4 Minimum temperature
- [24] Day 4 Maximum temperature
- - [25] Day 4 Incon ID
\ No newline at end of file
+ - [25] Day 4 Icon ID
\ No newline at end of file
diff --git a/src/components/ble/SimpleWeatherService.cpp b/src/components/ble/SimpleWeatherService.cpp
index 9735f2d1..3635fdfd 100644
--- a/src/components/ble/SimpleWeatherService.cpp
+++ b/src/components/ble/SimpleWeatherService.cpp
@@ -15,24 +15,27 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
+
+#include "components/ble/SimpleWeatherService.h"
+
#include
-#include "SimpleWeatherService.h"
#include
#include
-#include
using namespace Pinetime::Controllers;
namespace {
- enum class MessageType { CurrentWeather, Forecast, Unknown };
+ enum class MessageType : uint8_t { CurrentWeather, Forecast, Unknown };
+
+ uint64_t ToUInt64(const uint8_t* data) {
+ return *(reinterpret_cast(data));
+ }
SimpleWeatherService::CurrentWeather CreateCurrentWeather(const uint8_t* dataBuffer) {
char cityName[33];
std::memcpy(&cityName[0], &dataBuffer[13], 32);
cityName[32] = '\0';
- return SimpleWeatherService::CurrentWeather {dataBuffer[2] + (dataBuffer[3] << 8) + (dataBuffer[4] << 16) + (dataBuffer[5] << 24) +
- ((uint64_t) dataBuffer[6] << 32) + ((uint64_t) dataBuffer[7] << 40) +
- ((uint64_t) dataBuffer[8] << 48) + ((uint64_t) dataBuffer[9] << 54),
+ return SimpleWeatherService::CurrentWeather {ToUInt64(&dataBuffer[2]),
dataBuffer[10],
dataBuffer[11],
dataBuffer[12],
@@ -41,9 +44,7 @@ namespace {
}
SimpleWeatherService::Forecast CreateForecast(const uint8_t* dataBuffer) {
- uint64_t timestamp = static_cast(dataBuffer[2] + (dataBuffer[3] << 8) + (dataBuffer[4] << 16) + (dataBuffer[5] << 24) +
- ((uint64_t) dataBuffer[6] << 32) + ((uint64_t) dataBuffer[7] << 40) +
- ((uint64_t) dataBuffer[8] << 48) + ((uint64_t) dataBuffer[9] << 54));
+ auto timestamp = static_cast(ToUInt64(&dataBuffer[2]));
std::array days;
const uint8_t nbDaysInBuffer = dataBuffer[10];
@@ -54,19 +55,13 @@ namespace {
return SimpleWeatherService::Forecast {timestamp, nbDays, days};
}
- MessageType GetMessageType(const uint8_t* dataBuffer) {
- switch (dataBuffer[0]) {
- case 0:
- return MessageType::CurrentWeather;
- break;
- case 1:
- return MessageType::Forecast;
- break;
- default:
+ MessageType GetMessageType(const uint8_t* data) {
+ auto messageType = static_cast(*data);
+ if(messageType > MessageType::Unknown) {
return MessageType::Unknown;
- break;
+ }
+ return messageType;
}
- }
uint8_t GetVersion(const uint8_t* dataBuffer) {
return dataBuffer[1];
@@ -154,7 +149,3 @@ bool SimpleWeatherService::CurrentWeather::operator==(const SimpleWeatherService
return this->iconId == other.iconId && this->temperature == other.temperature && this->timestamp == other.timestamp &&
this->maxTemperature == other.maxTemperature && this->minTemperature == other.maxTemperature;
}
-
-bool SimpleWeatherService::CurrentWeather::operator!=(const SimpleWeatherService::CurrentWeather& other) const {
- return !operator==(other);
-}
diff --git a/src/components/ble/SimpleWeatherService.h b/src/components/ble/SimpleWeatherService.h
index a1625464..890497d7 100644
--- a/src/components/ble/SimpleWeatherService.h
+++ b/src/components/ble/SimpleWeatherService.h
@@ -85,7 +85,6 @@ namespace Pinetime {
char location[33]; // 32 char + \0 (end of string)
bool operator==(const CurrentWeather& other) const;
- bool operator!=(const CurrentWeather& other) const;
};
struct Forecast {
diff --git a/src/displayapp/fonts/fonts.json b/src/displayapp/fonts/fonts.json
index 8416fc5e..48d382d0 100644
--- a/src/displayapp/fonts/fonts.json
+++ b/src/displayapp/fonts/fonts.json
@@ -68,7 +68,7 @@
"sources": [
{
"file": "FontAwesome5-Solid+Brands+Regular.woff",
- "range": "0xf185, 0xf6c4, 0xf743, 0xf740, 0xf75f, 0xf0c2, 0xf05e"
+ "range": "0xf185, 0xf6c4, 0xf743, 0xf740, 0xf75f, 0xf0c2, 0xf05e, 0xf73b, 0xf0e7, 0xf2dc"
}
],
"bpp": 1,
diff --git a/src/displayapp/screens/StopWatch.cpp b/src/displayapp/screens/StopWatch.cpp
index bdb3fde6..f0359da4 100644
--- a/src/displayapp/screens/StopWatch.cpp
+++ b/src/displayapp/screens/StopWatch.cpp
@@ -5,8 +5,6 @@
using namespace Pinetime::Applications::Screens;
-constexpr int Pinetime::Applications::Screens::StopWatch::maxLapCount;
-
namespace {
TimeSeparated_t convertTicksToTimeSegments(const TickType_t timeElapsed) {
// Centiseconds
diff --git a/src/displayapp/screens/Symbols.h b/src/displayapp/screens/Symbols.h
index 7154ff44..a6f1494a 100644
--- a/src/displayapp/screens/Symbols.h
+++ b/src/displayapp/screens/Symbols.h
@@ -45,6 +45,9 @@ namespace Pinetime {
static constexpr const char* cloudShowersHeavy = "\xEF\x9D\x80";
static constexpr const char* smog = "\xEF\x9D\x9F";
static constexpr const char* cloud = "\xEF\x83\x82";
+ static constexpr const char* cloud_meatball = "\xEF\x9C\xBB";
+ static constexpr const char* bolt = "\xEF\x83\xA7";
+ static constexpr const char* snowflake = "\xEF\x8B\x9C";
static constexpr const char* ban = "\xEF\x81\x9E";
// lv_font_sys_48.c
diff --git a/src/displayapp/screens/WatchFacePineTimeStyle.cpp b/src/displayapp/screens/WatchFacePineTimeStyle.cpp
index baa2e184..d11114d6 100644
--- a/src/displayapp/screens/WatchFacePineTimeStyle.cpp
+++ b/src/displayapp/screens/WatchFacePineTimeStyle.cpp
@@ -55,14 +55,14 @@ namespace {
return Symbols::cloud;
break;
case Pinetime::Controllers::SimpleWeatherService::Icons::BrokenClouds:
- return Symbols::cloud;
- break; // TODO missing symbol
+ return Symbols::cloud_meatball;
+ break;
case Pinetime::Controllers::SimpleWeatherService::Icons::Thunderstorm:
- return Symbols::cloud;
- break; // TODO missing symbol
+ return Symbols::bolt;
+ break;
case Pinetime::Controllers::SimpleWeatherService::Icons::Snow:
- return Symbols::cloud;
- break; // TODO missing symbol
+ return Symbols::snowflake;
+ break;
case Pinetime::Controllers::SimpleWeatherService::Icons::CloudShowerHeavy:
return Symbols::cloudShowersHeavy;
break;