Skip to content

Commit 60b39c4

Browse files
committed
Merge branch 'profiles/environment/display' into develop
2 parents 2dcef36 + 1990a64 commit 60b39c4

16 files changed

+470
-2
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ cache:
3434
- "~/.platformio"
3535

3636
env:
37-
# - PLATFORMIO_CI_SRC=examples/HeartRateSensor/HeartRateSensor.ino
37+
- PLATFORMIO_CI_SRC=examples/EnvironmentDisplay/EnvironmentDisplay.ino
3838
- PLATFORMIO_CI_SRC=examples/HeartRateDisplay/HeartRateDisplay.ino
3939

4040
install:
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
/***********************************
2+
* AntPlus Environment Display example
3+
*
4+
* Finds a nearby environment monitor, pairs
5+
* to it and then reads the information
6+
* out via the serial port.
7+
*
8+
* Author Curtis Malainey
9+
************************************/
10+
#include <Arduino.h>
11+
#include "ANT.h"
12+
#include "ANTPLUS.h"
13+
14+
#define BAUD_RATE 9600
15+
#define CHANNEL_0 0
16+
17+
const uint8_t NETWORK_KEY[] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77}; // get this from thisisant.com
18+
19+
AntWithCallbacks ant = AntWithCallbacks();
20+
AntPlusRouter router = AntPlusRouter();
21+
ProfileEnvironmentDisplay env = ProfileEnvironmentDisplay();
22+
23+
void generalInformationDataPageHandler(EnvironmentGeneralInformation& msg, uintptr_t data);
24+
void temperatureDataPageHandler(EnvironmentTemperature& msg, uintptr_t data);
25+
void manufacturersInformationDataPageHandler(ManufacturersInformation& msg, uintptr_t data);
26+
void productInformationDataPageHandler(ProductInformation& msg, uintptr_t data);
27+
28+
void printStatus(uint8_t status);
29+
30+
void setup() {
31+
Serial1.begin(BAUD_RATE);
32+
ant.setSerial(Serial1);
33+
delay(15000);
34+
35+
router.setDriver(&ant); // never touch ant again
36+
router.setAntPlusNetworkKey(NETWORK_KEY);
37+
router.setProfile(CHANNEL_0, &env);
38+
// Delay after initial setup to wait for user to connect on serial
39+
40+
Serial.begin(BAUD_RATE);
41+
Serial.println("Running");
42+
env.onEnvironmentGeneralInformation(generalInformationDataPageHandler);
43+
env.onEnvironmentTemperature(temperatureDataPageHandler);
44+
env.onManufacturersInformation(manufacturersInformationDataPageHandler);
45+
env.onProductInformation(productInformationDataPageHandler);
46+
env.begin();
47+
// wait for pair to complete
48+
uint8_t status = env.waitForPair();
49+
// print channel status
50+
Serial.println("===========================");
51+
printStatus(status);
52+
Serial.print("Device Number: ");
53+
Serial.println(env.getDeviceNumber());
54+
Serial.print("Transmisison Type: ");
55+
Serial.println(env.getTransmissionType());
56+
}
57+
58+
void loop() {
59+
router.loop();
60+
}
61+
62+
void generalInformationDataPageHandler(EnvironmentGeneralInformation& msg, uintptr_t data) {
63+
Serial.println("===========================");
64+
Serial.print("Local Time: ");
65+
Serial.println(msg.getTransmissionInfoLocalTime());
66+
Serial.print("UTC Time: ");
67+
Serial.println(msg.getTransmissionInfoUtcTime());
68+
Serial.print("Default Transmisison Rate: ");
69+
if (msg.getTransmissionInfoDefaultTransmissionRate() == 0) {
70+
Serial.println("0.5Hz");
71+
} else if (msg.getTransmissionInfoDefaultTransmissionRate() == 1) {
72+
Serial.println("4Hz");
73+
} else {
74+
Serial.println("Unknown");
75+
}
76+
Serial.println("Supported Pages: ");
77+
if (msg.getSupportedPages() & ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_PAGE0SUPPORT) {
78+
Serial.println("Page 0 Supported");
79+
}
80+
if (msg.getSupportedPages() & ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_PAGE1SUPPORT) {
81+
Serial.println("Page 1 Supported");
82+
}
83+
}
84+
85+
void temperatureDataPageHandler(EnvironmentTemperature& msg, uintptr_t data) {
86+
Serial.println("===========================");
87+
Serial.print("Event Count: ");
88+
Serial.println(msg.getEventCount());
89+
Serial.print("24h Low (C): ");
90+
Serial.println(msg.get24HourLow()*0.1);
91+
Serial.print("24h High (C): ");
92+
Serial.println(msg.get24HourHigh()*0.1);
93+
Serial.print("Current Temp (C): ");
94+
Serial.println(msg.getCurrentTemp()*0.01);
95+
}
96+
97+
void manufacturersInformationDataPageHandler(ManufacturersInformation& msg, uintptr_t data) {
98+
Serial.println("===========================");
99+
Serial.print("HW Revision: ");
100+
Serial.println(msg.getHWRevision());
101+
Serial.print("ManufacturerID: ");
102+
Serial.println(msg.getManufacturerID());
103+
Serial.print("Model Number: ");
104+
Serial.println(msg.getModelNumber());
105+
}
106+
107+
void productInformationDataPageHandler(ProductInformation& msg, uintptr_t data) {
108+
Serial.println("===========================");
109+
Serial.print("SW Revision Supplemental: ");
110+
Serial.println(msg.getSWRevisionSupplemental());
111+
Serial.print("SW Revision Main: ");
112+
Serial.println(msg.getSWRevisionMain());
113+
Serial.print("Serial Number: ");
114+
Serial.println(msg.getSerialNumber());
115+
}
116+
117+
void printStatus(uint8_t status) {
118+
Serial.print("Channel Status: ");
119+
switch (status) {
120+
case CHANNEL_STATUS_UNASSIGNED:
121+
Serial.println("Unassigned");
122+
break;
123+
case CHANNEL_STATUS_ASSIGNED:
124+
Serial.println("Assigned");
125+
break;
126+
case CHANNEL_STATUS_SEARCHING:
127+
Serial.println("Searching");
128+
break;
129+
case CHANNEL_STATUS_TRACKING:
130+
Serial.println("Tracking");
131+
break;
132+
}
133+
}

