Skip to content

Commit 30fdd81

Browse files
authored
Merge pull request #21 from fbiego/nav
add speed & nav icon example fix #13 fix #17 fix #20
2 parents 0d84ea2 + 07fb257 commit 30fdd81

File tree

5 files changed

+44
-3
lines changed

5 files changed

+44
-3
lines changed

examples/navigation/navigation.ino

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
ChronosESP32 watch("Chronos Nav"); // set the bluetooth name
3636

3737
bool change = false;
38+
uint32_t nav_crc = 0xFFFFFFFF;
3839

3940
void connectionCallback(bool state)
4041
{
@@ -70,13 +71,41 @@ void configCallback(Config config, uint32_t a, uint32_t b)
7071
Serial.println(nav.duration);
7172
Serial.println(nav.distance);
7273
Serial.println(nav.title);
74+
Serial.println(nav.speed);
7375
}
7476
break;
7577
case CF_NAV_ICON:
7678
Serial.print("Navigation Icon data, position: ");
7779
Serial.println(a);
7880
Serial.print("Icon CRC: ");
7981
Serial.printf("0x%04X\n", b);
82+
if (a == 2){
83+
Navigation nav = watch.getNavigation();
84+
if (nav_crc != nav.iconCRC)
85+
{
86+
nav_crc = nav.iconCRC;
87+
88+
for (int y = 0; y < 50; y++) { Serial.print("-"); } // draw top border
89+
Serial.println();
90+
91+
for (int y = 0; y < 48; y++)
92+
{
93+
Serial.print("|"); // draw left border
94+
for (int x = 0; x < 48; x++)
95+
{
96+
int byte_index = (y * 48 + x) / 8;
97+
int bit_pos = 7 - (x % 8);
98+
bool px_on = (nav.icon[byte_index] >> bit_pos) & 0x01;
99+
// example to draw a pixel on a TFT display
100+
// tft.drawPixel(x, y, px_on ? TFT_WHITE : TFT_BLACK);
101+
Serial.print(px_on ? "X" : " ");
102+
}
103+
Serial.println("|"); // draw right border
104+
}
105+
for (int y = 0; y < 50; y++) { Serial.print("-"); } // draw bottom border
106+
Serial.println();
107+
}
108+
}
80109
break;
81110
}
82111
}
@@ -114,6 +143,7 @@ void loop()
114143
// Serial.println(nav.duration);
115144
// Serial.println(nav.distance);
116145
// Serial.println(nav.title);
146+
// Serial.println(nav.speed);
117147
// }
118148
// }
119149
}

library.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ChronosESP32",
3-
"version": "1.8.0",
3+
"version": "1.8.1",
44
"keywords": "Arduino, ESP32, Time, BLE, Watch",
55
"description": "A library for ESP32 to interface with Chronos app over BLE",
66
"repository":

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=ChronosESP32
2-
version=1.8.0
2+
version=1.8.1
33
author=fbiego
44
maintainer=fbiego
55
sentence=Setup your ESP32 as a smartwatch and connect to Chronos app over BLE.

src/ChronosESP32.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1774,6 +1774,7 @@ void ChronosESP32::dataReceived()
17741774
_navigation.title = "Chronos";
17751775
_navigation.duration = "Inactive";
17761776
_navigation.distance = "";
1777+
_navigation.speed = "";
17771778
_navigation.directions = "Start navigation on Google maps";
17781779
_navigation.hasIcon = false;
17791780
_navigation.isNavigation = false;
@@ -1785,6 +1786,7 @@ void ChronosESP32::dataReceived()
17851786
_navigation.title = "Chronos";
17861787
_navigation.duration = "Disabled";
17871788
_navigation.distance = "";
1789+
_navigation.speed = "";
17881790
_navigation.eta = "Navigation";
17891791
_navigation.directions = "Check Chronos app settings";
17901792
_navigation.hasIcon = false;
@@ -1838,6 +1840,14 @@ void ChronosESP32::dataReceived()
18381840
i++;
18391841
}
18401842
i++;
1843+
1844+
_navigation.speed = "";
1845+
while (_incomingData.data[i] != 0 && i < len)
1846+
{
1847+
_navigation.speed += char(_incomingData.data[i]);
1848+
i++;
1849+
}
1850+
i++;
18411851
}
18421852
if (configurationReceivedCallback != nullptr)
18431853
{

src/ChronosESP32.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
#define CHRONOSESP_VERSION_MAJOR 1
4141
#define CHRONOSESP_VERSION_MINOR 8
42-
#define CHRONOSESP_VERSION_PATCH 0
42+
#define CHRONOSESP_VERSION_PATCH 1
4343

4444
#define CHRONOSESP_VERSION F(CHRONOSESP_VERSION_MAJOR "." CHRONOSESP_VERSION_MINOR "." CHRONOSESP_VERSION_PATCH)
4545

@@ -154,6 +154,7 @@ struct Navigation
154154
String eta; // estimated time of arrival (time,date)
155155
String title; // distance to next point or title
156156
String directions; // place info ie current street name/ instructions
157+
String speed; // speed (available via OsmAnd app)
157158
uint8_t icon[ICON_DATA_SIZE]; // navigation icon 48x48 (1bpp)
158159
uint32_t iconCRC; // to identify whether the icon has changed
159160
};

0 commit comments

Comments
 (0)