Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ env:
- PLATFORMIO_CI_SRC=examples/EnvironmentDisplay/EnvironmentDisplay.ino
- PLATFORMIO_CI_SRC=examples/HeartRateDisplay/HeartRateDisplay.ino
- PLATFORMIO_CI_SRC=examples/BicycleSpeedDisplay/BicycleSpeedDisplay.ino
- PLATFORMIO_CI_SRC=examples/LEVDisplay/LEVDisplay.ino

install:
- pip install -U platformio
Expand Down
210 changes: 105 additions & 105 deletions examples/LEVDisplay/LEVDisplay.ino
Original file line number Diff line number Diff line change
Expand Up @@ -47,24 +47,24 @@ void setup() {
Serial.begin(BAUD_RATE);
Serial.println("Running");

// setup lev display
// setup lev display
lev.onDataPage(levBaseDataPageHandler);
lev.onLevSpeedSystemInformation1(levSpeedSystemInformation1Handler);
lev.onLevSpeedDistanceInformation(levSpeedDistanceInformationHandler);
lev.onLevAltSpeedDistanceInformation(levAltSpeedDistanceInformationHandler);
lev.onLevSpeedSystemInformation2(levSpeedSystemInformation2Handler);
lev.onLevBatteryInfo(levBatteryInfo);
lev.onLevCapabilities(levCapabilities);
lev.onManufacturersInformation(manufacturersInformationDataPageHandler);
lev.onProductInformation(productInformationDataPageHandler);
lev.onChannelEvent(levAntChannelEvent);
lev.begin();
delay(100); // wait for module initialization
lev.onLevSpeedSystemInformation1(levSpeedSystemInformation1Handler);
lev.onLevSpeedDistanceInformation(levSpeedDistanceInformationHandler);
lev.onLevAltSpeedDistanceInformation(levAltSpeedDistanceInformationHandler);
lev.onLevSpeedSystemInformation2(levSpeedSystemInformation2Handler);
lev.onLevBatteryInfo(levBatteryInfo);
lev.onLevCapabilities(levCapabilities);
lev.onManufacturersInformation(manufacturersInformationDataPageHandler);
lev.onProductInformation(productInformationDataPageHandler);
lev.onChannelEvent(levAntChannelEvent);
lev.begin();
delay(100); // wait for module initialization

// wait for pair to complete
uint8_t status = lev.waitForPair();

// print channel status
// print channel status
Serial.println("===========================");
printStatus(status);
Serial.print("Device Number: ");
Expand All @@ -78,130 +78,130 @@ void loop() {
}

void levAntChannelEvent(ChannelEventResponse& msg, uintptr_t data) {
if (msg.getCode() == STATUS_EVENT_CHANNEL_CLOSED) {
Serial.println("channel closed - reconnect");
lev.begin();
}
if (msg.getCode() == STATUS_EVENT_CHANNEL_CLOSED) {
Serial.println("channel closed - reconnect");
lev.begin();
}
}

void levBaseDataPageHandler(AntRxDataResponse& msg, uintptr_t data) {
LevBaseMainDataPage dp = LevBaseMainDataPage(msg);
LevBaseMainDataPage dp = LevBaseMainDataPage(msg);
Serial.println("===========================");
Serial.print("DataPage: ");
Serial.println(dp.getDataPageNumber());
}

void levSpeedSystemInformation1Handler(LevSpeedSystemInformation1& msg, uintptr_t data) {
Serial.print("Temp state: ");
Serial.println(msg.getTemperatureState());
Serial.print("Travel mode state: ");
Serial.println(msg.getTravelModeState());
Serial.print("System state: ");
Serial.println(msg.getSystemState());
Serial.print("Gear state: ");
Serial.println(msg.getGearState());
Serial.print("Gear error: ");
Serial.println(msg.getError());
Serial.print("Speed: ");
Serial.print(msg.getSpeed()/10);
Serial.print(".");
Serial.println(msg.getSpeed() % 10);
Serial.print("Temp state: ");
Serial.println(msg.getTemperatureState());
Serial.print("Travel mode state: ");
Serial.println(msg.getTravelModeState());
Serial.print("System state: ");
Serial.println(msg.getSystemState());
Serial.print("Gear state: ");
Serial.println(msg.getGearState());
Serial.print("Gear error: ");
Serial.println(msg.getError());
Serial.print("Speed: ");
Serial.print(msg.getSpeed()/10);
Serial.print(".");
Serial.println(msg.getSpeed() % 10);
}

void levSpeedDistanceInformationHandler(LevSpeedDistanceInformation& msg, uintptr_t data) {
Serial.print("Total dist: ");
Serial.println((float)msg.getOdometer() / 100);
Serial.print("Remaining range: ");
Serial.println(msg.getRemainingRange());
Serial.print("Speed: ");
Serial.print(msg.getSpeed() / 10);
Serial.print(".");
Serial.println(msg.getSpeed() % 10);
Serial.print("Total dist: ");
Serial.println((float)msg.getOdometer() / 100);
Serial.print("Remaining range: ");
Serial.println(msg.getRemainingRange());
Serial.print("Speed: ");
Serial.print(msg.getSpeed() / 10);
Serial.print(".");
Serial.println(msg.getSpeed() % 10);
}

void levAltSpeedDistanceInformationHandler(LevAltSpeedDistanceInformation& msg, uintptr_t data) {
Serial.print("Total dist: ");
Serial.println((float)msg.getOdometer() / 100);
Serial.print("Fuel consumption: ");
Serial.println(msg.getFuelConsumption());
Serial.print("Speed: ");
Serial.print(msg.getSpeed() / 10);
Serial.print(".");
Serial.println(msg.getSpeed() % 10);
Serial.print("Total dist: ");
Serial.println((float)msg.getOdometer() / 100);
Serial.print("Fuel consumption: ");
Serial.println(msg.getFuelConsumption());
Serial.print("Speed: ");
Serial.print(msg.getSpeed() / 10);
Serial.print(".");
Serial.println(msg.getSpeed() % 10);
}

void levSpeedSystemInformation2Handler(LevSpeedSystemInformation2& msg, uintptr_t data) {
Serial.print("Battery SOC: ");
Serial.println(msg.getBatterySOC());
Serial.print("Travel mode state: ");
Serial.println(msg.getTravelModeState());
Serial.print("System state: ");
Serial.println(msg.getSystemState());
Serial.print("Gear state: ");
Serial.println(msg.getGearState());
Serial.print("Percent Assist: ");
Serial.println(msg.getPercentAssist());
Serial.print("Speed: ");
Serial.print(msg.getSpeed() / 10);
Serial.print(".");
Serial.println(msg.getSpeed() % 10);
Serial.print("Battery SOC: ");
Serial.println(msg.getBatterySOC());
Serial.print("Travel mode state: ");
Serial.println(msg.getTravelModeState());
Serial.print("System state: ");
Serial.println(msg.getSystemState());
Serial.print("Gear state: ");
Serial.println(msg.getGearState());
Serial.print("Percent Assist: ");
Serial.println(msg.getPercentAssist());
Serial.print("Speed: ");
Serial.print(msg.getSpeed() / 10);
Serial.print(".");
Serial.println(msg.getSpeed() % 10);
}

void levBatteryInfo(LevBatteryInfo& msg, uintptr_t data) {
Serial.print("Charging Cycle Count: ");
Serial.println(msg.getChargingCycleCount());
Serial.print("Fuel consumption: ");
Serial.println(msg.getFuelConsumption());
Serial.print("Battery voltage: ");
Serial.println(msg.getBatteryVoltage());
Serial.print("Distance on current charge: ");
Serial.println(msg.getDistanceOnCurrentCharge());
Serial.print("Charging Cycle Count: ");
Serial.println(msg.getChargingCycleCount());
Serial.print("Fuel consumption: ");
Serial.println(msg.getFuelConsumption());
Serial.print("Battery voltage: ");
Serial.println(msg.getBatteryVoltage());
Serial.print("Distance on current charge: ");
Serial.println(msg.getDistanceOnCurrentCharge());
}

void levCapabilities(LevCapabilities& msg, uintptr_t data) {
Serial.print("Travel modes supported: ");
Serial.println(msg.getTravelModesSupported());
Serial.print("Wheel circumference: ");
Serial.println(msg.getWheelCircumference());
Serial.print("Travel modes supported: ");
Serial.println(msg.getTravelModesSupported());
Serial.print("Wheel circumference: ");
Serial.println(msg.getWheelCircumference());
}

void manufacturersInformationDataPageHandler(ManufacturersInformation& msg, uintptr_t data) {
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());
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.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());
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;
}
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;
}
}