src/Profiles/ANTPLUS_Profiles.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22
#define ANTPLUS_PROFILES_h
33

44
#include <Profiles/HeartRate/ANTPLUS_HeartRateProfile.h>
5+
#include <Profiles/Environment/ANTPLUS_EnvironmentProfile.h>
56

6-
#endif // ANTPLUS_ANTROUTER_h
7+
#endif // ANTPLUS_ANTROUTER_h
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#ifndef ANTPLUS_ENVIRONMENTPROFILEDEFINES_h
2+
#define ANTPLUS_ENVIRONMENTPROFILEDEFINES_h
3+
4+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_PAGE0SUPPORT 1
5+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_PAGE1SUPPORT 2
6+
7+
#endif // ANTPLUS_ENVIRONMENTPROFILEDEFINES_h
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#ifndef ANTPLUS_ENVIRONMENTPROFILEPRIVATEDEFINES_h
2+
#define ANTPLUS_ENVIRONMENTPROFILEPRIVATEDEFINES_h
3+
4+
/* Channel Config */
5+
#define ANTPLUS_ENVIRONMENT_CHANNELTYPE CHANNEL_TYPE_BIDIRECTIONAL_RECEIVE
6+
#define ANTPLUS_ENVIRONMENT_DEVICETYPE 25
7+
#define ANTPLUS_ENVIRONMENT_CHANNELPERIOD 8192
8+
// 45 / 2.5 = 18
9+
#define ANTPLUS_ENVIRONMENT_SEARCHTIMEOUT 18
10+
11+
/* Base DataPage */
12+
#define ANTPLUS_ENVIRONMENT_DATAPAGEBASE_DATAPAGE_BYTE 0
13+
14+
/* General Information DataPage */
15+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_NUMBER 0
16+
17+
/* Transmission Info */
18+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_BYTE 3
19+
20+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_LOCALTIME_MASK 0x30
21+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_UTCTIME_MASK 0x0C
22+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_DEFAULTTRANSMISSIONRATE_MASK 0x03
23+
24+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_LOCALTIME_SHIFT 4
25+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_UTCTIME_SHIFT 2
26+
27+
/* Supported Pages */
28+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_LSB_BYTE 4
29+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_LMID_BYTE 5
30+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_MMID_BYTE 6
31+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_MSB_BYTE 7
32+
33+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_LMID_SHIFT 8
34+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_MMID_SHIFT 16
35+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_MSB_SHIFT 24
36+
37+
/* Temperature DataPage */
38+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_NUMBER 1
39+
40+
/* Event Count */
41+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_EVENTCOUNT_BYTE 2
42+
43+
/* 24 Hour Low */
44+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_24HOURLOW_MSB_BYTE 2
45+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_24HOURLOW_LSB_BYTE 3
46+
47+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_24HOURLOW_MSB_MASK 0xF0
48+
49+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_24HOURLOW_MSB_SHIFT 4
50+
51+
/* 24 Hour High */
52+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_24HOURHIGH_LSB_BYTE 4
53+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_24HOURHIGH_MSB_BYTE 5
54+
55+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_24HOURHIGH_LSB_MASK 0x0F
56+
57+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_24HOURHIGH_MSB_SHIFT 4
58+
59+
/* Current Temp */
60+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_CURRENTTEMP_LSB_BYTE 6
61+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_CURRENTTEMP_MSB_BYTE 7
62+
63+
#define ANTPLUS_ENVIRONMENT_DATAPAGE_TEMPERATURE_CURRENTTEMP_MSB_SHIFT 8
64+
65+
#endif // ANTPLUS_ENVIRONMENTPROFILEPRIVATEDEFINES_h
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#ifndef ANTPLUS_ENVIRONMENTPROFILE_h
2+
#define ANTPLUS_ENVIRONMENTPROFILE_h
3+
4+
// General Definitions
5+
#include <Profiles/Environment/ANTPLUS_EnvironmentDefines.h>
6+
7+
// Datapages
8+
#include <Profiles/Environment/DataPages/ANTPLUS_ProfileEnvironmentDataPages.h>
9+
10+
// Profile Classes
11+
#include <Profiles/Environment/Display/ANTPLUS_ProfileEnvironmentDisplay.h>
12+
#include <Profiles/Environment/Monitor/ANTPLUS_ProfileEnvironmentMonitor.h>
13+
14+
#endif // ANTPLUS_ENVIRONMENTPROFILE_h
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#ifndef ANTPLUS_PROFILEENVIRONMENTDATAPAGES_h
2+
#define ANTPLUS_PROFILEENVIRONMENTDATAPAGES_h
3+
4+
/* RX */
5+
#include <Profiles/Environment/DataPages/RX/ANTPLUS_EnvironmentGeneralInformation.h>
6+
#include <Profiles/Environment/DataPages/RX/ANTPLUS_EnvironmentTemperature.h>
7+
8+
/* TX */
9+
10+
#endif // ANTPLUS_PROFILEENVIRONMENTDATAPAGES_h
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#include <Profiles/Environment/DataPages/Base/ANTPLUS_EnvironmentBaseDataPage.h>
2+
#include <Profiles/Environment/ANTPLUS_EnvironmentPrivateDefines.h>
3+
4+
EnvironmentBaseDataPage::EnvironmentBaseDataPage(AntRxDataResponse& dp) : BaseDataPage<BroadcastData>(dp) {
5+
6+
}
7+
8+
uint8_t EnvironmentBaseDataPage::getDataPageNumber() {
9+
return getData(ANTPLUS_ENVIRONMENT_DATAPAGEBASE_DATAPAGE_BYTE);
10+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#ifndef ANTPLUS_ENVIRONMENTBASEMAINDATAPAGE_h
2+
#define ANTPLUS_ENVIRONMENTBASEMAINDATAPAGE_h
3+
4+
#include <BaseClasses/ANTPLUS_BaseDataPage.h>
5+
6+
#include "ANT.h"
7+
8+
class EnvironmentBaseDataPage : public BaseDataPage<BroadcastData> {
9+
public:
10+
EnvironmentBaseDataPage(AntRxDataResponse& dp);
11+
uint8_t getDataPageNumber();
12+
};
13+
14+
#endif // ANTPLUS_ENVIRONMENTBASEMAINDATAPAGE_h
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#include <Profiles/Environment/DataPages/RX/ANTPLUS_EnvironmentGeneralInformation.h>
2+
#include <Profiles/Environment/ANTPLUS_EnvironmentPrivateDefines.h>
3+
4+
EnvironmentGeneralInformation::EnvironmentGeneralInformation(AntRxDataResponse& dp) : EnvironmentBaseDataPage(dp) {
5+
}
6+
7+
uint8_t EnvironmentGeneralInformation::getTransmissionInfoLocalTime() {
8+
return (getData(ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_BYTE) & ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_LOCALTIME_MASK) << ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_LOCALTIME_SHIFT;
9+
}
10+
11+
uint8_t EnvironmentGeneralInformation::getTransmissionInfoUtcTime() {
12+
return (getData(ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_BYTE) & ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_UTCTIME_MASK) << ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_UTCTIME_SHIFT;
13+
}
14+
15+
uint8_t EnvironmentGeneralInformation::getTransmissionInfoDefaultTransmissionRate() {
16+
return getData(ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_BYTE) & ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_TRANSMISSIONINFO_DEFAULTTRANSMISSIONRATE_MASK;
17+
}
18+
19+
uint32_t EnvironmentGeneralInformation::getSupportedPages() {
20+
uint32_t pages = getData(ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_LSB_BYTE);
21+
pages |= getData(ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_LMID_BYTE) << ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_LMID_SHIFT;
22+
pages |= getData(ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_MMID_BYTE) << ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_MMID_SHIFT;
23+
pages |= getData(ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_MSB_BYTE) << ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_MSB_SHIFT;
24+
return pages;
25+
}

0 commit comments

Comments
 (0)