-
Notifications
You must be signed in to change notification settings - Fork 24
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
62 changed files
with
1,529 additions
and
255 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
|
@@ -3,5 +3,8 @@ | ||
.ycm* | .ycm* | ||
*.swp | *.swp | ||
|
|
||
# used for testing | |||
src/main.cpp | |||
.DS_Store | .DS_Store | ||
.tags* | .tags* | ||
tags |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,169 @@ | |||
/*********************************** | |||
* AntPlus Bicycle Speed Display example | |||
* | |||
* Finds a nearby Bike Speed Sensor, pairs | |||
* to it and then reads the information | |||
* out via the serial port. | |||
* | |||
* Author Curtis Malainey | |||
************************************/ | |||
#include <Arduino.h> | |||
#include "ANT.h" | |||
#include "ANTPLUS.h" | |||
|
|||
#define BAUD_RATE 9600 | |||
#define CHANNEL_0 0 | |||
|
|||
const uint8_t NETWORK_KEY[] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77}; // get this from thisisant.com | |||
|
|||
AntWithCallbacks ant = AntWithCallbacks(); | |||
AntPlusRouter router = AntPlusRouter(); | |||
ProfileBicycleSpeedDisplay bikeSpeed = ProfileBicycleSpeedDisplay(); | |||
|
|||
void bicycleSpeedBaseDataPageHandler(AntRxDataResponse& msg, uintptr_t data); | |||
void batteryStatusDataPageHandler(BicycleSpeedBatteryStatus& msg, uintptr_t data); | |||
void motionAndSpeedDataPageHandler(BicycleSpeedMotionAndSpeed& msg, uintptr_t data); | |||
void cumulativeOperatingTimeDataPageHandler(BicycleSpeedCumulativeOperatingTime& msg, uintptr_t data); | |||
void defaultDataPageHandler(BicycleSpeedDefault& msg, uintptr_t data); | |||
void manufacturerIDDataPageHandler(BicycleSpeedManufacturerID& msg, uintptr_t data); | |||
void productIDDataPageHandler(BicycleSpeedProductID& msg, uintptr_t data); | |||
|
|||
void bicycleSpeedFlags(uint8_t flags); | |||
void bicycleSpeedBatteryStatus(uint8_t flags); | |||
void printStatus(uint8_t status); | |||
|
|||
void setup() { | |||
Serial1.begin(BAUD_RATE); | |||
ant.setSerial(Serial1); | |||
delay(15000); | |||
|
|||
router.setDriver(&ant); // never touch ant again | |||
router.setAntPlusNetworkKey(NETWORK_KEY); | |||
router.setProfile(CHANNEL_0, &bikeSpeed); | |||
// Delay after initial setup to wait for user to connect on serial | |||
|
|||
Serial.begin(BAUD_RATE); | |||
Serial.println("Running"); | |||
bikeSpeed.onDataPage(bicycleSpeedBaseDataPageHandler); | |||
bikeSpeed.onBicycleSpeedBatteryStatus(batteryStatusDataPageHandler); | |||
bikeSpeed.onBicycleSpeedMotionAndSpeed(motionAndSpeedDataPageHandler); | |||
bikeSpeed.onBicycleSpeedCumulativeOperatingTime(cumulativeOperatingTimeDataPageHandler); | |||
bikeSpeed.onBicycleSpeedDefault(defaultDataPageHandler); | |||
bikeSpeed.onBicycleSpeedManufacturerID(manufacturerIDDataPageHandler); | |||
bikeSpeed.onBicycleSpeedProductID(productIDDataPageHandler); | |||
bikeSpeed.begin(); | |||
// wait for pair to complete | |||
uint8_t status = bikeSpeed.waitForPair(); | |||
// print channel status | |||
Serial.println("==========================="); | |||
printStatus(status); | |||
Serial.print("Device Number: "); | |||
Serial.println(bikeSpeed.getDeviceNumber()); | |||
Serial.print("Transmisison Type: "); | |||
Serial.println(bikeSpeed.getTransmissionType()); | |||
} | |||
|
|||
void loop() { | |||
router.loop(); | |||
} | |||
|
|||
void batteryStatusDataPageHandler(BicycleSpeedBatteryStatus& msg, uintptr_t data) { | |||
Serial.print("Fractional Battery Voltage: "); | |||
Serial.println(msg.getFractionalBatteryVoltage()); | |||
Serial.print("Coarse Battery Voltage: "); | |||
Serial.println(msg.getCoarseBatteryVoltage()); | |||
Serial.print("Battery Status: "); | |||
bicycleSpeedBatteryStatus(msg.getBatteryStatus()); | |||
} | |||
|
|||
void motionAndSpeedDataPageHandler(BicycleSpeedMotionAndSpeed& msg, uintptr_t data) { | |||
Serial.print("Flags: "); | |||
bicycleSpeedFlags(msg.getFlags()); | |||
} | |||
|
|||
void cumulativeOperatingTimeDataPageHandler(BicycleSpeedCumulativeOperatingTime& msg, uintptr_t data) { | |||
Serial.print("Cumulative Operating Time: "); | |||
Serial.println(msg.getCumulativeOperatingTime()); | |||
} | |||
|
|||
void defaultDataPageHandler(BicycleSpeedDefault& msg, uintptr_t data) { | |||
// All fields are reserved | |||
} | |||
|
|||
void manufacturerIDDataPageHandler(BicycleSpeedManufacturerID& msg, uintptr_t data) { | |||
Serial.print("Manufacturer ID LSB: "); | |||
Serial.println(msg.getManufacturerId()); | |||
Serial.print("Serial Number: "); | |||
Serial.println(msg.getSerialNumber()); | |||
} | |||
|
|||
void productIDDataPageHandler(BicycleSpeedProductID& msg, uintptr_t data) { | |||
Serial.print("Hardware Version: "); | |||
Serial.println(msg.getHardwareVersion()); | |||
Serial.print("Software Version: "); | |||
Serial.println(msg.getSoftwareVersion()); | |||
Serial.print("Model Number: "); | |||
Serial.println(msg.getModelNumber()); | |||
} | |||
|
|||
void bicycleSpeedBaseDataPageHandler(AntRxDataResponse& msg, uintptr_t data) { | |||
BicycleSpeedBaseMainDataPage dp = BicycleSpeedBaseMainDataPage(msg); | |||
Serial.println("==========================="); | |||
Serial.print("DataPage: "); | |||
Serial.println(dp.getDataPageNumber()); | |||
Serial.print("Bike Speed Event Time: "); | |||
Serial.println(dp.getBikeSpeedEventTime()); | |||
Serial.print("Cumulative Speed Revolution Count: "); | |||
Serial.println(dp.getCumulativeSpeedRevolutionCount()); | |||
} | |||
|
|||
void printStatus(uint8_t status) { | |||
Serial.print("Channel Status: "); | |||
switch (status) { | |||
case CHANNEL_STATUS_UNASSIGNED: | |||
Serial.println("Unassigned"); | |||
break; | |||
case CHANNEL_STATUS_ASSIGNED: | |||
Serial.println("Assigned"); | |||
break; | |||
case CHANNEL_STATUS_SEARCHING: | |||
Serial.println("Searching"); | |||
break; | |||
case CHANNEL_STATUS_TRACKING: | |||
Serial.println("Tracking"); | |||
break; | |||
} | |||
} | |||
|
|||
void bicycleSpeedFlags(uint8_t flags) { | |||
if (flags & ANTPLUS_BICYCLESPEED_DATAPAGE_MOTIONANDSPEED_FLAGS_STOPINDICATOR) { | |||
Serial.print("Motion Stopped"); | |||
} | |||
Serial.println(); | |||
} | |||
|
|||
void bicycleSpeedBatteryStatus(uint8_t flags) { | |||
switch (flags) { | |||
case ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERSTATUS_BATTERYSTATUS_NEW: | |||
Serial.println("New"); | |||
break; | |||
case ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERSTATUS_BATTERYSTATUS_GOOD: | |||
Serial.println("Good"); | |||
break; | |||
case ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERSTATUS_BATTERYSTATUS_OK: | |||
Serial.println("Ok"); | |||
break; | |||
case ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERSTATUS_BATTERYSTATUS_LOW: | |||
Serial.println("Low"); | |||
break; | |||
case ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERSTATUS_BATTERYSTATUS_CRITICAL: | |||
Serial.println("Critical"); | |||
break; | |||
case ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERSTATUS_BATTERYSTATUS_INVALID: | |||
Serial.println("Invalid"); | |||
break; | |||
default: | |||
Serial.println("Reserved/Unknown"); | |||
break; | |||
} | |||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,141 @@ | |||
/*********************************** | |||
* AntPlus Environment Display example | |||
* | |||
* Finds a nearby environment monitor, pairs | |||
* to it and then reads the information | |||
* out via the serial port. | |||
* | |||
* Author Curtis Malainey | |||
************************************/ | |||
#include <Arduino.h> | |||
#include "ANT.h" | |||
#include "ANTPLUS.h" | |||
|
|||
#define BAUD_RATE 9600 | |||
#define CHANNEL_0 0 | |||
|
|||
const uint8_t NETWORK_KEY[] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77}; // get this from thisisant.com | |||
|
|||
AntWithCallbacks ant = AntWithCallbacks(); | |||
AntPlusRouter router = AntPlusRouter(); | |||
ProfileEnvironmentDisplay env = ProfileEnvironmentDisplay(); | |||
|
|||
void generalInformationDataPageHandler(EnvironmentGeneralInformation& msg, uintptr_t data); | |||
void temperatureDataPageHandler(EnvironmentTemperature& msg, uintptr_t data); | |||
void manufacturersInformationDataPageHandler(ManufacturersInformation& msg, uintptr_t data); | |||
void productInformationDataPageHandler(ProductInformation& msg, uintptr_t data); | |||
|
|||
void printStatus(uint8_t status); | |||
|
|||
void setup() { | |||
Serial1.begin(BAUD_RATE); | |||
ant.setSerial(Serial1); | |||
delay(15000); | |||
|
|||
router.setDriver(&ant); // never touch ant again | |||
router.setAntPlusNetworkKey(NETWORK_KEY); | |||
router.setProfile(CHANNEL_0, &env); | |||
// Delay after initial setup to wait for user to connect on serial | |||
|
|||
Serial.begin(BAUD_RATE); | |||
Serial.println("Running"); | |||
env.onEnvironmentGeneralInformation(generalInformationDataPageHandler); | |||
env.onEnvironmentTemperature(temperatureDataPageHandler); | |||
env.onManufacturersInformation(manufacturersInformationDataPageHandler); | |||
env.onProductInformation(productInformationDataPageHandler); | |||
env.begin(); | |||
// wait for pair to complete | |||
uint8_t status = env.waitForPair(); | |||
// print channel status | |||
Serial.println("==========================="); | |||
printStatus(status); | |||
Serial.print("Device Number: "); | |||
Serial.println(env.getDeviceNumber()); | |||
Serial.print("Transmisison Type: "); | |||
Serial.println(env.getTransmissionType()); | |||
} | |||
|
|||
void loop() { | |||
router.loop(); | |||
} | |||
|
|||
void generalInformationDataPageHandler(EnvironmentGeneralInformation& msg, uintptr_t data) { | |||
Serial.println("==========================="); | |||
Serial.print("DataPage: "); | |||
Serial.println(msg.getDataPageNumber()); | |||
Serial.print("Local Time: "); | |||
Serial.println(msg.getTransmissionInfoLocalTime()); | |||
Serial.print("UTC Time: "); | |||
Serial.println(msg.getTransmissionInfoUtcTime()); | |||
Serial.print("Default Transmisison Rate: "); | |||
if (msg.getTransmissionInfoDefaultTransmissionRate() == 0) { | |||
Serial.println("0.5Hz"); | |||
} else if (msg.getTransmissionInfoDefaultTransmissionRate() == 1) { | |||
Serial.println("4Hz"); | |||
} else { | |||
Serial.println("Unknown"); | |||
} | |||
Serial.println("Supported Pages: "); | |||
if (msg.getSupportedPages() & ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_PAGE0SUPPORT) { | |||
Serial.println("Page 0 Supported"); | |||
} | |||
if (msg.getSupportedPages() & ANTPLUS_ENVIRONMENT_DATAPAGE_GENERALINFORMATION_SUPPORTEDPAGES_PAGE1SUPPORT) { | |||
Serial.println("Page 1 Supported"); | |||
} | |||
} | |||
|
|||
void temperatureDataPageHandler(EnvironmentTemperature& msg, uintptr_t data) { | |||
Serial.println("==========================="); | |||
Serial.print("DataPage: "); | |||
Serial.println(msg.getDataPageNumber()); | |||
Serial.print("Event Count: "); | |||
Serial.println(msg.getEventCount()); | |||
Serial.print("24h Low (C): "); | |||
Serial.println(msg.get24HourLow()*0.1); | |||
Serial.print("24h High (C): "); | |||
Serial.println(msg.get24HourHigh()*0.1); | |||
Serial.print("Current Temp (C): "); | |||
Serial.println(msg.getCurrentTemp()*0.01); | |||
} | |||
|
|||
void manufacturersInformationDataPageHandler(ManufacturersInformation& msg, uintptr_t data) { | |||
Serial.println("==========================="); | |||
Serial.print("DataPage: "); | |||
Serial.println(msg.getDataPageNumber()); | |||
Serial.print("HW Revision: "); | |||
Serial.println(msg.getHWRevision()); | |||
Serial.print("ManufacturerID: "); | |||
Serial.println(msg.getManufacturerID()); | |||
Serial.print("Model Number: "); | |||
Serial.println(msg.getModelNumber()); | |||
} | |||
|
|||
void productInformationDataPageHandler(ProductInformation& msg, uintptr_t data) { | |||
Serial.println("==========================="); | |||
Serial.print("DataPage: "); | |||
Serial.println(msg.getDataPageNumber()); | |||
Serial.print("SW Revision Supplemental: "); | |||
Serial.println(msg.getSWRevisionSupplemental()); | |||
Serial.print("SW Revision Main: "); | |||
Serial.println(msg.getSWRevisionMain()); | |||
Serial.print("Serial Number: "); | |||
Serial.println(msg.getSerialNumber()); | |||
} | |||
|
|||
void printStatus(uint8_t status) { | |||
Serial.print("Channel Status: "); | |||
switch (status) { | |||
case CHANNEL_STATUS_UNASSIGNED: | |||
Serial.println("Unassigned"); | |||
break; | |||
case CHANNEL_STATUS_ASSIGNED: | |||
Serial.println("Assigned"); | |||
break; | |||
case CHANNEL_STATUS_SEARCHING: | |||
Serial.println("Searching"); | |||
break; | |||
case CHANNEL_STATUS_TRACKING: | |||
Serial.println("Tracking"); | |||
break; | |||
} | |||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.