2 changes: 1 addition & 1 deletion src/Profiles/LEV/ANTPLUS_LevPrivateDefines.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#define ANTPLUS_LEVPROFILEPRIVATEDEFINES_h

/* Channel Config */
#define ANTPLUS_LEV_CHANNELTYPE CHANNEL_TYPE_BIDIRECTIONAL_RECEIVE
#define ANTPLUS_LEV_CHANNELTYPE CHANNEL_TYPE_BIDIRECTIONAL_RECEIVE
#define ANTPLUS_LEV_DEVICETYPE 20
#define ANTPLUS_LEV_CHANNELPERIOD 8192
// 30 / 2.5 = 12
Expand Down
2 changes: 1 addition & 1 deletion src/Profiles/LEV/ANTPLUS_LevProfile.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#define ANTPLUS_LEVPROFILE_h

// General Definitions
// todo
// TODO

// Datapages
#include <Profiles/Lev/DataPages/ANTPLUS_ProfileLevDataPages.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

class LevBaseMainDataPage : public BaseDataPage<BroadcastData> {
public:
LevBaseMainDataPage(AntRxDataResponse& dp);
LevBaseMainDataPage(AntRxDataResponse& dp);
uint8_t getDataPageNumber();
};

Expand Down
12 changes: 6 additions & 6 deletions src/Profiles/LEV/DataPages/RX/ANTPLUS_LevBatteryInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,26 @@
#include <Profiles/Lev/ANTPLUS_LevPrivateDefines.h>

LevBatteryInfo::LevBatteryInfo(AntRxDataResponse& dp) : LevBaseMainDataPage(dp) {
return;
return;
}

uint16_t LevBatteryInfo::getChargingCycleCount()
{
return (uint16_t)getData(2) + (((uint16_t)getData(3) & 0x0F) << 8);
return (uint16_t)getData(2) + (((uint16_t)getData(3) & 0x0F) << 8);
}

uint16_t LevBatteryInfo::getFuelConsumption()
{
uint16_t c = (uint16_t)getData(3) + (((uint16_t)getData(4) & 0x0F) << 8);
return c >> 4;
uint16_t c = (uint16_t)getData(3) + (((uint16_t)getData(4) & 0x0F) << 8);
return c >> 4;
}

uint8_t LevBatteryInfo::getBatteryVoltage()
{
return getData(5);
return getData(5);
}

uint16_t LevBatteryInfo::getDistanceOnCurrentCharge()
{
return (uint16_t)getData(6) + (((uint16_t)getData(7) & 0x0F) << 8);
return (uint16_t)getData(6) + (((uint16_t)getData(7) & 0x0F) << 8);
}
6 changes: 3 additions & 3 deletions src/Profiles/LEV/DataPages/RX/ANTPLUS_LevCapabilities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
#include <Profiles/Lev/ANTPLUS_LevPrivateDefines.h>

LevCapabilities::LevCapabilities(AntRxDataResponse& dp) : LevBaseMainDataPage(dp) {
return;
return;
}

uint8_t LevCapabilities::getTravelModesSupported()
{
return getData(2);
return getData(2);
}

uint16_t LevCapabilities::getWheelCircumference()
{
return (uint16_t)getData(3) + (((uint16_t)getData(4) & 0x0F) << 8);
return (uint16_t)getData(3) + (((uint16_t)getData(4) & 0x0F) << 8);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,37 @@

/* Speed and Distance */
LevSpeedDistanceInformation::LevSpeedDistanceInformation(AntRxDataResponse& dp) : LevBaseMainDataPage(dp) {
return;
return;
}

uint32_t LevSpeedDistanceInformation::getOdometer() { // in km
return (uint32_t)getData(1) + ((uint32_t)getData(2) << 8) + ((uint32_t)getData(3) << 16);
return (uint32_t)getData(1) + ((uint32_t)getData(2) << 8) + ((uint32_t)getData(3) << 16);
}

uint16_t LevSpeedDistanceInformation::getRemainingRange() { // in km
return (uint16_t)getData(4) + (((uint16_t)getData(5) & 0x0F) << 8);
return (uint16_t)getData(4) + (((uint16_t)getData(5) & 0x0F) << 8);
}

uint16_t LevSpeedDistanceInformation::getSpeed() { // in 1/10 km/h
return (uint16_t)getData(6) + (((uint16_t)getData(7) & 0x0F) << 8);
return (uint16_t)getData(6) + (((uint16_t)getData(7) & 0x0F) << 8);
}

/* Alt Speed and Distance */
LevAltSpeedDistanceInformation::LevAltSpeedDistanceInformation(AntRxDataResponse& dp) : LevBaseMainDataPage(dp) {
return;
return;
}

uint32_t LevAltSpeedDistanceInformation::getOdometer() // in km
{
return (uint32_t)getData(1) + ((uint32_t)getData(2) << 8) + ((uint32_t)getData(3) << 16);
return (uint32_t)getData(1) + ((uint32_t)getData(2) << 8) + ((uint32_t)getData(3) << 16);
}

uint16_t LevAltSpeedDistanceInformation::getFuelConsumption() // in Wh/km
{
return (uint16_t)getData(4) + (((uint16_t)getData(5) & 0x0F) << 8);
return (uint16_t)getData(4) + (((uint16_t)getData(5) & 0x0F) << 8);
}

uint16_t LevAltSpeedDistanceInformation::getSpeed() // in 1/10 km/h
{
return (uint16_t)getData(6) + (((uint16_t)getData(7) & 0x0F) << 8);
return (uint16_t)getData(6) + (((uint16_t)getData(7) & 0x0F) << 8);
}
Loading